# Kherson Development Team

Разработка и сопровождение сайтов и прикладных WEB-приложений
Украина, г. Херсон
5/12

Поиск по сайтам Kherson Development Team (gelos.org.ua, kdt.biz.ua), в том числе и по комментам.

Joomla, Документация, Новости, Разработка под Joomla // Краткое руководство по классам в Joomla 1.5

### Краткое руководство по классам в Joomla 1.5

1 2 3 4 5 0 оценок

Написано пользователем admin , 06 Июл 2009 | Написать комментарий

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

Есть некоторые важные вещи, которые мы должны знать, прежде чем начнем создание и использование классов. Сначала запомним важные пункты:
- Имена классов должны начинаться с прописных буквы.
- Все элементы должны придерживаться стандарта camelCase (стиль написания составных слов, при котором несколько слов пишутся слитно без пробелов, при этом каждое слово пишется с большой буквы).
- Имена методов должны начинаться с буквы в нижнем регистре.
- Приватные элементы должны начинаться с подчеркивания. Только php5 имеет поддержку модификаторов доступа, мы в этих целях используем особые именования для указания приватных элементов. Методы и свойства, которые имеют префикс подчеркивания – приватные элементы.

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

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

Когда мы передаем объекты мы должны иметь в виду, что PHP разных версий обрабатывают объекты разному.

## Наследование от JObject

В Joomla! нам часто приходится сталкиваться с классом JObject. Многие из классов в Joomla! являются подклассами JObject. Этот базовый класс предоставляет нам некоторые полезные общие методы, включая стандартный модификаторы доступа и механизм обработки ошибок.

Чтобы стимулировать методологию PHP5, JObject эмулирует PHP5 позволяя нам использовать метод конструктора __constructor () в подклассах независимо от того, какая версия PHP используется.
Когда мы используем наш дочерний класс, мы должны, как правило, обьявить конструктор родителя класса. Это гарантирует, что конструктор класса родителя выполнится.

    /**
     * Some Class which extends JObject
     */
    class SomeClass extends JObject
    {
        /**
         * Object name
         * @var string
         */
        var $name;
        /**
         * PHP 5 style Constructor
         *
         * @access  protected
         * @param string name
        */
        function __construct($name)
        {
            $this->name = $name;
            parent::__construct();
        }
    }

Почти все Joomla! объекты и классы вытекают из базового класса JObject. Этот класс предоставляет несколько полезных методов, которые могут использовать все классы. Метод getPublicProperties() возвращает массив общедоступных свойств объекта. Это определяется на этапе выполнения и используются не свойства класса, а свойства объекта.
Методы get() и set() используются, чтобы получить и установить свойства объекта. Если мы используем get(), с несуществующего свойства, то будет возвращено значение по-умолчанию. Если мы используем метод set() для несуществующего свойства, то свойство будет создано. Оба эти методы могут быть использованы с частными свойствами.
Мы можем отслеживать ошибки, которые происходят в объекте, используя методы getErrors(), getError() и setError(). Ошибки будут зафиксированы в свойстве _errors в виде массива.

# Работа с запросами

Вообще, когда мы разрабатываем PHP скрипты, мы активно работаем с массивами: $ _GET, $ _POST, $ _FILES, $ _COOKIE и $ _REQUEST. В Joomla! Вместо прямого доступа к ним мы используем статический класс JRequest. Используется это потому, что позволяет нам повысить бесопасность кода.
В основном мы используем два метода это JRequest:: setVar () и JRequest::getVar (). Первый для установки переменной, второй для получения переменной. В этот пример, мы получим значение id, и если id не установлен, мы вернемся значения по умолчанию (0).

    $id = JRequest::getVar('id', 0);

JRequest:: setVar () метод используется для установки значений в запросе хэшей. По сравнению с JRequest:: getVar(), этот метод используется довольно редко. Наиболее часто он используется для установки значений по умолчанию. Например, нам нужно установить в компоненте задачу по умолчанию, если она еще не задана:

    JRequest::setVar('task', 'someDefaultTask');

Полезный трюк: чтобы гарантировать, что переменная установлена, нужно использовать оба метода совместно. В данном примере, если name не установлено, мы поставили его значение по умолчанию – «unknown».

    JRequest::setVar('name', JRequest::getVar('name', 'unknown'));

Вот некоторые другие удобные методы JRequest – это getInt(), getFloat(), getBool(), getWord(), getCmd(), и getString(). Если мы будем использовать эти методы, мы заранее знаем переменную какого типа мы получим.

## Класс JFACTORY

Прежде чем перейти к Joomla! классу Factory, нам необходимо немного ознакомиться с изменениями, которые происходят в шаблонах кода.
Класс Factory используется для построения и возвращения объектов. Этот пример показывает, каким образом мы можем доступ некоторых глобальных объектов с использованием JFactory.

    $db =& JFactory::getDBO();
    $user =& JFactory::getUser();
    $document =& JFactory::getDocument();

## Сессии

Сессии используются в веб-приложениях, как средства, обеспечивающего временное хранение объекта в течение всего визита клиента. В PHP для этого мы использовали глобальной хэш $ _SESSION. Joomla! всегда дает нам возможность обращение к сессии, независимо от того, вошел ли клиент в систему Joomla! как зарегенный или нет. Вместо хэша $ _SESSION, мы используем глобальную сессию в виде объекта. Данные хранятся в определенном пространстве имен. По умолчанию используется пространство имен default. В этом примере мы извлечем значение default.example:

    $session =& JFactory::getSession();
    $value = $session->get('example');

Если мы хотим использовать определенное пространство имен, то мы должны также указать дополнительное значение. В этом примере мы извлечем значение myextension. По-умолчанию установим значение null:

    $session =& JFactory::getSession();
    $value = $session->get('example', null, 'myextension');

Установка значений очень похож на получение значений. В этом примере мы установили значение myextension.example -1:

    $session =& JFactory::getSession();
    $session->set('example', 1, 'myextension');

Метки: Joomla, PHP, разработка

### Оставить комментарий

Нажмите, чтобы отменить ответ.

(Адрес опубликован не будет)

(не обязательно)

Отменить написание комментария
Поиск по сайтам Kherson Development Team (gelos.org.ua, kdt.biz.ua), в том числе и по комментам.

Copyright © 2006-2010 Kherson Development Team. All rights reserved.