Как мы уже могли отметить в предыдущей главе, запуск Symfony-приложения означает загрузку ядра и обработку запроса или выполнение команд. В свою очередь, загрузка ядра означает загрузку всех бандлов и регистрацию их расширений сервисного контейнера (которые в любом бандле расположены в директории DependencyInjection).
Автор: editor
Подзапросы в Symfony
Вероятно, вы знаете о том, что при вызове метода HttpKernel::handle() вторым параметром идёт аргумент типа запроса — $type: public function handle( Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true ) { … }
Обработка исключений в Symfony 3.4
Не исключено, что в процессе долгого путешествия от запроса до ответа, возникнет та или иная ошибка. По умолчанию, ядро проинструктировано перехватывать любое исключение и даже после этого оно пытается подобрать подходящий для него ответ Response. Как мы уже видели, обработка каждого запроса обёрнута в блок try/catch:
События Symfony, приводящие к ответу
Метод handleRaw() класса HttpKernel — это замечательный пример кода, анализируя который, становится ясно, что алгоритм обработки запроса сам по себе не является детерминированным (т.е. допускает отклонения и изменения в процессе). Это означает, что у вас есть несколько различных способов для внедрения в этот процесс, путём которого вы можете полностью заменить или частично модифицировать ответ […]
Файловая система TxFS с поддержкой ACID-транзакций
Группа исследователей из Техасского университета в Остине разработала новую файловую систему TxFS, предоставляющую встроенную поддержку транзакций, удовлетворяющих требованиям ACID (атомарность, согласованность, изолированность, надежность). Код ФС доступен только в виде модифицированных исходных текстов ядра Linux 3.18, патчей для других версий пока нет. TxFS даёт возможность выполнить атомарное применение сразу группы операций над файлами. Например, в […]
Создание встраиваемых сценариев на языке Lua
В то время как интерпретируемые языки программирования, такие как Perl, Python, PHP и Ruby, пользуются все большей популярностью для Web-приложений (и уже давно предпочитаются для автоматизации задач по системному администрированию), компилируемые языки программирования, такие как C и C++, по-прежнему необходимы. Производительность компилируемых языков программирования остается несравнимой (она уступает только производительности […]
Как в PhpStorm обновить phpdoc и docblock
Допустим вы изменили сигнатуру функции или метода и PhpStorm стал подсвечивать docblock волнистой линией, намекая на то, что он не соответствует актуальной сигнатуре. И как быть, неужели править phpdoc ручками? К счастью, нет! Достаточно навести курсор на docblock и нажать комбинацию клавиш Alt + Enter для вызова меню Intention Actions. Как правило, […]
Как пишутся системы оплаты для сайта
Требуется написать систему оплаты для интернет-магазина (без посредников для каждого способа оплаты, т.е без робокассы, интеркассы и подобных сервисов). Из вариантов оплаты планируется visa, mastercard, yandex.money и webmoney. В качестве backend используется django (но это не так важно).
Как вывести текущий хэш коммита git-репозитория в приложении или на веб-сайте
Бывают ситуации, когда запиливаешь новый функционал или правишь старый, тестируешь — всё ок. А выкатываешь на продакшен — ничего не работает и вообще ощущение, будто изменения не накатились. Как быть уверенным, что на продакшене крутится именно тот код, который был на него залит? Одним из решений данной проблемы может стать […]
Как правильно читать файлы с помощью PHP
Одним из преимуществ работы с современными языками программирования, такими как PHP, является количество доступных возможностей. PHP легко мог бы присвоить девиз языка Perl, «Существует несколько способов сделать что-либо», особенно, когда речь идет об обработке файлов. Но при изобилии доступных средств, возникает вопрос, какое из них лучше для выполнения работы. Конечно, […]