PHP newbieが PHP で詰まったところ/気になったところ
先生!ブレークポイントで止まってくれません!
デフォルトではデバッガが含まれていない。
xdebugを入れると、ブレークポイントを活用したデバッグができるようになる。
PHP Onlyだと
echo() / print()
単純に値を表示する。printは値を返す
print_r / var_dump()
オブジェクト内まで読み取れるようにフォーマットして返してくれる
Laravelだと
dd()
可読性の高い形で表示される
Laravelがhelperとして用意している
ddd()
ddよりもUIが良い感じで表示される
Laravelのhelperではなく、別ライブラリのhelper
つまり…
PHP Only
var_dump使っとけ
On Laravel
ddd使っとけ
xdebugあり
xdebug or ddd 使っとけ
となる感じ。
ママー!値の情報を知りたいよー
上記のvar_dumpで中身を知り、get_debug_typeで型を知れる
下記には注意。
注意: PHP 8.0.0 より前のバージョンでは、 get_debug_type() が使えません。 代わりに gettype() が使えますが、 この関数は正規化された型の名前を使いません。
PHPにはなんで<?php の開始タグがあるの?いらんくないか
HTMLと密接に関わっており、当時は動的コンテンツをサーバー上で処理して、結果をちょろっとHTMLに乗っけたい!みたいな要望から生まれた言語だからと推測。これといった答えは見つからなかった。
peclで読み込むライブラリと、composer経由のライブラリの違いがわからん!
pecl経由
pecl install xxxで基本インストールする/できる。
PHP言語自体を拡張する仕組みで、Cで書かれている。PHP言語部分に干渉するような処理系(デバッガ等)を埋め込む形で拡張する。
composer経由
PHP上で実装されている外部ライブラリ。npmと管理が似ていて、composer.json/lockで管理する。
vendor/以下にライブラリがinstallされる。
vendor/autoload.php経由でloadされる仕組みを提供してくれる。
vendor/autoload.phpをキックする必要があるが、Laravelとかは勝手にload処理を読んでくれている(public/index.php経由で実施してくれている)