Печать

3 новых полезных класса в Joomla 2.5

В платформе Joomla 2.5 разработчики добавлил несколько полезных новых классов для разработчиков. Рассмотрю некоторый из них - JGrid (для построения HTML таблиц), JWebClient (для получения информации о клиенте, особенно полезен для мобильных устройств) и JImage (для работы с изображениями).

JGrid

Данный класс был создан для генерации HTML таблиц. Довольная полезный класс для разработчиков, раньше им приходилось придумывать свои приемы для этого. Для полной информации о классе и его методах можно посмотреть файл - libraries/joomla/html/grid.php

Пример использования данного класса для генерации простой HTML таблицы:

<?php 
jimport('joomla.html.grid');
//$options - ассоциативный массив для атрибутов тега <table>
$table = new JGrid($options = array());
//добавляем новые элементы в заголовок таблицы
//$options - ассоциативный массив для атрибутов тега <tr>
//1 - заголовок, любое другое значение - футер, если значение не установлено, то просто будут теги <tr><td>...
$table->addRow($options = array(), 1);
for ($i = 1; $i < 4; $i++) {
 $name = 'Нeader'.$i;
 //добавляем колонку с установленным именем
 $table->addColumn($name);
 //добавляем контент в колонку с указанным именем
 //$option - ассоциативный массив для атрибутов тега <td>
 $table->setRowCell($name, 'Content for ' .$name, $option = array());
}
//добавляем новые элементы в тело таблицы
$table->addRow($options = array());
for ($i = 1; $i < 4; $i++) {
 $name = 'Сontent'.$i;
 $table->addColumn($name);
 $table->setRowCell($name, 'Content for ' .$name);
} 
//добавляем новые элементы в footer таблицы
$table->addRow($options = array(), 2);
for ($i = 1; $i < 4; $i++) {
 $name = 'Footer'.$i;
 $table->addColumn($name);
 $table->setRowCell($name, 'Content for ' .$name);
} 
//вывод полученной таблицы 
echo $table->toString();
?>

JWebClient

Данный класс предназначен для определения инофрмации о клиенте (пользователе), такой как ОС, браузер, язык и другой. Здесь стоит отметить поддержку мобильных устройств iPhones, iPads, Androids и других систем. Это позволяет разработчикам на основе этих данных выполнять те или иные действия. Данный класс описан в файле - libraries/joomla/application/web/webclient.php

Пример:

<?php
 jimport('joomla.application.web.webclient'); 
 //$userAgent - опционально для разбора строки user-agent
 //$acceptEncoding - опционально для разбора строки encoding
 //$acceptLanguage - опционально для разбора строки language
 $client = new JWebClient($userAgent = null, $acceptEncoding = null, $acceptLanguage = null);
 var_dump($client);
?>

Выдаст результат:

object(JWebClient)[613]
  protected 'platform' => null
  protected 'mobile' => boolean false
  protected 'engine' => null
  protected 'browser' => null
  protected 'browserVersion' => null
  protected 'languages' => 
    array
      empty
  protected 'encodings' => 
    array
      empty
  protected 'userAgent' => string 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1' (length=74)
  protected 'acceptEncoding' => string 'gzip, deflate' (length=13)
  protected 'acceptLanguage' => string 'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3' (length=35)
  protected 'detection' => 
    array
      empty

Для получения свойста класса можно использовать метод __get($name) данного класса. Например, для того что бы узнать, зашел ли пользователь с мобильного устройства можно использовать:

<?php
 jimport('joomla.application.web.webclient'); 
 $client = new JWebClient();
 $client->__get('mobile');
?>

JImage

Данный класс предназначен для работы с изображениями. С помощью данного класса можно получить информацию о изображении, а также делать различные манипуляции с ним (изменять размеры, устанавливать различные фильтры и прочее). Данный класс описан в файле - libraries/joomla/image/image.php, различные фильтры для изображение находятся в директории libraries/joomla/image/filters/

В качестве простого примера можно взять стандартный баннер "open source matters" (файл изображения - /images/banners/osmbanner1.png), уменшим его размеры в 2 раза и сохраним в ту же директорию в файл "osmbanner1_thumb.png":

<?php
 jimport('joomla.image.image')
 //создаем новый объект JImage
 $image = new JImage();
 $path = JPATH_BASE.DS.'images'.DS.'banners'.DS;
 //загружаем исходный файл
 $image->loadFile($path.'osmbanner1.png');
 //уменьшаем размеры в 2 раза
 $new_width = round($image->getWidth() / 2);
 $new_height = round($image->getHeight() / 2);
 //задаем размеры для нового изображения.
 //параметр "true" означает, что данный метод вернет новый объект JImage уже с измененным изображением 
 $newimg = $image->resize($new_width, $new_height, true);
 //сохраняем изображение в новый файл
 $newimg->toFile($path.'osmbanner1_thumb.png', IMAGETYPE_PNG);
?>
Интересная статья? Поделись ей с другими: