ぺチコン2021を見ていて、初めて知ったビルドインのオプションを知りました!
\ auto-prepend-fileです! /
今回はそれを使って開発を便利にしていきたいと思いますー🙋♂️
教えてくださったスライドはこちらです、ありがとうございます!
https://speakerdeck.com/tzmfreedom/original-framework-php-kaizen?slide=22
簡単にできる事を説明すると、独自関数などを定義したファイルをスクリプト実行前に読み込ませることができます!
それにより、デバック関数を独自に作成して、それをスクリプト内に仕込んでデバックするみたいなことができて便利みたいです。
auto-prepend-fileとは?
https://www.php.net/manual/ja/ini.core.php#ini.auto-prepend-file
auto_prepend_file string
メインファイルの前に自動的に付加されるファイルの名前を指定します。 このファイルは、require 関数のコール時と同様に読み込まれます。 このため、include_path が使用されます。
特別な値 none を指定すると、ファイルを前に追加する機能は無効となります。
逆に、auto_append_file
というのもあるみたいです。
🚨注意
auto-prepend-file
もauto_append_file
もexit();が使われるようなスクリプトでは、使用できないとのことです。私はここの中身みたいなーって時は、var_dump($hoge);exit();
としちゃってたので注意しないとでした。そういうときはdd($hoge);
を使うといいみたいですね。
symfony/var-dumperが使えるようにauto-prepend-fileに追加してみる
Symfonyの公式にも掲載されていました!
https://symfony.com/doc/current/components/var_dumper.html#the-dump-function
In order to have the dump() function always available when running any PHP code, you can install it globally on your computer:
- Run composer global require symfony/var-dumper;
- Add auto_prepend_file = ${HOME}/.composer/vendor/autoload.php to your php.ini file;
- From time to time, run composer global update symfony/var-dumper to have the latest bug fixes.
1.composer global require symfony/var-dumper;
PHP8.0.3でやっていきます。
$ php --version PHP 8.0.3 (cli) (built: May 27 2021 13:40:53) ( NTS ) Copyright (c) The PHP Group Zend Engine v4.0.3, Copyright (c) Zend Technologies with Zend OPcache v8.0.3, Copyright (c), by Zend Technologies with Xdebug v3.0.3, Copyright (c) 2002-2021, by Derick Rethans $ composer global require symfony/var-dumper; Changed current directory to /Users/shigaayano/.composer Using version ^5.3 for symfony/var-dumper ./composer.json has been created Running composer update symfony/var-dumper Loading composer repositories with package information Updating dependencies Lock file operations: 3 installs, 0 updates, 0 removals - Locking symfony/polyfill-mbstring (v1.23.1) - Locking symfony/polyfill-php80 (v1.23.1) - Locking symfony/var-dumper (v5.3.8) Writing lock file Installing dependencies from lock file (including require-dev) Package operations: 0 installs, 3 updates, 31 removals - Removing symfony/stopwatch (v5.1.2) - Removing symfony/service-contracts (v1.1.5) - Removing symfony/process (v5.1.2) - Removing symfony/polyfill-php73 (v1.11.0) ...
2.php.iniにauto_prepend_file = ${HOME}/.composer/vendor/autoload.php
を追加
php -r "echo phpinfo();" | grep "php.ini"
でphp.iniの場所を確認して、最終行とかに追記します。
ちゃんと適用されてるか心配だったので、確認して見ます。
設定されてるみたいです。
php -r "echo phpinfo();" | grep "auto_prepend_file" auto_prepend_file => /Users/xxx/.composer/vendor/autoload.php => /Users/xxx/.composer/vendor/autoload.php
3.実際に使ってみる
まず、dd($hoge);
を使って見ます。
今回、コントローラ内でdd($form)
でFormの中身を見たかったのですが、dump後にexitされるためdumpが出力された後はレスポンスも表示されません。
次に、dump($hoge);
を使って見ます。
exitされないため、レスポンスがいつも通り表示されてSymfony Profiler > Debugからdumpを確認できます。
プロジェクト内のコードを変更せず使えますし、便利なので今後も開発で是非使っていこうと思います🙌!