Описание класса Joomla JFactory
Используется для построения и возвращения объектов.
Определен
/libraries/joomla/factory. php
МЕТОДЫ
1. getACLВозвращает глобальный объект авторизации. Тип возвращаемого объекта - JAuthorization.
СИНТАКСИС
объект JAuthorization getACL()
ПРИМЕР
В этом примере получен глобальный объект авторизации
$acl =& JFactory::getACL();
2. getApplicationВозвращает ссылку на глобальный объект приложения. Тип возвращаемого объекта - JApplication.
СИНТАКСИС
object JApplication getApplication( $client, $attribs, $prefix )
где:
$client
Тип данных - строка.
Название, под которым известна клиентская часть приложения. Например, Joomla поставляется с тремя клиентами приложения: сайт, административная часть и установка. По умолчанию – null.
$attribs
Тип данных – массив
Ассоциативный массив атрибутов, которые будут приняты приложением. По умолчанию - массив.
$prefix
Тип данных - строка
Префикс, который добавляется к имени клиента, чтобы сформировать название класса приложения.
По умолчанию - "J".
ПРИМЕР
Этот метод чаще всего используется для того чтобы получить ссылку на глобальный объект приложения. В этом случае метод вызывается без аргументов. В этом примере мы получаем объект приложения, чтобы посмотреть в какой части сайта (пользовательской или административной) был запущен код.
$app =& JFactory::getApplication();
if ($app->isSite()) echo "Client is site";
if ($app->isAdmin()) echo "Client is administrator";
Возвращает ссылку на глобальный объект кэш. Тип возвращаемого объекта - JCache.
СИНТАКСИС
объект JCache getCache( $group, $handler, $storage )
где:
$group
Тип значения - строка.
Название группы кэша. Позволяет разделить группы кэша, путем назначения им уникальных имен.
$handler
Тип значения строка.
$storage
Тип значения - строка.
ПРИМЕР
В этом примере произведен простой вызов кэша. Эти кэши являются результатом "expensiveMethod", так что для данного набора аргументов результат вычисляется только один раз.
// Define a class to contain the computationally-expensive method.
class expensiveClass
function expensiveMethod ( $signature )
static $instances;
if (!isset( $instances )) $instances = array();
if (empty( $instances[$signature] ))
// Something that is resource-intensive to produce, here simulated
// by calculating the MD5 hash of the signature.
$instances[$signature] = md5( $signature );
echo "Cache miss";
else
echo "Cache hit ";
return $instances[$signature];
// Create a cache instance.
$cache =& JFactory::getCache( "myCache" );
// Specify the class and method that will produce the data to be cached.
$method = array( "expensiveClass", "expensiveMethod" );
// Now execute some code that will use the cache.
echo " : " . $cache->get( $method, "abc" ) . " ";
echo " : " . $cache->get( $method, "efg" ) . " ";
echo " : " . $cache->get( $method, "abc" ) . " ";
echo " : " . $cache->get( $method, "hij" ) . " ";
echo " : " . $cache->get( $method, "klm" ) . " ";
echo " : " . $cache->get( $method, "hij" ) . " ";
Результат выполнения примера:
Cache miss : 900150983cd24fb0d6963f7d28e17f72
Cache miss : 7d09898e18511cf7c0c1815d07728d23
Cache hit : 900150983cd24fb0d6963f7d28e17f72
Cache miss : 857c4402ad934005eae4638a93812bf7
Cache miss : 3491f0dc1059a35bb1681b3bd67cb0d5
Cache hit : 857c4402ad934005eae4638a93812bf7
Возвращает ссылку на глобальный объект конфигурация. Тип значения возвращаемого значения - JRegistry.
СИНТАКСИС
объект JRegistry getConfig( $file, $type )
$file
Тип значения - строка.
Путь к конфигурационному файлу. Если null тогда путь - joomla/libraries/joomla/config. php. По умолчанию null.
$type
Тип значения - строка.
Тип конфигурационного файла. По умолчанию "PHP".
ПРИМЕР
Это метод используется для доступа к глобальным конфигурационным переменным. В этом примере получаем имя сайта.
$config =& JFactory::getConfig();
echo "Site name is " . $config->getValue( "config. sitename" );
4. getDate
Возвращает ссылку на глобльный объект дата. Тип возвращаемго значения - JDate.
СИНТАКСИС
объект JDate getDate( $time, $tzOffset )
где:
$time
Тип значения - строка или число.
Использовать дату или время. Чтобы получить текущую дату или время надо использовать "now". Используемый формат будет зависить от текущего языка и от того переписан ли по умолчанию Григорианский календарь. Если тип значения является числом тогда дата интерпритируется в формате Unix. По умолчанию "now".
$tzOffset
Тип значения - число.
Сдвиг часового пояса применяется к дате и времени в $time. Он вычитается из $time так чтобы вычисление даты/времени, сохраненного в объекте дата было в формате UT. По умолчанию 0.
ПРИМЕР 1
В этом примере выводятся текущие дата и время в локальном формате.
$date =& JFactory::getDate();
echo "Current date and time is: " . $date->toFormat() . " ";
Результат: Current date and time is: 2008-11-22 18:14:08
ПРИМЕР 2
В этом примере дата выводиться в формате RFC2822, подходящем для большинства интернет протоколов. Отметим, что дата должна быть определена в локальном формате, иначе парсер не сможет ее распознать.
Результат: Date and time is: Wed, 16 Apr 2008 13:30:00 +0000
ПРИМЕР 3
В этом примере дата определена в формате UNIX и в выводиться в формате ISO 8601.
$date =& JFactory::getDate( 1332362632 );
echo "Date and time is: " . $date->toISO8601() . " ";
Результат:
Date and time is: 2012-03-21T20:43:52Z
5. getDBOВозвращает ссылку на глобальный объект база данных. Тип возвращаемого объекта - JDatabase.
СИНТАКСИС
объект JDatabase getDBO()
ПРИМЕР
В этом примере получаем префикс базы данных.
$db =& JFactory::getDBO();
echo "Database prefix is : " . $db->getPrefix();
Результат:
Database prefix is : jos_
6. getDocumentВозвращает ссылку на глобальный объект документ. Тип возвращаемого значения - JDocument.
СИНТАКСИС
объект JDocument getDocument()
ПРИМЕР
В этот примере получаем заголовок текущей страницы.
$doc =& JFactory::getDocument();
echo "Current title is: " . $doc->getTitle();
Возвращает ссылку на глобальный объект редактор. Тип возвращаемого значения - JEditor
СИНТАКСИС
объект JEditor getEditor( $editor )
где:
$editor
Тип значения - строка.
Название редактора (например, "tinymce"). Если null, то будет возвращен текущий редактор. По умолчанию null.
ПРИМЕР
В этом примере, вы можете посмотреть как отобразить редактор и послать ему параметры для отображения.
$editor =& JFactory::getEditor();
$params = array( "smilies"=> "0",
"style" => "1",
"layer" => "0",
"table" => "0",
"clear_entities"=>"0"
);
echo $editor->display( "desc", "", "400", "400", "20", "20", false, $params );
Полный список параметров для редактора TinyMCE можно посмотреть /plugins/editor/tinymce. php.
Надо отметить, что JRequest::GET по умолчанию приводит все HTML коды к простому тексту, что может быть бесполезно при использовании редактора.
Чтобы сохранить HTML код, вы должны явно запросить его из JRequest-Object иначе все ваши HTML коды исчезнут.
/*The store-procedure in your model might then look like this*/
[. . . ]
function store()
$row =& $this->getTable();
$data = JRequest::get( "post");
/* Get proper HTML-code for your HTML-encoded field now by using JREQUEST_ALLOWHTML*/
$data["yourfieldname"]=JRequest::getVar( "yourfieldname", "", "post", "string", JREQUEST_ALLOWHTML );
/* now proceed as suggested */
$row->bind($data);
[. . . ]
$row->check();
[. . . ]
$row->store();
[. . . ]
[. . . ]
Возвращает ссылку на глобальный объект язык. Тип возвращаемого значения - JLanguage.
СИНТАКСИС
объект JLanguage getDocument()
ПРИМЕР
Следующий код определяет название текущего языка.
$lang =& JFactory::getLanguage();
echo "Current language is: " . $lang->getName();
Возвращает ссылку на глобальный объект язык. Тип возвращаемого значения - JMail.
СИНТАКСИС
объект JLanguage getMailer()
ПРИМЕР
В этом примере посылается тестовое сообщение для проверки адреса электронной почты.
$mail =& JFactory::getMailer();
$config =& JFactory::getConfig();
$mail->addRecipient( $config->getValue( "config. mailfrom" ) );
$mail->setSubject( "Test message" );
$mail->setBody( "This is an example email to test the Joomla! JFactory::getMailer() method. Please ignore it" );
if ($mail->Send())
echo "Mail sent successfully. ";
else
echo "An error occurred. Mail was not sent. ";
Возвращает ссылку на глобальный объект сессия. Тип возвращаемого значения - JSession.
СИНТАКСИС
объект JSession getSession($options )
где:
$options
Тип данных - массив.
Массив опций. Возможные опции приведены ниже. По умолчанию - массив.
name - название сессии;
id - уникальный ID сессии;
expire - дата и время окончания срока действия сессии;
security - список опций безопасности разделенных запятыми.
ПРИМЕР
Следующий код получает текущую сессию и устанавливает значение "helloworld" для переменной "myvar"
$session =& JFactory::getSession();
$session->set( "myvar", "helloworld" );
Переменная сессии может быть получена более легким способом
$session =& JFactory::getSession();
echo "Session variable myvar has value: " . $session->get( "myvar", "empty" );
Возвращает ссылку на глобальный объект шаблон. Тип возвращаемого значения - JTemplate.
СИНТАКСИС
объект JTemplate getTemplate()
ПРИМЕР
В этом примере получаем глобальный объект шаблон.
$template =& JFactory::getTemplate();
12. getURIСтатический метод, который возвращает ссылку на глобальный объект JURI. Тип возвращаемого значения - JURI. Глобальный объект URI представляет собой URI отвечающий за отображение текущей страницы.
ПРИМЕР
В этом примере мы получаем URI как строку
$u =& JFactory::getURI();
echo "URI is " . $u->toString() . " ";
Результат:
URI is http://www. example. com/joomla/index. php?task=view&id=12&Itemid=29
13. getUserВозвращает ссылку на глобальный объект пользователь. Тип возвращаемого значения - JUser
СИНТАКСИС
объект JUser getUser($id)
где:
$id
Тип значения - число или строка.
Если передана строка, тогда она будет интерпретирована как имя пользователя и сконвертирована в id автоматически. Если аргумент пропущен или передано значение null тогда будет загружен текущий пользователь. По умолчанию значение - null.
ПРИМЕР 1
В этом примере показана некоторая информация для текущего пользователя. При этом пользователь должен быть авторизован.
$user =& JFactory::getUser();
if (!$user->guest)
echo "You are logged in as:<br />";
echo "User name: " . $user->username . "<br />";
echo "Real name: " . $user->name . "<br />";
echo "User ID : " . $user->id . "<br />";
ПРИМЕР 2
В этом примере показана информация о пользователе с именем "joebloggs". При этом не важно является ли он текущим.
$user =& JFactory::getUser( "joebloggs" );
if ($user->id == 0)
echo "There is no user joebloggs registered on this site. <br />";
else
echo "User name: " . $user->username . "<br />";
echo "Real name: " . $user->name . "<br />";
echo "User ID : " . $user->id . "<br />";
ПРИМЕР 3
В этом примере определяется, имеет ли текущий пользователь права на редактирование.
$user =& JFactory::getUser();
if ($user->authorize( "com_content", "edit", "content", "all" ))
echo "Editing permitted. ";
else
echo "Editing not permitted. ";
Возвращает ссылку на глобальный объект XML парсер. Тип возвращаемого значения зависит от типа запрошенного парсера
СИНТАКСИС
объект getXMLParser( $$type, $options )
где:
$type
Тип данных - строка.
Тип XML парсера. Список доступных опций приведен ниже. По умолчанию "DOM".
$options
Тип данных - массив.
Массив опций, которые могут помочь сконфигурировать парсер. Он зависит от выбранного парсера.
Поддерживаемые парсеры:
rss - SimplePie парсер для ленты новостей. Для работы этого парсера в массив опций должен быть передан URL($options["rssUrl"]). Чтобы определить время жизни кэша в массив опций надо передать следующее значение: $options["cache_time"];
atom - тоже самое что rss;
simple- JSimpleXML парсер;
dom - Domit парсер. Если опция "lite" ($options["lite"]) будет установлена true, то будет использован Domit lite парсер.
ПРИМЕР
В этом примере JSimpleXML парсер используется для того чтобы получить предопределенные позиции модулей в шаблоне Milky Way
$xml =& JFactory::getXMLParser( "simple" );
$xml->loadFile( "templates/rhuk_milkyway/templateDetails. xml" );
$positions =& $xml->document->getElementByPath( "positions" );
foreach ($positions->children() as $position)
echo $position->data() . " ";
Результат
breadcrumb
left
right
top
user1
user2
user3
user4
footer
debug
syndicate
Английская версия статьи здесь Русская версия статьи здесь