хочется немного обсудить yii

korchasa

LIMB infected
grigori
Коллекции это понятно. Я про findOne, findById и прочие методы, которые могут вернуть только одну модель.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
думаю, я просто добавлю тут методы findObj($className), который всегда будет возвращать объект
и findByIdArr()
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
я хочу просто брать результат и работать с ним как с объектом, проверяя данные там, где хочу, а не там, где вызываю запрос
$Post = Posts::model()->findByID($id);
$TextParser = new TextParser($Post); // __construct(Posts $Post)

вместо
if ($Post !== null ){ $TextParser = new TextParser($Post);{
else{$TextParser = new TextParser(new Posts);}

для меня отсутствие данных - тоже данные, а не исключение
 

Long

Новичок
требование довольно специфическое
на мой взгляд, в обычной ситуации это абсолютно не мешает, работает прозрачно. а если возникает необходимость - само работает. а иначе зачем фреймворки? ;)

4. Где это можно увидеть?
а в CPagination методы setCurrentPage и getCurrentPage.
Вообще работа напрямую с $_GET меня как-то напрягает. Вообще, если подход с объектом запроса хотели бы использовать, то это пишется в самом начале - иначе потом придется слишком много мест менять. Так что не уверен насчет 2й версии :(

щас будет долгий флейм
ага, именно поэтому и не хочу углубляться в это. у классиков подробно и в деталях все преимущества описаны, не вижу даже смысла перетирать еще раз.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
>в обычной ситуации это абсолютно не мешает
предполагаю, что до тебя это никому было не нужно :)

>работа напрямую с $_GET меня как-то напрягает
еще как, я вообще привык к filter_*
 

korchasa

LIMB infected
grigori
15 минут строчил длинный комментарий, но решил короче: зачем создавать TextParser, если ему нечего парсить?

Ну и раз уж так хочется:
PHP:
$Post = Posts::model()->findByID($id);
$TextParser = new TextParser($Post ? $Post : new Post());
 

whirlwind

TDD infected, paranoid
http://www.yiiframework.com/doc/blog/1.1/ru/post.admin

PHP:
'value'=>'CHtml::link(CHtml::encode($data->title), $data->url)'
Это то, о чем я даже думать боюсь или мне показалось?

PS. нет я не ошибся
http://www.google.com/codesearch/p?hl=ru#XdEp59TvR34/trunk/framework/base/CComponent.php&q=CComponent package:http://yii\.googlecode\.com&sa=N&cd=1&ct=rc
PHP:
public function evaluateExpression($_expression_,$_data_=array())
        {
                if(is_string($_expression_))
                {
                        extract($_data_);
                        return eval('return '.$_expression_.';');
омг
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Это то, о чем я даже думать боюсь или мне показалось?
ты б ветку почитал, я как-раз вчера написал, что в этих случаях можно написать лямбду

zii в целом отстой, как и документация - пиши свои хелперы, читай исходники
 

MiksIr

miksir@home:~$
Так, еще раз. $param не относится к фильтру, вообще.
Так, еще раз.
В RBAC есть бизнес - правила. Туда можно передавать параметры. Yii::app()->user->checkAccess('updateOwnPost',$params)
Так же в Yii есть такая штука, как AccessFilter. Там можно ограничить доступ к экшенам по RBAC правилу.
Есть экшн - updatePost. Как записать доступ к этому экшену через AccessFilter? Да никак, потому-что нужно дать права на update для автора поста, для этого нужно проверить updateOwnPost, которому нужно $param. А его возможности передать - нет. В итоге нам придется в AccessFilter разрешать доступ для всех зарегистрированных пользователей, и писать дополнительные checkAccess в самом методе update.
И что ты сейчас пытаешься доказать?
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
grigori
15 минут строчил длинный комментарий, но решил короче: зачем создавать TextParser, если ему нечего парсить?
Он используется во View при генерации вывода. Я хочу не дублировать во view проверку наличия данных, а рассчитывать на пустую строку в поле объекта.
>new TextParser($Post ? $Post : new Post());
:D давай не будем обсуждать на какой строке скобку ставить.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
>И что ты сейчас пытаешься доказать?
Ничего, ты меня не понял. Я сразу сказал, что RBAC для этих целей не нужен. Или же ты просто пытаешься спорить о чем угодно ради самого процесса.
 

MiksIr

miksir@home:~$
спорьте. мне очевидны преимущества работы с объектами при использовании ОО подхода.
А как "ОО подход" соотносится с тем, что методы могут возвращать null или false?
Как раз null лучше, ибо заставляет помнить, что что-то может быть не найдено и что нужно это отработать. В отличии от пустого объекта.

рекомендую заглянуть в исходники CDbTransaction и обратить внимание на $_connection. Не надо принижать знания автора
Автор _НЕ_ЗНАЕТ_ с какой базой работает пользователь фреймворка. Автор использует PDO. И, рискну предположить, крутой автор не хочет писать слишком много зависимого от дб кода, хотя ему это и приходится делать. Из-за трех if-ов в вашем модуле, которые, при этом, четко покажут, что вы используете сейвпоинты, прям такие претензии.
 

fixxxer

К.О.
Партнер клуба
Про eval и лямбды. Оффтопик.

Как-то раз (то были времена 5.3.0-beta или даже -dev) я расковыривал мило криптованные исходники (стопицот вложенных base64+eval и типа того). Полное восстановление кода мне было нафиг не надо, просто подсмотреть пару моментов, потому, чтобы особо не париться, ткнул zend_printf(...) прям в zend_eval_что_то_там и пересобрал php. Пересобрал потом обратно, но бинарь обновить забыл. Запустив свой код с удивлением наблюдал вывод на экран сорцов уже использованных мной в паре мест Closure. Ковырять сорцы php не стал, но с тех пор этих closures побаиваюсь. :)
 

MiksIr

miksir@home:~$
Long
Ты можешь написать пример кода, где использование объекта, вместо null, давало бы какие-то плюсы? И что по твоему должно возвращаться? Пустой объект Article или специальный NullArticle?
Я вот, кстати, ошибаюсь, или в первом лимбе find если не нашел - возвращал пустой объект? ;)
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
MiksIr перечитай топик :) извини, мне больше неинтересна эта тема
 

MiksIr

miksir@home:~$
Я уже понял, что RBAC ты не использовал, а лучше будешь писать километровые expression.
Несомненно, это только украсит код. Ну, каждый говнокодит по-своему.
 

whirlwind

TDD infected, paranoid
ты б ветку почитал, я как-раз вчера написал, что в этих случаях можно написать лямбду

zii в целом отстой, как и документация - пиши свои хелперы, читай исходники
Ваши посты о каких-то частностях, мне в них вникать не очень интересно было. Я пробежался по туториалу, поглядел на код. Когда я увидел там сплошной статик, я подумал - фигня, не всем так нужен полиморфизм, как мне. Когда увидел кривую архитектуру из-за отсутствия TDD, я подумал - видал гораздо хуже. Но это - бомба замедленного действия, да еще и заложенная на уровне базового класса (что само по себе мягко говоря сомнительное решение). Тема про yii - вот я отпостил мнение о yii.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
да-да
не читал, но осуждаю!
было, помним

yii далеко не идеален, доки надо распечатать и засунуть автору в задницу
кое в чем он хорош, это явно не виджеты

он писался в 2008 - 2009м, когда 5.3 был в dev, и чувствуется, что архитектура на него рассчитана, но загуглив об этом не узнать
 
Сверху