Pull to refresh

Comments 15

Сперва подумал, что это первоапрельская шутка, потом посмотрел — и правда 3.0 вышел :)
Эксгумировали и вернули к жизни? Внезапно.
UFO just landed and posted this here
Тройка отлаживалась и допиливалась очень долго, поскольку EllisLab искали, кому отдать фрэймворк. Отставание по новшествам от ларавелей очевидно, но CI по прежнему небольшой, быстрый, простой в изучении и хорошо документированный. Зимой Codeigniter сменил владельца (British Columbia Institute of Technology) и зашевелился.
Иногда они возвращаются снова… вчера ещё CakePHP 3.0.0 вышел
Я заядлый поклонник Fuelphp. Никак не могу понять зачем продолжать развивать проект CI «по новой», если уже много лет есть более развитый форк от CI — хорошо протестированный Fuelphp?

Откуда такие положительные эмоции от фреймворка? После небольшого знакомства остались только негативные эмоции. Из того что помню:

Auth::get_user_id(), вполне адекватно названный метод, только возвращает он не user_id как ожидается, а внимание(!), array([0]=>driver_id, [1]=>user_id). Возвращается массив вместо ожидаемого скаляра, ладно, но они что не читали дядюшку Макконнелла, который писал что магические константы — это зло (Хотя бы добавили именованные константы array([Auth::DRIVER_ID]=>driver_id)? Приходится писать Auth::get_user_id()[1]. По всему фреймворку подобных мест уйма.
— Многие «особенности» работы таких компонетов как View, Model, Caching могут создавать дикие лулзы:

$client = Model_Client::find(1);
echo $client->message->text; // '{"text":"hello"}'
echo View::forge('view', $client); // empty view
$client = Model_Client::find(1, array('from_cache' => false));
echo $client->message->text; // '{&quottext&quot:&quothello&quot}'

Что здесь произошло?
1 Мы достали клиента, передали его в пустую вьюху
2 Повторно считываем клиента, принудительно указывая не использовать данные из кэша (для справки, между пунктом 1 и 2, никаких модификаций $client и связанных объектов не происходило)
3 Выводим $client->message->text, и видим что произошла модификация содержимого, при том, что никаких изменений мы не вносили.

Дело в том, что вьюха для всех полей объекта делает safeoutput in-place, то есть меняет на ходу нашу модель(!). Как можно ожидать от вьхи такое поведение? Сохранения после safeoutput'a не происходит, казалось бы при повторном запросе из бд (минуя кэш), мы получаем неизмененный объект, однако, флаг 'from_cache' => false, распространяется только на сам объект, поведения чтения подчиненных объектов изменить нельзя (будут браться из кэша, получим поломанный вьюхой json).

В официальной IRC'e по подву in-pace safeoutput'a идут горячие споры между разработчиками, но воз и ныне там.
Не заэкранировал &quоt, вот правильный код:
$client = Model_Client::find(1);
echo $client->message->text; // '{"text":"hello"}'
echo View::forge('view', $client); // empty view
$client = Model_Client::find(1, array('from_cache' => false));
echo $client->message->text; // '{&quоttext&quot:&quоthello&quоt}'
>> CI-прежнему будет работать на PHP 5.2.4
Но зачем??? Кто целевая аудитория такой «поддержки»?
UFO just landed and posted this here
На github в описании проекта указано следующее:
It should work on 5.2.4 as well, but we strongly advise you NOT to run such old versions of PHP, because of potential security and performance issues, as well as missing features.

Поддержки нет, но работать должно.
Наличие такой «поддержки» и вообще возможности работы на 5.2 — это повод навсегда забыть такой «фреймворк»
как я вижу, psr-1 не поддерживается. Что с остальными рекомендациями?
Что бы от CI вышло хорошый фреймворк, нужно переписать его с нуля. ИМХО
и получить Kohana :)

Kohana 2.0 это и был переписанный в ООП стиле CI
Sign up to leave a comment.

Articles