Серия [статей] по разработке расширения Joomla 3.0: настраиваем сцену
Некоторое время я сомневался в необходимости этой первой статьи в серии по разработке некоторого расширения и в конце решил, что все же это в самом деле необходимый материал. Важно удостовериться в том, что Вы строите надлежащий фундамент и в написании какого-либо компонента для Joomla 3.0 существует несколько аспектов, которые необходимо планировать с того самого первого дня. Эта статья - первая из серии статей о разработке расширения, которая не может быть полной без отведения времени на обсуждение начальных шагов, входящих в правильное планирование и структуризацию данного расширения. Вот шаги, которые я нашел как самые эффективные для начала успешного расширения Joomla.
- Автор: Давид Хюрли (David Hurley) 1
- Переводчик: Александр Смирнов (Alex Smirnov)
Нулевой шаг: приготовьте кофе
Я пишу данный параграф полушутя, но в том, что этот шаг является действительно наполовину важным имеется некоторый смысл. Перед началом любой работы важно приготовить полную чашку какого-бы то ни было напитка, помогающего Вам лучше всего оставаться бодрым и сосредоточенным. Вырабатывая какую-либо привычку, Вы помогаете своему телу и своему мозгу обретать какую-либо привычку, которая готовит Вас к предстоящей работе. Начиная писать код, очень важно удостовериться, что Вы начеку, бодры и ясно в любое время мыслите не только о следующей строчке кода, который Вы пишете, но [и] о полной картине [целиком]. Как только Вы устроились с напитком на свой вкус, настало время начинать.
Первый шаг: начните с какого-либо блокнота с желтыми страницами и любой ручки
Почти все наши проекты начинаются с блокнота с желтыми страницами. Вы возможно предпочтете бумагу другого цвета, - это целиком дело Вашего выбора. Я рекомендую желтую по ряду причин, но он определенно совсем не обязателен. Я также рекомендую ручку вместо карандаша. [Написанное] карандашами имеет тенденцию размазываться, идеи - теряться, строчки - расплываться и дело здесь не в том, чтобы написать совершенный план, а в том, чтобы плодотворно помыслить, небрежно построчить и просто набросать идеи на бумагу. Довольно часто в конце это [выглядит] не очень приятно. Использование какой-либо ручки помогает Вам [именно] думать; иначе карандаш приведет Вас к стиранию, переписыванию и другим "ни в коем случае" [процесса] набрасывания [Ваших] мыслей [на бумагу].
Второй шаг: определите свои нужды, целевой рынок и [какие] проблемы решать
Хорошо. Так что теперь Вы должны сидеть со своим горячим напитком, блокнотом и ручкой и готовы приступить к следующему шагу. Начинайте записывать свои идеи. Начните с той самой проблемы, которую Вы желаете решить, почему Вы пишите данное расширение, на каких ключевых мыслях Вы будете фокусироваться и что Ваше расширение [должно] делать по-Вашему. Также важно в этом момент провести немного исследования. Существует ли уже такой компонент? Реализовал ли уже кто-либо подобный продукт, который может быть рассмотрен как соперник Вашему? Насколько велик размер рынка для этого компонента, который Вы стремитесь написать? Это важно принять к размышлению и существует несколько предостережений, к которым я хочу привлечь Ваше внимание.
Во-первых, не пытайтесь написать компонент "Lord of the Rings" ([т.е.] один компонент управляющий ими всеми и связывающий их всех), [но вместо этого] определите центральную проблему, которую Вы желаете решить и затем - фокусирование, фокусирование и фокусирование. Таким образом Вам будет гораздо легче жить и Ваш маркетинг будет гораздо плавнее. Во-вторых, удостоверьтесь в том, что Ваш целевой рынок [уже] существует. Не предполагайте, что если Ваш компонент нужен Вам, то он также будет нужен и всем остальным. Будьте реалистом в своих ожиданиях и Вы будете более уверенным по мере своего прогресса.
Третий шаг: напишите общее течение своего приложения/расширения
Как только Вы набросали на бумагу свои идеи, свой целевой рынок и проблемы, которые Вы желаете решить, следующим шагом является написать общее течение своего компонента. Наиболее чем вероятно что это [уже] проделано в то же время, когда Вы занимались предыдущим шагом и даже в то время, как Вы набрасываете свои идеи, - чем больше Вы набрасываете свои мысли, тем легче Вам будет начать этот процесс выделения [основных моментов] рабочего течения [Вашего будущего компонента]. Запишите [какие] контроллеры, модели и виды Вам [будут] нужны. Теперь - подобающее время отступить в сторону и обсудить первую важную часть разработки компонента [системы] Joomla! 3.0 - архитектуру "Модель-Вид-Контроллер" ["Model-View-Controller"] и [систему] Joomla!.
Joomla применяет довольно стандартную структуру "MVC", однако она имеет тенденцию слегка отличаться от фреймворка, используемого другими платформами.
[Система] Joomla 3.0 рассматривает каждое задание как некоторый контроллер. Это означает, что у Вас наиболее вероятно будут контроллеры под названиями "save", "add", "edit", "delete" и так далее. Каждый контроллер исполняет одно и только одно задание. Сначала может показаться, что у Вас имеется слишком большое число файлов, но в конечном итоге это предоставляет интуитивное течение через данный компонент и также помогает в предоставлении связывания нескольких команд вместе (я обращусь к этому более подробно, когда позже в этой серии мы начнем писать файлы нашего контроллера).
Данная модель в [системе] Joomla работает с фактическим манипулированием данных. Это то, где Вы хотите [хранить] всю свою логику и код. Модели обычно создаются для представления ключевых единиц или объектов Вашего компонента (таких как категории, объекты и так далее). Внутри моделей у Вас имеется несколько функций, относящихся к тому конкретному объекту (например, перечислить, получить, сохранить и так далее).
В заключение у Вас имеются Ваши файлы вида [view]. Joomla объединяет в одно целое некоторую стандартную методологию [того], как эти виды конструируются и, опять же, мы взглянем на это более подробно позже в этой серии [статей]. В данный момент достаточно сказать, что виды обычно похожи по структуре на модели с несколькими видами, относящимися к каждому ключевому юниту или объекту Вашего компонента.
Это должно представить [Вам] краткий (хотя, возможно, [и] упрощенный) обзор MVC-структуры [системы] Joomla и, надеюсь, достаточно [для того,] чтобы отложить [у] Вас идею как теперь Вам следует писать общее течение своего компонента и [как] начать следующий шаг.
Четвертый шаг: организуйте структуры данных и схемы таблиц
В то время, как существует много подходов к первому шагу самой разработки какого-либо расширения, мы нашли этот следующий шаг - как самый логичный и интуитивный для применения. Как только мы записали всю [обсужденную] выше информацию и выяснили ключевые части нашего компонента и общее [его] течение, мы делаем следующий шаг и организовываем наши структуры данных и схему таблиц.
На этом шаге мы начинаем разбивать каждую из определенных ранее моделей (или ключевых частей) и записывать каждое из полей, которое мы предполагаем использовать на той модели или таблице. В большинстве компонентов для сохранения соответственных данных Вам будет нужна какая-либо таблица, ассоциируемая с каждой моделью. При написании какого-либо компонента [под систему] Joomla существуют несколько полей, которые считаются стандартными полями таблицы и мы выделим их позже в [этой] серии [статей], когда мы [приступим к] написанию кода. В то время как мы записываем наши структуры таблиц, мы пытаемся придерживаться некоторых конвенционных рекомендаций. Например, если мы планируем ассоциировать какой-либо объект с какой-либо конкретной категорией, то мы включим в таблицу нашего объекта некоторый номер "category_id". Таким же образом, если мы ожидаем, что объекты будут ассоциироваться с каким-либо пользователем, [то] мы включим некоторый номер "user_id". Это поможет нам позже, в то время как мы беремся за наши вручную написанные таблицы и начинаем вводить их в наш конструктор [баз данных] SQL. Иногда мы даже проведем линии между нашими таблицами, чтобы лучше визуально представлять как все связано.
Пятый шаг: настройте какой-либо метод тракинга версий (GitHub) 2
Этот шаг совсем не обязательно должен быть следующим, но мы обычно находим, что это время подходит для начала настройки нашего тракинга версий. По ряду причин мы предпочитаем GitHub 2. Если Вы не знакомы с GitHub 2: Вы можете иметь как публичный (бесплатный), так и личный ( за очень минимальную оплату) аккаунт и затем отслеживать все изменения в своем коде и хранить вне интернета в безопасности запасную копию всей своей упорной работы. Не говоря [о том], что это предоставляет Вам удобство [возможности] написания кода многими пользователями без страха что они изменят код друг другу. Если Вы не выберете GitHub 2, это нормально. Это определенно не единственная имеющаяся возможность, но важно, чтобы Вы подобрали что-либо, что использует [создание] запасных копий, тракинг и защиту Вашего кода.
Шестой шаг: настройте свою местную среду [разработчика]
Последним шагом в этой начальной статье является настройка Вашей местной среды [разработчика]. Я вкратце упомяну, что у нас здесь имеется много разных возможностей и вместо того, чтобы распространяться на разные методы, которые Вы можете использовать для написания своего кода, я просто скажу, что в этот момент в нашем процессе разработки мы настраиваем нашу среду. Мы создадим три местные установки [системы] Joomla!, копию нашего репозитория [на] GitHub 2 и создадим ссылки "symlink" на наши директории как нужно. Лично я для управления моим кодом использую "Sublime Test 2" 3 и для большей части моего кодирования я нахожу инструменты Git [вполне] удовлетворительными. Существует много веб-приложений, которые Вы можете использовать и вместо того, чтобы принижать их, я призову Вас найти то, которое подходит под Ваше [собственное] рабочее течение и Ваш стиль написания кода лучше всего.
В следующем месяце статья вторая -"Начинаем разработку"
1 Оригинальный текст этой статьи автора Давида Хюрли (David Hurley) на английском языке: https://magazine.joomla.org/issues/issue-jan-2013/item/1034-joomla-30-extension-development-series-setting-the-stage
Some articles published on the Joomla Community Magazine represent the personal opinion or experience of the Author on the specific topic and might not be aligned to the official position of the Joomla Project
By accepting you will be accessing a service provided by a third-party external to https://magazine.joomla.org/
Comments