みんなが愛したvar_dump()の実装を探しに旅に出た
by
kuwako
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
みんなが愛した var_dump()の実装を探しに 旅に出た 1 PHPerKaigi2019 ルーキーズLT @MasakiKuwako
Slide 2
Slide 2 text
自己紹介 Masaki KUWAKO twitter: @MasakiKuwako / github: kuwako - PHP歴は7年くらい - 初PHPは大学4年時 - 現在メルカリでカスタマーサポートツールのBackend Engineerを担当(PHP/JS/Go) - 副業でオンラインプログラミング講師 - 趣味 - 四川料理/ビール/テニス/サッカー
Slide 3
Slide 3 text
皆さん
Slide 4
Slide 4 text
var_dump()に
Slide 5
Slide 5 text
お世話になりましたよね?
Slide 6
Slide 6 text
というわけで github/php/php-src に向かう僕だった
Slide 7
Slide 7 text
php-srcを読むときの事前知識 - 言語はCで実装されている - 関数系はだいたい php-src/ext の下に拡張扱いで置かれて いる - C言語のマクロが使われており、初見だと大分わかりづらい - ソースファイル - php-src/ext/standard/php_var.h (定義) - php-src/ext/standard/var.c (実装)
Slide 8
Slide 8 text
var_dump()の呼び出し部分
Slide 9
Slide 9 text
var_dump()の呼び出し部分 関数登録のマクロ
Slide 10
Slide 10 text
var_dump()の呼び出し部分 引数取って
Slide 11
Slide 11 text
var_dump()の呼び出し部分 引数の数だけ実行
Slide 12
Slide 12 text
なるほど
Slide 13
Slide 13 text
var_dump()の実装 (プリミティブ)
Slide 14
Slide 14 text
var_dump()の実装 (プリミティブ)
Slide 15
Slide 15 text
var_dump()の実装 (プリミティブ)
Slide 16
Slide 16 text
var_dump()の実装 (array)
Slide 17
Slide 17 text
var_dump()の実装 (array) 循環参照検知
Slide 18
Slide 18 text
var_dump()の実装 (array) ここでキーの部分だけ表示 処理して再帰でphp_var_dump()が実行される ここでキーの部分だけ表示 処理して再帰で php_var_dump()が実行される
Slide 19
Slide 19 text
var_dump()の実装 (array)
Slide 20
Slide 20 text
var_dump()の実装 (array) キーのみ表示処理
Slide 21
Slide 21 text
var_dump()の実装 (array) キーのみ表示処理 バリューはphp_va_dump()に流す
Slide 22
Slide 22 text
var_dump()の実装 (オブジェクト)
Slide 23
Slide 23 text
var_dump()の実装 (オブジェクト) ここでプロパティの部分だけ表示 処理して再帰でphp_var_dump()が実行される
Slide 24
Slide 24 text
まとめ
Slide 25
Slide 25 text
まとめ - 意外と思ったとおりのソースだった
Slide 26
Slide 26 text
まとめ - 意外と思ったとおりのソースだった - オブジェクトとかが大きすぎたときに … に略してく れる気の利くアレの実装どこだ???
Slide 27
Slide 27 text
まとめ - 意外と思ったとおりのソースだった - オブジェクトとかが大きすぎたときに … に略してく れる気の利くアレの実装どこだ???と思ったら xdebugの機能だった
Slide 28
Slide 28 text
まとめ - 意外と思ったとおりのソースだった - オブジェクトとかが大きすぎたときに … に略してく れる気の利くアレの実装どこだ???と思ったら xdebugの機能だった - C読むのはなかなか疲れる
Slide 29
Slide 29 text
まとめ - 意外と思ったとおりのソースだった - オブジェクトとかが大きすぎたときに … に略してく れる気の利くアレの実装どこだ???と思ったら xdebugの機能だった - C読むのはなかなか疲れる - var_dump()さんいつもありがとう!!!!
Slide 30
Slide 30 text
Thank you for listening!!! github: kuwako twitter: @MasakiKuwako