Symfony
Spring Framework inspired
開発者はFabien Potencier
PHPのWeb Framework
サービス指向アーキテクチャである
2021/3/17現在はv5.2.5
github
The Symfony Book
Symfony Best Practices
services.yml
SymfonyのForm
SymfonyのController
SymfonyのCommand
SymfonyのSession管理
Symfonyの権限
install
$ composer create-project symfony/skeleton trial-symfony
project作成
$ curl -sS https://get.symfony.com/cli/installer | bash
symfonyをlocalにinstallしないといけない
pathを通すなどをする
$ symfony server:start
起動
Symafonyの微妙な点
めちゃくちゃあるがmrsekut.icon
Symfonyでまともなmodelingはできるのか?
MakerBundle
docs
CLIからControllerやEntiry等を作成したりできる
$ php bin/console list make
利用可能なコマンド一覧を表示
$ php bin/console make:controller HogeController
HogeControllerを作成
Template
twig
https://symfony.com/doc/3.4/templating.html
1ページまるごと返すことが前提?
controllerのactionのアノテーションで指定するのと、this->renderで指定するやつの違いは何?
https://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/annotations/view.html
http://php-sql-gdgd.jugem.jp/?eid=101
そのactionを別のactionで呼び出す時に返り値がresponseだけで扱いやすい
@Templateを書くとactionの返り値はresponseだけが明示されることになる
twigを返していることがわかりにくい
ただPHPはもはやその次元にいないのでこの程度の「わかりにくさ」は無視できる気がするなmrsekut.icon
どこに書いているのか知らんけど@Templateはアンチパターンらしいな
https://hanahirodev.hatenablog.com/entry/20161102/1478091790
https://hanahirodev.hatenablog.com/entry/20161116/1479229851
https://symfony.com/doc/3.4/best_practices/templates.html
Serializer Component
https://symfony.com/doc/3.4/components/serializer.html
https://symfony.com/doc/3.4/serializer.html
PHPのserialize
Service Class
Service Containerに存在する
https://zetcode.com/symfony/service/
Securiy Bundle
Symfonyのsecuriy.yaml
Response Class
docs
SymfonyのRequestクラス
SymfonyのLogging
https://symfony.com/doc/3.4/logging.html
Monolog
inspired Logbook
Handler
ログの出力する機能です。
日本語おかしくない??mrsekut.icon
例
普通にファイルに出力したければStreamHandler
メールにログを出力したければSwiftMailerHandler
Formatter
Handlerが出力する際のフォーマット設定機能
例
通常の行formatで出力したいときはLineFormatter
JSON形式で出力したい場合はJsonFormatter
Processor
メッセージに付加情報を追加する
通常は「message」を指定してログ出力することになりますが、
セッショントークンなど付加情報を自動で出力したい場合、Processor機能を利用することで
拡張領域の「extra」に セッショントークンを設定してFormatterで出力します。
sufixに~Processorとついているclassがこれなのか #??
https://engineering.otobank.co.jp/entry/symfony-console-command-name-monolog
#古い情報
SensioGeneratorBundle
CLIでControllerを作るやつ
廃止されている
代わりにMakerBundleを使う
$ php app/console
代わりにphp bin/consoleを使う
VSCode Extension
https://marketplace.visualstudio.com/items?itemName=TheNouillet.symfony-vscode
https://www.shuwasystem.co.jp/book/9784798056692.html
v4系の本
https://zenn.dev/ttskch/books/2fa3612c68c2d9
symfonyやる時に毎回やってること
zennの本