DbHelp.ru
Маленький Yii блог
Комментарии
Гость: Yoo! get pills cialis Order Canadian USA generic viagra online buy generic viagra
Гость: http://xn----7sbbdrwao3cago9f0e.xn--p1ai/forum/?PAGE_NAME=profile_view&UID=44368 Сколько стоит...
Гость: парик купить в москве парики из натуральных волос купить в москве парики в москве купить парик п...
Гость: Nicest Grown up Tube, freed of instruction videos - https://gay0day.com/search/gay-pornhub-boys-sc...
Гость: Рекомендовано для терапии COVID-19 иммард гидроксихлорохин...



Сервер Ultima Online - Forest Wars (от создателя данного блога)

Используем функции быстрого доступа (глобальные функции в Yii)

Рубрика: Перевод Cookbook

Оцените эту статью:

Рейтинг: 0.00 (0)
23 июл. 2009
Опубликовать в Twitter Написать в Facebook Опубликовать в своем блоге livejournal.com

Yii Framework Blog img http://dbhelp.rucookbook С целью легкого интегрирование фреймворка со сторонними библиотеками, разработчики Yii не используют в коде глобальных функций. В Yii все необходимо решать при помощи полного названия класса или диапазона обьектов.

---

Например, чтобы получить доступ к данным текущего пользователя, мы должны использовать Yii::app()->user. Что бы обратиться к параметрам нашего приложения, мы должны использовать Yii::app()->params[название] и так далее.

Хотя всевозможные редакторы кода (IDE) могут немного облегчить печать этих длинных имен, лучшим вариантов будет использовать глобальные функции...

Мы можем хранить наши глобальные функции быстрого доступа в файле globals.php. Теперь что бы эти функции были доступны внутри приложения, откроем файл index.php и добавим в его начало:

require('path/to/globals.php');
require('path/to/yii.php');
......

Теперь вы можете использовать ваши глобальные функции в любом месте вашего приложения. Например, что бы получить доступ к данным пользователя мы можем использовать user() вместо Yii::app()->user

Примечание: Не используйте функции быстрого доступа в ваших компонентах, если вы собираетесь в дальнейшем использовать их в разных приложениях (или распространять). Это сделает ваши компоненты не пригодными если функции быстрого доступа не будут определены в других приложениях. Также обратите внимание что ваши глобальные функции могут быть причиной конфликта при использовании сторонних библиотек. Поэтому постарайтесь для глобальных функций использовать не сильно распространенные имена (прим. переводчика)

Ниже приведен код, содержащий список наиболее используемых функций быстрого доступа. Вы можете настроить их под свой вкус!

defined('DS') or define('DS',DIRECTORY_SEPARATOR);
 
/**
 * Быстрый доступ к Yii::app()
 */
function app()
{
    return Yii::app();
}
 
/**
 * Быстрый доступ к Yii::app()->clientScript
 */
function cs()
{
    return Yii::app()->clientScript;
}
 
/**
 * Быстрый доступ к Yii::app()->createUrl()
 */
function url($route,$params=array(),$ampersand='&')
{
    return Yii::app()->createUrl($route,$params,$ampersand);
}
 
/**
 * Быстрый доступ к CHtml::encode
 */
function h($text)
{
    return htmlspecialchars($text,ENT_QUOTES,Yii::app()->charset);
}
 
/**
 * Быстрый доступ к CHtml::link()
 */
function l($text, $url = '#', $htmlOptions = array())
{
    return CHtml::link($text, $url, $htmlOptions);
}
 
/**
 * Быстрый доступ к Yii::t(). По умолчанию, используется категория 'stay'
 */
function t($message, $category = 'stay', $params = array(), $source = null, $language = null)
{
    return Yii::t($category, $message, $params, $source, $language);
}
 
/**
 * Быстрый доступ к  Yii::app()->request->baseUrl
 * Если вы используете параметр $url - он будет добавлен как префикс к baseUrl.
 */
function bu($url=null)
{
    static $baseUrl;
    if ($baseUrl===null)
        $baseUrl=Yii::app()->request->baseUrl;
    return $url===null ? $baseUrl : $baseUrl.'/'.ltrim($url,'/');
}
 
/**
 * Быстрый доступ к Yii::app()->params[$name].
 */
function param($name)
{
    return Yii::app()->params[$name];
}
 
/**
 * Быстрый доступ к Yii::app()->user.
 */
function user()
{
    return Yii::app()->user;
}



Если хотите опубликовать этот материал у себя - пожалуйста, разместите ссылку на страницу откуда вы его взяли.
Другие yii статьи:

  1. Эта статья устарела т.к. была написана для yii версии 1.0.х; Если вы используете более новую версию - у вас могут ... "Добавляем Captcha на страницу"

  2. Александр Макаров на страницах yiiframework.ru опубликовал перевод очень хорошего рецепта. Хочу заметит что материал будет очень полезен для тех, кто ... "Краткий справочник по валидации форм"

  3. Сегодня мы разберем как подключать мою «математическую капчу» на обычный движок php магазина. Название движка я не знаю, да и ... "Подключаем yii капчу к сайту на другом движке"

andy_s

Было сказано: Четверг, 23 июля 2009

В духе иии можно было бы сделать класс - набор статических функций.

Получилось бы не так уж и длинно:
Y::user().

Но лично меня Yii::app()->user не очень напрягает. Сразу видно, что это за user (пользователь приложения Yii), да и переносимость не пострадает.

[adm] zolter

Было сказано: Четверг, 23 июля 2009

Если делать класс - то это менять шило на мыло :)

nagash

Было сказано: Среда, 09 сентября 2009

тогда мы теряем возможности для ide автозаполнения кода.

[guest] Гость

Было сказано: Понедельник, 28 сентября 2009

@nagash: это для каких это ide вы теряете автозаполнение? если правильно написать документацию к глобальным функциям, то всё будет работать как часы, приучайте себя к написанию документации в процессе

[guest] Ghost123

Было сказано: Вторник, 29 декабря 2009

Подскажите пожалуйста новичку. Вот Yii::app()->user это означает, что мы обращаемся к какому-то классу? и где он определяться должен ? Второй вопрос: у меня Yii::app()->request->baseUrl ничего не возвращает, то есть пустая строка в результате, хотя должен быть http://localhost как я понимаю. может урл должен быть в конфиге прописан ?

[guest] Гость

Было сказано: Четверг, 08 марта 2018

payday loans st louis <a href="http://installmentloans.bid">installment loans</a> installment loans <a href=http://installmentloans.bid>installment loans</a>

[guest] Гость

Было сказано: Среда, 14 марта 2018

guest test post
<a href=" http://temresults2018.com/ ">bbcode</a>
<a href="http://temresults2018.com/">html</a>
http://temresults2018.com/ simple

[guest] Гость

Было сказано: Пятница, 31 августа 2018

Some text genoffice@2short.us
<a href="mailto:genoffice@2short.us">genoffice@2short.us</a> [email]genoffice@2short.us[/emai]

[guest] Гость

Было сказано: Пятница, 19 октября 2018

poor credit loans guaranteed approval <a href="https://creditloansguaranteedapproval.com/">bad credit loans direct lenders</a> credit loans guaranteed approval <a href=https://creditloansguaranteedapproval.com/>bad credit loans direct lenders</a>

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


Код:
Имя: