Креатив
Верный ход
Качество
Надёжность

Joomla! предназначена для работы как в PHP 4 и PHP 5 средах. Это влияет на то, как строить классы и использовать объекты в Joomla!, оба этим вопроса мы будем обсуждать в данном разделе. Joomla! решила продолжить использовать синтаксис PHP 4 из соображений обратной совместимости, многие веб-серверов до сих пор используют PHP 4. Как сторонние разработчики, мы должны последовать этому примеру и всегда строить наши расширения для совместимости PHP4 и PHP5, несмотря на то, что это ограничивает некоторые возможности.

Есть некоторые важные вещи, которые мы должны знать, прежде чем мы начнем разработку и использование классов. Мы начнем с рассмотрения некоторых обозначений.

  • Имена классов должны начинаться с заглавной буквы.
  • Все названные элементы должны использовать стандарт camelCase.
  • Имена методов должны начинаться со строчной буквы.
  • Не публичные элементы должны начинаться с подчеркивания.

При использовании PHP5 и выше поддерживаются модификаторы доступа, мы используем специальные соглашения об именах для обозначения не публичных элементов. Методы и свойства, которые не являются публичными начинаются с подчеркивания.

Мы часто передаём и возвращаем объекты и массивы по ссылке. Выполнение этого означает, что несколько переменных 'указывать' на один и тот же объект или множество. Отметим, что в PHP 5 объекты всегда передаются по ссылке. Методы, функции и параметры, которые возвращают и передаются по ссылке начинаются с амперсанда. Когда мы используем метод или функцию, которая возвращает ссылку, мы должны использовать & = оператор присваивания, как показано в следующем примере:

function &go()
{
$instance = new stdClass();
return $instance;
}
$reference =& go();

Когда мы передаем объекты вокруг мы должны иметь в виду, что PHP версии 5 и выше обрабатывать объекты по-разному. В PHP 5 объекты автоматически передаются по ссылке (хотя технически явная передача по ссылке отличается, но эффекты практически одинаковы).

Вернуться к оглавлению

Joomla! включает в себя набор полезных библиотек, в том числе свою собственную - joomla. Чтобы импортировать библиотеку, нужно использовать функцию jimport(). В этом примере мы импортируем библиотеку joomla.filesystem.file, которая нужна для обработки файлов:

jimport('joomla.filesystem.file');

Когда мы импортируем библиотеку, у нас есть возможность импорта всей библиотеки или только малой её части. Предыдущий пример импортирует файл /libraries/joomla/filesystem/file.php. Если мы хотим, мы можем импортировать все файлы в файловой директории. Для этого нам нужно использовать звездочку в шаблоне:

jimport('joomla.filesystem.*');

Joomla! настоящее время не поддерживает библиотеку расширений. Будущие разработки могут включать в себя возможность загрузки пользовательских библиотек и реализации зависимостей.

В следующей таблице показаны базы библиотек, которые включены в Joomla!:

Библиотека Описание Лицензия
archive класс управления файлами tar (www.phpconcept.net) PHP License 3
bitfolge лента и утилита vCard (www.bitfolge.de) GNU LGPL
domit DOM (Document Object Model) XML парсер (www.phpclasses.org/browse/package/1468.html) GNU LGPL
geshi маркер синтаксиса (qbnz.com/highlighter) GNU LGPL
joomla основная библиотека Joomla! GNU LGPL
openid управление удалённым входом (www.openidenabled.com) GNU LGPL
pattemplate Обработка шаблонов (www.php-tools.net)
GNU LGPL
pcl Обработка архивов (www.phpconcept.net) GNU LGPL
pear Расширения PHP и репозиторий приложений (pear.php.net) Смешанная
phpgacl Общий контроль доступа (phpgacl.sourceforge.net)
GNU LGPL
phpinputfilter Фильтрация нежелательных PHP / Javascript / HTML тегов (www.phpclasses.org/browse/package/2189.html)
GNU LGPL
phpmailer Класс для отправки электронной почты с использованием Sendmail, PHP mail(), или SMTP (phpmailer.sourceforge.net)
GNU LGPL
phputf8 UTF8 и ASCII инструменты (phputf8.sourceforge.net)
Смешанная
phpxmlrpc XML-RPC протокол (phpxmlrpc.sourceforge.net)
Специальная
simplepie RSS и Atom считыватель (simplepie.org)
GNU LGPL
tcpdf PDF генератор, который не требует дополнительных библиотек (tcpdf.sourceforge.net)
GNU LGPL

Мы импортируем эти библиотеки, так же, как Joomla! библиотеки. Этот пример демонстрирует, как мы импортируем класс GeSHi из библиотеки GeSHi:

jimport('geshi.geshi');

Вернуться к оглавлению

phputf8

Во время установки Joomla!, мы посылаем URI (Uniform Resource Indicators - Однородные Индикаторы Ресурса). полностью упакованные полезные данные запроса. Прежде чем мы углубимся в данные и их использование, на следующей диаграмме будут описаны различные части URI:

Элемент запроса - это часть URI, от которого мы получаем данные. Запрос данных состоит из серии пар ключ-значение разделенных амперсандом.

Первое значение запроса мы будем рассматривать как option. Это значение определяет какой компонент будет запрашиваться. Имя компонента всегда начинается с com_. В следующем примере мы получаем доступ к компоненту с именем example:

http://www.example.org/joomla/index.php?option=com_example

Меню - это основное средство, с помощью которого пользователи имеют доступ к навигации Joomla!. Меню состоит из ряда пунктов меню, каждый из которых определяет связь (с внутренним) компонентом или (внешние) URI. Мы можем также изменять пункты меню, изменяя параметры, характерные для данного компонента, и назначение шаблонов для них.

Уникальный идентификатор (ID) идентифицирует каждый пункт меню. ID позволяет ссылаться на компонент без использования запроса значения параметра. Вместо этого, мы можем использовать значение Itemid запроса. Это значение также является вторичной целью; когда ID пункта меню известно, пункт меню может быть выдвинут на первый план, и любые подпункты меню показаны (в зависимости от точной настройки установки). В этом примере мы вызываем пункт меню 1:

http://www.example.org/joomla/index.php?Itemid=1

Некоторые компоненты могут выводить данные в различных форматах. Если мы хотим выводить данные в другом формате, мы можем использовать формат запрос значения. Это будет работать только, если доступный компонент поддерживает указанный формат. В этом примере мы вызываем компонент example и запрашиваем данные в формате feed:

http://www.example.org/joomla/index.php?option=com_example&format=feed

Другой способ использования запрос значение - task, который используется для определения задач, которые компонент будет выполнять. Когда мы создаем наши собственные компоненты, то целесообразно их использовать. Причиной этого является то, что эти компоненты частично реализованы в рамках, которые мы будем использовать. В этом примере мы запрашиваем компонент example и вызываем задачу view:

http://www.example.org/joomla/index.php?option=com_example&task=view

Когда мы строим наши собственные URI, мы должны убедиться, что у нас нет конфликта ни с одним из основных значений запроса. Это может привести к неожиданным последствиям. Ниже приведён список некоторых основных значений запроса ядра:

  • format
  • hidemainmenu (только модуль)
  • Itemid
  • layout
  • limit
  • limitstart
  • no_html
  • option
  • start
  • task
  • tmpl
  • tp
  • vars
  • view

Когда мы выводим URI, мы должны использовать статический метод JRoute::_(). Использование этого означает, что мы не должны отслеживать ID пункта меню. Следующий пример показывает как необходимо использовать метод:

echo JRoute::_('index.php?option=com_example&task=view');

Если мы используем этот метод внутри компонента и ссылки на текущий компонент, мы не должны указывать параметр option. Обратите внимание, что мы не кодируем апресанд, в соответствии со стандартом XHTML; это потому, что JRoute сделает это за нас. Существует еще одно преимущество использования статического метода JRoute::_(). Joomla! поддерживает SEO (Search Engine Optimization). Если эта опция включена, метод JRoute ::_() будет автоматически преобразовывать адреса в адреса SEO. Например, предыдущий фрагмент кода можно перевести вот так:

http://example.org/joomla/index.php/component/com_example

Всегда используйте статический метод JRoute ::_() для вывода URI.

Вернуться к оглавлению

Разработка для Joomla! требует понимания общей структуры каталога. Следующая древовидная диаграмма описывает различные папки и их назначение в установке:

Вернуться к оглавлению

get( property : string, default : mixed=null ) : mixed

Акцессор; получает значение возвращаемого свойства. Если свойство не установлено, то будет возвращено дополнительное свойство по умолчанию. Этот метод не будет возвращать ссылку; в подклассах это может быть выгодно, чтобы добавить определённые методы, в которых ссылка на свойство является наиболее подходящей.

Параметры property Название возвращаемого свойства
[default] Значение по умолчанию, если свойство не было инициализировано
Результат возвращения Значения свойств

 

getError( i : int=null, toString : boolean=true ) : mixed

Возвращает ошибку, которая произошла во время выполнения одного из методов объекта. Ошибка может быть объектом или строкой. Смотрите JError для получения дополнительной информации об ошибках.

Параметры [i] Номер ошибки; по умолчанию последняя извлечённая ошибка
[toString] Возвращает строку, даже если ошибка объекта
Результат возвращения Ошибка объекта или строки, связанная с объектом

 

getErrors( ) : array

Возвращает копию свойства _error
Результат возвращения Массив ошибок, связанных с объектом

 

getPublicProperties( assoc : boolean=false ) : array

Получение имён всех публичных свойств объекта. Имена закрытых свойств не будут возвращены; закрытые свойства определяются подчёркиванием в начале имени. Если assoc является true, возвращается ассоциативных массив, включая значения свойств.

Параметры [assoc] Получение ассоциативного массива со значениями; по умолчанию возвращает false
Результат возвращения Массив публичных имён свойств или ассоциативный массив значений свойств объекта

 

set( property : string, value : mixed=null ) : void

Мутатор; устанавливает значение свойства в объекте.

Параметры property Название свойства
[value] Значение свойства

 

setError( error : mixed ) : void

Добавляет ошибку к истории ошибок объекта

Параметры [error] Строка или ошибка объекта

 

toString( ) : string

Получает строковое представление объекта. Этот метод получает имя класса.

Результат возвращения Строковое представление объекта

Вернуться к оглавлению

Войти на сайт

Запомнить меня

Новости

  • Перевод Mastering Joomla! 1.5

    14.03.2013

    Продолжается перевод книги "Mastering Joomla! 1.5". На данный момент полностью переведено 2 главы. Полностью перевод книги...

    Подробнее...

  • Модернизация сайта

    28.05.2012

    Уважаемые посетители! Мы полностью модернизировали наш сайт и надеемся что сейчас им станет...

    Подробнее...