Короткий посібник з класів Joomla 1
Joomla! запускається на php 4 та php5. Це впливає на те, як ми описуємо класи та використовуємо об'єкти в Joomla! У Joomla! вирішено продовжити використовувати синтаксис PHP 4 з міркувань зворотної сумісності, оскільки багато веб-серверів, як і раніше, використовують php4. Як сторонні розробники, ми повинні наслідувати їх приклад і завжди робити наші розширення сумісними з PHP 4 і PHP 5, незважаючи на те, що можуть з'явитися деякі обмеження.
Є деякі важливі речі, які ми повинні знати, перш ніж почнемо створення та використання класів. Спочатку запам'ятаємо важливі пункти: - Імена класів повинні починатися з великих букв. - Всі елементи повинні дотримуватися стандарту camelCase (стиль написання складових слів, при якому кілька слів пишуться разом без пробілів, при цьому кожне слово пишеться з великої літери). - Імена методів повинні починатися з літери в нижньому регістрі. - Приватні елементи повинні починатися з підкреслення. Тільки php5 має підтримку модифікаторів доступу, ми з цією метою використовуємо спеціальні іменування для вказівки приватних елементів. Методи та властивості, які мають префікс підкреслення – приватні елементи.
Ми часто передаємо та повертаємо об'єкти та масиви за посиланням. Зауважте, що в PHP 5 об'єкти завжди передається за посиланням. Методи, функції та параметри, які повертаються і передаються за посиланням, мають префікс у вигляді амперсанда Коли ми використовуємо метод або функцію, яка повертає посилання, ми повинні використовувати &= , як демонструє наступний приклад:
Коли ми передаємо об'єкти, ми повинні мати на увазі, що PHP різних версій обробляють об'єкти по-різному.
Успадкування від JObject
У Joomla! нам часто доводиться стикатися з класомJObject. Багато хто з класів у Joomla! є підклас JObject. Цей базовий клас надає нам деякі корисні загальні методи, включаючи стандартні модифікатори доступу та механізм обробки помилок.
Щоб стимулювати методологію PHP5, JObject емулює PHP5, дозволяючи нам використовувати метод конструктора __constructor () у підкласах незалежно від того, яка версія PHP використовується. Коли ми використовуємо наш дочірній клас, ми повинні, як правило, оголошувати конструктор батька класу. Це гарантує, що конструктор класу батька виконається.
Багато 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).
JRequest:: setVar () метод використовується для встановлення значень у запиті хеш. Порівняно з JRequest:: getVar(), цей метод використовується досить рідко. Найчастіше він використовується для встановлення значень за промовчанням. Наприклад, нам потрібно встановити в компоненті завдання за замовчуванням, якщо воно ще не задано:
Корисний трюк: щоб гарантувати, що змінна встановлена, потрібно використовувати обидва методи спільно. У цьому прикладі, якщо name не встановлено, ми поставили його значення за умовчанням - "unknown".
Ось деякі інші зручні методи JRequest - це getInt(), getFloat(), getBool(), getWord(), getCmd() та getString(). Якщо ми будемо використовувати ці методи, ми заздалегідь знаємо змінну якогось типу ми отримаємо.
Клас JFACTORY
Перш ніж перейти до Joomla! класу Factory, нам необхідно трохи ознайомитися із змінами, що відбуваються у шаблонах коду. Клас Factory використовується для побудови та повернення об'єктів. Цей приклад показує, як ми можемо доступ до деяких глобальних об'єктів з використанням JFactory.
Сесії використовуються у веб-додатках як засоби, що забезпечує тимчасове зберігання об'єкта протягом усього візиту клієнта. У PHP для цього ми використовували глобальний хеш $_SESSION. Joomla! завжди дає нам можливість звернення до сесії, незалежно від того, чи клієнт увійшов до системи Joomla! як зареєстрований чи ні. Замість хеша $_SESSION, ми використовуємо глобальну сесію як об'єкт. Дані зберігаються у певному просторі імен. За промовчанням використовується простір імен default. У цьому прикладіми отримаємо значення default.example:
Якщо ми хочемо використовувати певний простір імен, ми повинні також вказати додаткове значення. У цьому прикладі ми отримаємо значення myextension. За замовчуванням встановимо значення null: