Класс сокращалка для Yii Framework
В процессе написания проектов на Yii framework у меня собрался класс функций, которые постоянно приходится вызывать по ходу приложения.
class Y { /** * @return CApplication */ public static function app() { return Yii::app(); } /** * @return WebUser */ public static function user() { return Yii::app()->user; } /** * @return int ID текущего пользователя */ public static function userId() { return Yii::app()->user->id; } /** * @return bool true если пользователь авторизирован */ public static function isLogged() { return !Yii::app()->user->isGuest; } /** * @return bool true если пользователь не авторизирован */ public static function isGuest() { return Yii::app()->user->isGuest; } /** * @return CDateFormatter */ public static function df() { return Yii::app()->dateFormatter; } /** * @return CHttpRequest */ public static function request() { return Yii::app()->request; } /** * Проверка наличия роли у текущего пользователя * * @param string $roleName * @return bool * @throws AppException */ public static function checkAccess($roleName = null) { if (!$roleName) { throw new CException('Неизвестное название роли'); } return Yii::app()->user->checkAccess($roleName); } /** * @return mixed значение параметра из Yii::app()->params * @throws CException */ public static function param($param = null) { if (empty($param)) { return false; } if (strpos($param, ".")) { $name = explode(".", $param); } else { $name = array($param); } switch (count($name)) { case 3: if (isset(Yii::app()->params[$name[0]][$name[1]][$name[2]])) { return Yii::app()->params[$name[0]][$name[1]][$name[2]]; } break; case 2: if (isset(Yii::app()->params[$name[0]][$name[1]])) { return Yii::app()->params[$name[0]][$name[1]]; } break; case 1: if (isset(Yii::app()->params[$name[0]])) { return Yii::app()->params[$name[0]]; } break; default: throw new CException('Слишком много уровней'); } return null; } /** * Перевод сообщения * * @see Yii::t * @return string */ public static function t($category, $message, $params = array(), $source = null, $language = null) { return Yii::t($category, $message, $params, $source, $language); } /** * Сокращение для функции dump класса CVarDumper для отладки приложения * * @param mixed $var * @param bool $toDie завершить приложение после вывода */ public static function dump($var, $toDie = true) { echo "<pre>"; CVarDumper::dump($var, 10, true); echo "</pre>"; if ($toDie) { Yii::app()->end(); } } /** * Выводит текст и завершает приложение (применяется в ajax-действиях) * * @param string $text */ public static function end($text = '') { echo $text; Yii::app()->end(); } /** * Выводит данные в формате JSON и завершает приложение (применяется в ajax-действиях) * * @param string $data */ public static function endJson($data) { echo CJSON::encode($data); Yii::app()->end(); } }
Отдельного внимания заслуживает функция params() – это аналог из CakePHP функции Configure::read(), собственно код оттуда и позаимствован.
Использование для вложенных массивов в конфигурации:
Yii::app()->params[‘Media’][‘Foto’][‘thumbsize’];
C использованием Y:
Y::param('Media.Foto.thumbsize')
Со временем будет выложена новая версия данного класса.