みんなが愛したvar_dump()の実装を探しに旅に出た
by
kuwako
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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