Хочешь свой фреймворк – их есть у меня!..

… Сказал Фабиен Потенсье:

А зачем мне это надо – свой фреймворк?

Почему вам может захотеться создать ваш собственный фреймворк? Если вы оглядитесь вокруг – все будут вам говорить, что не стоит изобретать колесо, что вам лучше выбрать фреймворк из существующих и забыть про создание чего-то своего. И таки да, в основном они все правы, но я хочу вам предложить несколько причин, по котором стоит заняться созданием своего фреймворка. Итак, я хочу создать свой фреймворк чтобы:

  • Изучить низкоуровневую архитектуру современных web-фреймворков в общем и о Symfony2 в частности;
  • Создать фреймворк для некоторой особенной задачи (просто удостоверьтесь заранее, что ваша задача действительно особенная);
  • Провести эксперимент для удовольствия (метод учись-и-пробуй);
  • Провести рефакторинг старого/существующего приложения, которому нужен большой глоток современных практик web-разработки;
  • Доказать всем, что вы можете самостоятельно создать фреймворк (… ну может только слегка напрягшись)).

Пруф

UPDATE1: вторая часть статьи (работаем с компонентом Symfony2 HttpFoundation)

UPDATE2: третья часть статьи (Request & Response в действии)

UPDATE3: четвёртая часть статьи (подключаем Routing)

Слайдкаст Игоря бондаренко с SQADays’10: тестирование защищенности веб приложений

Данный слайдкаст будет прежде всего полезен начинающим (а также более матёрым – которые ранее не сталкивались с тестированием безопасности) тестировщикам, а также веб-разработчикам начинающего уровня, чтобы понимать как их код будут ломать коллеги из QA, а также злодеи-анонимусы:

Continue reading

Symfony2 Глоссарий

Для того чтобы эффективно общаться между собой, люди (и программисты не исключение) заранее договариваются о некоторой базовой терминологии, поэтому перевод Symfony2 the Book, я хочу начать с небольшого глоссария, терминологию которого я буду использовать в дальнейшем.

Continue reading

Symfony 2: конфигурирование пакетов

Для обеспечения большей гибкости, пакет (bundle) может содержать ряд конфигурационных настроек, используя встроенный механизм Symfony2.

Простая конфигурация

Для простой конфигурации можно воспользоваться разделом parameters, по-умолчанию присутствующим в конфигурации Symfony2. Параметры – это простые пары ключ-значение; значением может быть любое валидное значение с точки зрения PHP. Каждое наименование параметра должно начинаться с наименования пакета в нижнем регистре (hello для HelloBundle, или sensio.social.blog для SensioSocialBlogBundle).

Continue reading

( PHP CLI & eAccelerator ) != love

На днях встал вопрос об оптимизации запуска cron-скриптов. Подавляющая часть – это таски symfony (т.е. выполняется что-то типа ./symfony namespace:taskname params) и даже в условиях использования nice они создают приличный оверхед на сервер.

В ходе разбора полетов решил уяснить, работает ли eAccelerator c php-cli. Собственно с подсказки @ibulatenko забрел на страницу http://eaccelerator.net/wiki/Faq, на которой черным по вебу написано в самом низу страницы:

Is eAccelerator working with php-cgi or php-cli?
This is not yet supported and it won’t be supported in the near future. However FastCGI is supported.

P.S. Судя по всему ни один акселератор не работает при использовании CLI интерфейса (по крайней мере точно известно про XCache, при этом там также написано что поскольку у CLI совершенно другой принцип работы, то и ожидать не стоит).

Symfony 2: пакеты, практические рекомендации

Пакет – прежде всего это директория, которая имеет строго определенную структуру и может содержать все что угодно (от классов, до контроллеров и web-ресурсов). Не смотря на то что пакеты очень гибки, вы должны следовать некоторым рекомендациям (best practices), если вы хотите выложить его в общий доступ. Об этих практиках мы и поговорим ниже:

Continue reading

Symfony 2 для разработчиков на symfony 1.x

Symfony 2.0 по сравнению с первой версией фреймворка шагнул далеко вперед. К счастью, MVC архитектура, лежащая в основе его ядра, позволяет использовать те же навыки, что вы использовали, разрабатывая приложения для symfony1 и для Symfony2. App.yml вы конечно тут не увидите, но маршрутизация, контроллеры и шаблоны сохранились.

В этой статье мы рассмотрим ключевые отличия между symfony1 and Symfony2. Как вы сможете увидеть, многие задачи там решаются несколько иными путями. И вы научитесь ценить эти небольшие изменения, так как они позволят вам разрабатывать стабильный, предсказуемый, тестируемый и независимый код в ваших будущих приложениях на Symfony2.

Итак, расслабьтесь, и внимайте.

Continue reading

Symfony без слэша на хвосте

Часто-часто задаваемый вопрос в канале по symfony:

  • как избавиться от слэша на конце URL
  • почему DoctrineRouteCollection не принимает последний слэш
  • и т.д. в том же духе

Так вот вам просто сниппет в помощь:

#to avoid trailing slash problem
RewriteRule ^(.+)/$ http://%{HTTP_HOST}/$1 [R=301,L]

Научной ценности сниппет не представляет, но вопрос действительно часто спрашиваемый ) Так что “ищите и обрящете” ))

Have fun!

Symfony 2.0 – быстрый тур – архитектура/the architecture (часть 5)

Первые 4 части этого руководства позволили составить обще представление о Symfony 2.0. Но они не останавливаются на структуре директорий проекта. Поскольку это одна из отличительных особенностей Symfony, давайте-ка остановимся на этом подробнее.

Continue reading

Symfony 2.0 – быстрый тур – пакеты/the bundles (часть 4)

Обновление от Августа 2016: перевод документации Symfony 2 на русский опубликован в виде бесплатной книги на сайте Leanpub. Узнать подробности.

А вот и вы, мой герой ) Ну кто бы мог подумать, что вы все еще будете с нами после первых трех частей ) Однако же, ваши усилия скоро будут щедро вознаграждены. В этой части мы коснемся пожалуй самой мощной функции Symfony – системы пакетов (bundles).

Continue reading