Y - класс-ярлык для часто употребляемых выражений
- Svyatov
- Сообщения: 459
- Зарегистрирован: 2010.08.12, 14:50
- Откуда: Санкт-Петербург
- Контактная информация:
Y - класс-ярлык для часто употребляемых выражений
День добрый, коллеги. После того, как я некоторое время тщательно поюзал Yii, я подумал, что писать выражения типа Yii::app()->request->redirect(...) долго и неэффективно и реализовал свой класс-ярлык с лаконичным именем "Y" для быстрого доступа к наиболее употребибым выражениям.
Тут я подобного не видел, видимо все используют свои велосипеды или не используют такой подход вовсе. С удовольствием выслушаю критику, предложения и замечания, может подскажите более эффективную реализацию. Возможно кому-то пригодится. Лично я нахожу это очень удобным.
http://github.com/Svyatov/Yii-Shortcut
История изменений: https://github.com/Svyatov/Yii-shortcut ... /README.md
Тут я подобного не видел, видимо все используют свои велосипеды или не используют такой подход вовсе. С удовольствием выслушаю критику, предложения и замечания, может подскажите более эффективную реализацию. Возможно кому-то пригодится. Лично я нахожу это очень удобным.
http://github.com/Svyatov/Yii-Shortcut
История изменений: https://github.com/Svyatov/Yii-shortcut ... /README.md
Последний раз редактировалось Svyatov 2011.10.20, 16:35, всего редактировалось 6 раз.
- Svyatov
- Сообщения: 459
- Зарегистрирован: 2010.08.12, 14:50
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Y - класс-ярлык для часто употребляемых выражений
Если кто не понял, зачем это нужно и как использовать, привожу примеры:
1) в виджете нам нужно создать урл по роуту
2) достаем/устанавлием значение какого-то кэша
3) с куками аналогично;
4) достаем значение CSRF токена для вставки в форму или для ajax-запроса
5) надо передать параметр CSRF в ajax-запросе jQuery?
6) быстрый дамп с подсветкой:
7) выводим результат действия для ajax-запроса
8) редиректы
9) определение статуса текущего юзера (авторизован или нет)
Ну вот примерно так. Как видите количество кода сокращается минимум в 2 раза, что соответственно сокращает минимум в 2 раза время на его написание.
1) в виджете нам нужно создать урл по роуту
Код: Выделить всё
// стандартная запись
Yii::app()->controller->createUrl(...);
// мой класс
Y::url(...);
Код: Выделить всё
// стандартная запись
Yii::app()->cache->get(...);
Yii::app()->cache->set(...);
// мой класс
Y::cacheGet(...);
Y::cacheSet(...);
4) достаем значение CSRF токена для вставки в форму или для ajax-запроса
Код: Выделить всё
// стандартная запись
Yii::app()->request->csrfToken;
// мой класс
Y::csrf();
Код: Выделить всё
// стандартная запись
<script>
$.post('/bla/bla', {<?=Yii::app()->request->csrfTokenName;?>: '<?=Yii::app()->request->csrfToken;?>', ...} ... );
</script>
// мой класс
<script>
$.post('/bla/bla', {<?=Y::csrfJsParam();?>, ...} ... );
</script>
Код: Выделить всё
// стандартная запись
echo '<pre>';
CVarDumper::dump(...);
Yii::app()->end();
// мой класс
Y::dump(...);
Код: Выделить всё
// стандартная запись
echo $result;
Yii::app()->end();
// или
echo json_encode($result);
Yii::app()->end();
// мой класс
Y::end($result);
// или соответственно
Y::endJson($result);
Код: Выделить всё
// стандартная запись
$this->redirect($this->createUrl(...)); // самая короткая запись
Yii::app()->request->redirect(Yii::app()->controller->createUrl(...)); // а это для компонента, например
// мой класс
Y::redir(...); // можно использовать в любом месте одинаково
Код: Выделить всё
// стандартная запись
if (Yii::app()->user->isGuest) ... // если гость
// или
if (!Yii::app()->user->isGuest) ... // если авторизован
// мой класс
if (Y::isGuest()) ... // гость
// или
if (Y::isAuthed()) ... // авторизован
// можно было обойтись одним методом, но так нагляднее получается код
Re: Y - класс-ярлык для часто употребляемых выражений
Спасибо. Все руки не доходили написать что-то подобное
-
- Сообщения: 350
- Зарегистрирован: 2009.09.17, 16:47
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Y - класс-ярлык для часто употребляемых выражений
Часто использую "шоты", есть такой же класс, только называется PY))
Еще бы добавил: Yii::app()->request->getParam('nameParam'), в моем случае PY::p('paramName'), в твоем видимо Y::param('paramName');
Еще бы добавил: Yii::app()->request->getParam('nameParam'), в моем случае PY::p('paramName'), в твоем видимо Y::param('paramName');
Предупрежден - значит вооружен.
devKP.ru
devKP.ru
Re: Y - класс-ярлык для часто употребляемых выражений
сейчас ковыряю Джангу, там есть очень полезная идиома - "Получить объект или выкинуть 404 ошибку".
Делается примерно вот так:
Ну и еще куча аналогичных. Очень удобно и быстро. Вообще для Yii хотелось бы увидеть что-то типа "полуофициального" модуля вот с такими вот шорткатами.
Думаю, что всем полезно будет.
Делается примерно вот так:
Код: Выделить всё
user = get_object_or_404(User,pk=1)
Думаю, что всем полезно будет.
Re: Y - класс-ярлык для часто употребляемых выражений
насколько понимаю, сейчас это происходит через константу в входном скрипте YII_DEBUG . Пользователю не нужно видеть ексепшены ^^ не нужная ему информация или очень нужная для злоумышлиника.
- Svyatov
- Сообщения: 459
- Зарегистрирован: 2010.08.12, 14:50
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Y - класс-ярлык для часто употребляемых выражений
Yii::app()->request->getParam('nameParam') к Yii непосредственно не относится и реализован мной в другом классе, который предоставляет шорткаты для функционала от Yii не зависящего.SpiLLeR писал(а):Часто использую "шоты", есть такой же класс, только называется PY))
Еще бы добавил: Yii::app()->request->getParam('nameParam'), в моем случае PY::p('paramName'), в твоем видимо Y::param('paramName');
Вообще в проектах использую 3 класса обычно:
1) этот;
2) класс, который реализует назависимый от Yii функционал (типа того же getParam);
3) класс, который реализует какой-то общий для данного конкретного приложения функционал.
Такой подход позволяет таскать из проекта в проект первые два класса (а второй так вообще куда угодно), и минимизировать объем третьего класса
- slavcodev
- Сообщения: 3134
- Зарегистрирован: 2009.04.02, 21:42
- Откуда: Valencia
- Контактная информация:
Re: Y - класс-ярлык для часто употребляемых выражений
Какое-то странное впечатление у меня к таким "шотам". Вроде ничего плохого нельзя сказать, но кажется мне это без полезным. Не легче юзать макросы своей любимой IDE ?
Жду Yii 3!
- Svyatov
- Сообщения: 459
- Зарегистрирован: 2010.08.12, 14:50
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Y - класс-ярлык для часто употребляемых выражений
На вкус и цвет... Я не вижу пользы писать ленты кода, от которых рябит в глазах, если тоже самое можно обозначить коротко и ясно. Макросы - это конечно хорошо, но проблему лаконичности они не решают, а кроме того никак не помогут исправить один файлик из блокнота (например). Да и вообще, класс с автокомплитом не забивает память ненужной информацией, которую приходится помнить, если юзать макросы. Но все это дело вкуса.mc-bear писал(а):Какое-то странное впечатление у меня к таким "шотам". Вроде ничего плохого нельзя сказать, но кажется мне это без полезным. Не легче юзать макросы своей любимой IDE ?
- slavcodev
- Сообщения: 3134
- Зарегистрирован: 2009.04.02, 21:42
- Откуда: Valencia
- Контактная информация:
Re: Y - класс-ярлык для часто употребляемых выражений
Согласен. На вкус и цвет... а вот если код нужно будет справлять кому-то другому? ему нужно будет запоминать сокращения, вместо привычных для него АПИ фреймворка. И вообще сокращения ведь для каждого свои удобны. Другое дело если бы это было официально, и придерживалось какому-то стандарту.
Жду Yii 3!
- Svyatov
- Сообщения: 459
- Зарегистрирован: 2010.08.12, 14:50
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Y - класс-ярлык для часто употребляемых выражений
Согласен, стандартизировать это было бы замечательно. Ну в любом случая я постарался сделать действительно сокращения, а не переименовать все в одну буквуmc-bear писал(а):Согласен. На вкус и цвет... а вот если код нужно будет справлять кому-то другому? ему нужно будет запоминать сокращения, вместо привычных для него АПИ фреймворка. И вообще сокращения ведь для каждого свои удобны. Другое дело если бы это было официально, и придерживалось какому-то стандарту.
Re: Y - класс-ярлык для часто употребляемых выражений
Мне эта идея кажется хорошей, прилично времени экономит.
- Svyatov
- Сообщения: 459
- Зарегистрирован: 2010.08.12, 14:50
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Y - класс-ярлык для часто употребляемых выражений
Да и читаемость кода повышается. Все-таки короткую фразу легче сразу уловить.gashek писал(а):Мне эта идея кажется хорошей, прилично времени экономит.
- sergebezborodov
- Сообщения: 133
- Зарегистрирован: 2010.06.10, 19:53
- Откуда: Dnepropetrovsk-Sevastopol, UA
- Контактная информация:
Re: Y - класс-ярлык для часто употребляемых выражений
Добавляю свою лепту в сокращалки
http://sergebezborodov.com/blog/yii-fra ... ework.html
http://sergebezborodov.com/blog/yii-fra ... ework.html
A passion to perform
http://sergebezborodov.com
http://sergebezborodov.com
- Svyatov
- Сообщения: 459
- Зарегистрирован: 2010.08.12, 14:50
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Y - класс-ярлык для часто употребляемых выражений
Интересная реализация параметров, и checkAccess надо добавить, да. Попозже обновлю свой класс, спасибо!
- sergebezborodov
- Сообщения: 133
- Зарегистрирован: 2010.06.10, 19:53
- Откуда: Dnepropetrovsk-Sevastopol, UA
- Контактная информация:
Re: Y - класс-ярлык для часто употребляемых выражений
Может стоит выдвинуть идею добавить объединенную сокращалку в YiiExt?
A passion to perform
http://sergebezborodov.com
http://sergebezborodov.com
- Svyatov
- Сообщения: 459
- Зарегистрирован: 2010.08.12, 14:50
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Y - класс-ярлык для часто употребляемых выражений
Можно, хотя это все-таки не совсем расширение Мне кажется большинство пишет свои велосипеды, потому что свое роднее Вот если бы это вообще в официальную версию включить, тогда да.sergebezborodov писал(а):Может стоит выдвинуть идею добавить объединенную сокращалку в YiiExt?
Кстати, обновил свой класс. Функцию param() реализовал по-другому, кроме краткости и отсутствия ограничения на вложенность она еще и быстрее в случае первого уровня на >100%, в остальных случаях на 10-20%
- sergebezborodov
- Сообщения: 133
- Зарегистрирован: 2010.06.10, 19:53
- Откуда: Dnepropetrovsk-Sevastopol, UA
- Контактная информация:
Re: Y - класс-ярлык для часто употребляемых выражений
Хорошая реализация param, я свой брал из кейка, за неимением времени оставил как есть.
Возьму Ваш код на вооружение
Возьму Ваш код на вооружение
A passion to perform
http://sergebezborodov.com
http://sergebezborodov.com
- Svyatov
- Сообщения: 459
- Зарегистрирован: 2010.08.12, 14:50
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Y - класс-ярлык для часто употребляемых выражений
Ой, хорошо заметил - там ошибка в самом начале функции: if (!strpos('.', $key)) надо заменить на if (strpos($key, '.') === false) - напутал