Класс сокращалка для 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')

Со временем будет выложена новая версия данного класса.

  • 15.12.2010
  • Yii
  • http://buzzman.ru/ Nikita

    Может добавите файл для скачивания и укажите как его подключить? Просто напросто парсер вашего блога съел пару символов и класс вцелом может работает некорректно.

  • http://sergebezborodov.com Serge Bezborodov

    В ближайшее время выложу более дополненную версию, которую сейчас использую
    заодно напишу примеры использования

  • Andrey

    public static function param($path)
    {
    $path=str_replace(‘.’,»‘]['",$path);
    eval("$value=Yii::app()->params['{$path}'];»);

    return $value;
    }