Как стать автором
Обновить

Комментарии 30

Symfony — следует PSR-0 и использует composer.
Yii — следует PSR-0. composer, вполне вероятно, появится во второй версии.

FuelPHP пошел своим путём. PHP-style. Тем не менее удачи.
Хм, действительно. Возможно в статье стоило уделить больше внимания composer? Я, если честно, его проглядел и решил что у вас только oil.
Дополнение с нашего форума — Fuelphp переходит на psr-2 во второй версии и один из разрабов является действующим членом PSR (с правом голоса). Ответьте плиз, а то как-то в говно незаслуженно макают нас…
Возможно вы правы, composer не идет из коробки, поэтому не стал заострять внимание на этом моменте. Скажите проводите ли вы аналогию возможностей пакетов с DIC в Symfony2? Как считаете на сколько удобна реализация DIC в Symfony2?
Не могу объективно оценить Symfony 2 т.к. практически не работал с ним.
Судя по впечатлениям от Silex, библиотек SensioLabs и взаимодействия с ними это должно быть достаточно удобно.
Благодарю, но хотелось бы услышать мнение человека, который пишет код на Symfony2
Я пишу, только на Symfony2. Там это очень и очень удобно. Собственно, чего вы ожидали? :)
Ожидал более развернутого ответа.) Можете рассказать о плюсах и минусах более подробно?
О минусах не расскажу — я кроме DIC в Symfony больше с ним нигде не работал, но плюсов много. Когда перешел на службы — сразу десятки багов ушли, т.к. они были уже принципиально невозможны. Псоле переработки кода его стало возможно выносить в бандлы, т.к. зависимости прописаны. Сам код чище, т.к. часть сквозного функционала (но далеко не весь) уходит во вспомогательные сервисы.
А умеет ли FuelPHP компилировать контейнер?
Package DIC вроде умеет, но я не пользовался. Просто в bootstrap.php прописаны все загрузчики и службу не нужно предварительно загружать перед использованием, как в Symfony2
<?php
class HelloController extends Controller
{
    // ...

    public function sendEmailAction()
    {
        // ...
        $mailer = $this->get('my_mailer');
        $mailer->send('ryan@foobar.net', ... );
    }
}

В Fuel тоже самое было бы так
<?php
class HelloController extends Controller
{
    // ...

    public function sendEmailAction()
    {
        // ...
        \Namesp\My_mailer::forge()->send('ryan@foobar.net', ... );
    }
}
Простите, что? В Symfony2 не нужно загружать службу перед использованием. Причем, даже в вашем примере это видно:
$this->get('my_mailer')->send('ryan@foobar.net', ... );
Пример взят из документации, но вы правы, действительно можно и не загружать, как то не обратил внимания по началу. И все равно хотелось бы для себя прояснить преимущества DIC. Перешел на пакетно-ориентированную разработку недавно, и DIC не пользуюсь, а главное не вижу причин начинать. Можете для меня прояснить преимущества использования DIC? Может я чего то ещё не вижу, направьте хотябы, какие потенциальные проблемы могут ждать, если не использовать DIC?
Ну, скажем, легко находятся циркулярные зависимости (что есть плохо). Без DIC, мне кажется, это почти невозможно.
Не знаком с термином «циркулярные зависимости», в гугле тоже не обнаружил. Можно пример или как-то на пальцах рассказать, что это такое?
Понял теперь. Да, действительно штука полезная. Только наверное точнее будет «циклично» чем «циркулярно») Благодарю за ответы.
Реализация DIC в FuelPHP очень наивна, я бы даже сказал что это не DIC, а простой Service Locator.
— Не решает циркулярных зависимостей
— Не компилирует на ходу
— Не поддерживает вложенные зависимости
— Не поддерживает удобную конфигурацию, подмену зависимостей на ходу

Главный минус FuelPHP — когда их конкуренты вроде Laravel заимствуют сложные компоненты у старших братьев, разработчики FuelPHP все еще испытывают необходимость писать свой велосипед, вместо того чтобы концентрировать все внимание на какой-нибудь киллер фиче.
Его «киллер-фича» это главным образом простота и расширяемость. Когда нужен дополнительный функционал или замена существующему в виде давно придуманных велосипедов, то идем в google, ищем, выбираем по душе и через 10 минут имеем пакет для Fuelphp.

DIC в текущей версии Fuel — нет, следовательно и о реализации говорить пока рано. DIC «анонсирована» в альфа версии 2.0, её реализация может поменяться сто раз до выхода stable версии.
'NinjAuth\\Controller' — можно не дублировать бекслеши
это вопрос?
Да нет, просто заметил.
да работает и без дублирования, надо уточнить этот момент у разработчиков, возможно у них были какие то на то причины
Причина только в том, что двойные слэши ведут себя одинаково и в одинарных и в двойных кавычках
Это понятно, просто даже при двойных кавычках один бекслеш в такой строке
"NinjAuth\Controller"
будет вести себя также как и при двойном. Задал вопрос на форуме) Интересно же. Но я думаю причиной двойных бекслешей является желание сделать «понадежнее».
Вот ответ от Harro Verton:
In PHP strings, the backslash is an escape character, so you need to use two backslashes of you want to use a backslash in your string.

Now officially you only have to do this with strings in double quotes, and not for strings in single quotes.

However, it is our coding convention to do it everywhere to avoid confusion and mistakes.
А что насчет зависимостей в FuelPHP? Все через синглетоны и стат. методы?
Зависимостей нет и судя по roadmap разработчики обойдут их стороной даже в 2.0
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.