こんにちは!Symfonyアドベントカレンダー 6日目です
初参戦です!よろしくお願いします
さて、私自身Symfonyを使い始めて早5ヶ月が経ちました。そこで、よく使っている便利なSymfonyコマンドを紹介しようと思います。
初心者向けですが、もしかしたら知らないコマンドがあるかもしれません!新しい発見があると嬉しいです
※ Symfony4用に bin/console
としていますが、app/console
に置き換えれば大体がSymfony2でも使えると思います。
おなじみ系
まずは、Symfonyを使う上で絶対通るであろう「おなじみ系」コマンドです。
「なんか、更新されないなー」ってときは、とりあえずcache:clear
してます。 (省略してc:c
でもできちゃいます)
$ bin/console cache:clear
…キャッシュを削除する
$ bin/console list
または $ bin/console
…使用可能コマンド一覧を表示する(設定ファイルにエラーがないかの確認にも使えます )
lint系
次に、ファイルの構文チェックをしてくれる「lint系」コマンドです。
オフライン環境でブラウザチェックができない時には、使えるコマンドだと思います。
$ bin/console lint:yaml [file_name]
…yamlファイルのlintチェックをする
- NGな時(下記エラーでは、1行目のインデントがおかしいのが一目瞭然ですね)
$ bin/console lint:yaml config/routes.yaml
ERROR in config/routes.yaml
>> Unable to parse at line 1 (near " index:").
[WARNING] 0 YAML files have valid syntax and 1 contain errors.
- OKな時
$ bin/console lint:yaml config/routes.yaml
[OK] All 1 YAML files contain valid syntax.
$ bin/console lint:twig [file_name]
…twigファイルのlintチェックをする
- NGな時
$ bin/console lint:twig templates/base.html.twig
ERROR in templates/base.html.twig (line 5)
3 <head>
4 <meta charset="UTF-8">
>> 5 <title>Welcome!{% endblock %}</title>
>> Unknown "endblock" tag.
6 {% block stylesheets %}{% endblock %}
7 </head>
OKな時は、link:twig
と同じような感じです。
debug系
次は、「debug系」コマンドです。
新たにサービスやパラメータ、ルートを登録した際に、きちんと意図した通り登録できているかをチェックする時に私はよく使います。
他にも、パス → 該当コントローラクラスまたはその逆を調べる時などに便利です。
$ bin/console debug:container [sevice_id]
…サービスID → サービス情報(クラスなど)を確認する
$ bin/console debug:container doctrine.orm.entity_manager
// This service is a public alias for the service doctrine.orm.default_entity_manager
Information for Service "doctrine.orm.default_entity_manager"
=============================================================
The EntityManager is the central access point to ORM functionality.
---------------- -------------------------------------
Option Value
---------------- -------------------------------------
Service ID doctrine.orm.default_entity_manager
Class Doctrine\ORM\EntityManager
Tags -
Public yes
Synthetic no
Lazy yes
Shared yes
Abstract no
Autowired no
Autoconfigured no
Factory Class Doctrine\ORM\EntityManager
Factory Method create
---------------- -------------------------------------
$ bin/console debug:container --parameter=[parameter_name]
…パラメータ値を取得する
$ bin/console debug:container --parameter=kernel.cache_dir
------------------ -------------------------------------------------------
Parameter Value
------------------ -------------------------------------------------------
kernel.cache_dir /path/to/project/var/cache/dev
------------------ -------------------------------------------------------
$ bin/console debug:route [route_name]
…ルート名 → パスやメソッド、クラスを確認する
$ bin/console debug:route _twig_error_test
+--------------+--------------------------------------------------------------------+
| Property | Value |
+--------------+--------------------------------------------------------------------+
| Route Name | _twig_error_test |
| Path | /_error/{code}.{_format} |
| Path Regex | #^/_error/(?P<code>\d+)(?:\.(?P<_format>[^/]++))?$#sDu |
| Host | ANY |
| Host Regex | |
| Scheme | ANY |
| Method | ANY |
| Requirements | code: \d+ |
| Class | Symfony\Component\Routing\Route |
| Defaults | _controller: twig.controller.preview_error::previewErrorPageAction |
| | _format: html |
| Options | compiler_class: Symfony\Component\Routing\RouteCompiler |
| | utf8: true |
+--------------+--------------------------------------------------------------------+
$ bin/console router:match router:match [path]
…パス → ルート名やメソッド、クラスを確認する
$ bin/console router:match /_error/123.csv
[OK] Route "_twig_error_test" matches
+--------------+--------------------------------------------------------------------+
| Property | Value |
+--------------+--------------------------------------------------------------------+
| Route Name | _twig_error_test |
| Path | /_error/{code}.{_format} |
| Path Regex | #^/_error/(?P<code>\d+)(?:\.(?P<_format>[^/]++))?$#sDu |
| Host | ANY |
| Host Regex | |
| Scheme | ANY |
| Method | ANY |
| Requirements | code: \d+ |
| Class | Symfony\Component\Routing\Route |
| Defaults | _controller: twig.controller.preview_error::previewErrorPageAction |
| | _format: html |
| Options | compiler_class: Symfony\Component\Routing\RouteCompiler |
| | utf8: true |
+--------------+--------------------------------------------------------------------+
$ bin/console debug:twig --filter=[word]
…twigで使える関数を確認する
例) twigでdump関数が使えるのかを知りたい → dump()
が表示されたので使えそうですね
$ bin/console debug:twig --filter=dump
Functions
---------
* dump()
* profiler_dump(data, maxDepth = 0)
* profiler_dump_log(message, context = null)
...
doctrine系
最後に、「doctrine系」コマンドです。
$ bin/console doctrine:schema:validate
…エンティティとDBが同期されているかを調べる
- 同期されている時
$ bin/console doctrine:schema:validate
Mapping
-------
[OK] The mapping files are correct.
Database
--------
[OK] The database schema is in sync with the mapping files.
- DBが同期されていない時
$ php bin/console doctrine:schema:validate
Mapping
-------
[OK] The mapping files are correct.
Database
--------
[ERROR] The database schema is not in sync with the current mapping file.
$ php bin/console doctrine:schema:update
…エンティティとDBを同期する、差分を確認する
- エンティティとDBを同期する前に、差分(SQL)を確認したい時
$ php bin/console doctrine:schema:update --dump-sql
The following SQL statements will be executed:
CREATE TABLE user (id INT AUTO_INCREMENT NOT NULL, email VARCHAR(180) NOT NULL, ...
- 強制的に同期したい時
$ php bin/console doctrine:schema:update --force
Updating database schema...
1 query was executed
[OK] Database schema updated successfully!
さいごに
いかがでしたでしょうか、全部知っていたらごめんなさいw
よく使うけど覚えられないものはエイリアスを作ったりして、日々の業務の効率化につながればいいなと思います
カスタムで自分だけのコマンドを作るも楽しそうですね!