Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
phpcon北海道2024-新米PHPerですが、php-srcをちょっとだけ読めちゃった件について
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
kero kero
January 13, 2024
1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
phpcon北海道2024-新米PHPerですが、php-srcをちょっとだけ読めちゃった件について
kero kero
January 13, 2024
More Decks by kero kero
See All by kero kero
初めてのOSSコントリビュートに挑戦したら、既に該当機能が存在していた件について
kerokero
0
66
phpconJapan2023 わたし、Composerが気になります!
kerokero
0
1.2k
phpcon沖縄2023_初めてのOSSコントリビュートに挑戦したら、既に該当機能が存在していた件について
kerokero
0
450
Featured
See All Featured
Building an army of robots
kneath
306
46k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
170
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
490
Navigating Team Friction
lara
192
16k
What does AI have to do with Human Rights?
axbom
PRO
1
2.2k
A Tale of Four Properties
chriscoyier
163
24k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.7k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
GitHub's CSS Performance
jonrohan
1033
470k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
620
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.6k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
870
Transcript
新米 PHPerですが、 php-src を ちょっとだけ読めちゃった件について 2024/01/13 (株)インフィニットループ サーバーサイドエンジニア
kerokero
Agenda 1. 自己紹介しつつ 2. php-src を読んでみたい 3. おわりに
どうも、kerokero です。
22卒 自称青魔道士系エンジニア (株)インフィニットループ kerokero ・北海道の 札幌 生まれ、札幌 育ち ・水産→数学(非情報系)→2022年4月にIL入社
・最近の趣味は 絵を描く (→↓↘) ことと ストリートファイター6 (MR1400周辺) です ・担当領域は サーバーサイド のアプリ・インフラ周辺(Laravel, AWS, k8sなど) です
今回の発表の対象者 ・ PHP本体のソースコードに興味がある初心者の方
今回の発表の対象者 ・ PHP本体のソースコードに興味がある初心者の方 ・ php-srcに興味を持ったことがあるけど難しそうだからと敬遠気味な 人
今回の発表の対象者 ・ PHP本体のソースコードに興味がある初心者の方 ・ php-srcに興味を持ったことがあるけど難しそうだからと敬遠気味な 人 ・ 難しそうな話を聞くのは5分間が限界な人 ↑
HOT‼ 5分間も集中できるの偉い!
今回の発表の対象者 ・ PHP本体のソースコードに興味がある初心者の方 ・ php-srcに興味を持ったことがあるけど難しそうだからと敬遠気味な 人 ・ 難しそうな話を聞くのは5分間が限界な人 ↑
HOT‼ 5分間も集中できるの偉い! 1分間だけ🙏 1
では、見ていきましょう!
少しPHPが分かったと思った頃に こんな経験、ありませんか? アルバイトのめぐるちゃん
PHP 難しくてよく分からないな~ <
シュバッ! え、なになに? > PHP 難しくてよく分からないな~ <
Composer の実装を見てるんだけど…… (おっ......?) あー、Composerね どれどれ、どこが分からんの? > <
None
※ ・PHPのオートロードは spl_autoload_register を使って登録される らしい ・引数としてautoload関数を与えてあげる とキューの中に追加されていき、定義さ れた順に紐づけられていくみたいです
・とはいえ、php-srcの中に踏み込むこと になるのでここでは詳細は触れません
spl_autoload_register ってどうやって動いてるんですか? あーね…… > <
???
…… >
https://github.com/php/php-src この辺読むといいかもね slackにリンク張っておいたわ >
https://github.com/php/php-src この辺読むといいかもね slackにリンク張っておいたわ >
・
・ ・
・ ・ ・
php-srcを読んでみたい
php-srcを読んでみたい!!
Agenda 1. 自己紹介しつつ 2. php-src を読んでみたい 3. おわりに
・php-srcを読んでみたい ・PHPとはThe PHP Groupによって開発されている ・オープンソースの汎用プログラミング言語 および ・その公式の処理系
・php-srcを読んでみたい ・PHPとはThe PHP Groupによって開発されている ・オープンソースの汎用プログラミング言語 および ・その公式の処理系
・そして、php-srcというのは「公式の処理系」である方のPHPのことであり、これを読んで理解す るというのはなかなか骨が折れる作業
・php-srcを読んでみたい ・個人的にphp-srcを読みたいと思った動機は Composerの中身を知りたいというものだった
調べてみよう
・php-srcを読んでみたい ・php-src を読むためにはC言語が読めないといけない
・php-srcを読んでみたい ・php-src を読むためにはC言語が読めないといけない
基本的には雰囲気で読んでいけばOKらしい
たしかに、なんとなく追えそうな……
・php-srcを読んでみたい ・一見、コードの流れ自体はなんとか理解できそう……
・php-srcを読んでみたい ・一見、コードの流れ自体はなんとか理解できそう……
・大文字で書いてあるマクロ部分がヤバい ※小文字の部分がヤバくないとは言ってない
・php-srcを読んでみたい ・マクロはC言語で書いたコードがビルドされる前に、自分で定義した内容 を文字列置換によって扱うことができる仕組み
・php-srcを読んでみたい ・マクロはC言語で書いたコードがビルドされる前に、自分で定義した内容 を文字列置換によって扱うことができる仕組み ・C言語の構文とかお構いなしに、だいたいなんでも書ける
・php-srcを読んでみたい ・マクロはC言語で書いたコードがビルドされる前に、自分で定義した内容 を文字列置換によって扱うことができる仕組み ・C言語の構文とかお構いなしに、だいたいなんでも書ける ・マクロの中で変数定義してたりする
・php-srcを読んでみたい ・マクロはC言語で書いたコードがビルドされる前に、自分で定義した内容 を文字列置換によって扱うことができる仕組み ・C言語の構文とかお構いなしに、だいたいなんでも書ける ・マクロの中で変数定義してたりする ・引数がマクロで書かれてたりする
・php-srcを読んでみたい ・マクロはC言語で書いたコードがビルドされる前に、自分で定義した内容 を文字列置換によって扱うことができる仕組み ・C言語の構文とかお構いなしに、だいたいなんでも書ける ・マクロの中で変数定義してたりする ・引数がマクロで書かれてたりする
・型定義もマクロで書いてあったりする
・php-srcを読んでみたい ・マクロはC言語で書いたコードがビルドされる前に、自分で定義した内容 を文字列置換によって扱うことができる仕組み ・C言語の構文とかお構いなしに、だいたいなんでも書ける ・マクロの中で変数定義してたりする ・引数がマクロで書かれてたりする
・型定義もマクロで書いてあったりする ・ < えっ?型定義だけでなく、メモリの割り当てと配置も理 解し ないといけないんですか……?
とりあえず一旦整理
・php-srcを読んでみたい ・php-srcはほとんどC言語で書いてある ・まずは雰囲気で読めばOK
・php-srcを読んでみたい ・php-srcはほとんどC言語で書いてある ・まずは雰囲気で読めばOK ・大量に出てくるマクロを理解する必要がある ・マクロの処理を追う必要があることを理解しておく
・php-srcを読んでみたい ・php-srcはほとんどC言語で書いてある ・まずは雰囲気で読めばOK ・大量に出てくるマクロを理解する必要がある ・マクロの処理を追う必要があることを理解しておく ・php-src特有のメモリ配置に関する知識が必要
・zend_execute_data, zval など ・zval構造体を取得する仕組みなど
PHPが動く話 急いで!!
・php-srcを読んでみたい ・PHPは以下の流れでだいたい動いてる
1. 実行環境が SAPI のエントリポイントを呼び出す 2. PHP 処理系に SAPI から入出力用の処理が登録される 3. PHP 処理系が SAPI から起動される 4. PHP 処理系がリクエストの処理を開始し、スクリプトファイルを開く 5. Zend Engine がスクリプトから VM で実行する中間コードを生成する 6. Zend Engine が生成された中間コードを実行する 7. 実行中に PHP 処理系からの出力処理が必要なら、SAPI で登録された処理を通 して行われる 8. PHP 処理系がリクエストの処理を終了する
よく分からん
・php-srcを読んでみたい ・すごい簡単にまとめると ・SAPIのエントリポイント ↓ ・SAPI ↓ ・Zend Engine ↓
・処理の実行
・php-srcを読んでみたい ・SAPIのエントリポイント ・なんかよく分からんけどSAPIってやつを呼び出している部分 ・コマンドラインとかApacheとか
・php-srcを読んでみたい ・SAPI ・ServerAPIの略 ・WebサーバーでPHPを動かすためのAPI ・PHPを実際に処理してるZendEngineというものを動かすため のイン ターフェースという理解
・mod-php, CLI, php-fpmなど
・php-srcを読んでみたい ・Zend Engine ・PHPのスクリプトを処理して実行する部分 ・CLIやphp-fpmなんかも、最後はZendEngineを呼ぶ
実際の処理 たぶんここまでたどり着いてない
・php-srcを読んでみたい ・Zend Engineで処理される流れ ・SAPIから起動される ・スクリプトの内容を抽象構文木(AST)というものへ変換 ・スクリプトを構造体にする処理 ・ASTからOpcodeという命令を生成する
・zend_compile.c で関数が定義されてます ・↑で生成されたOpcodeの実行
Agenda 1. 自己とか色々紹介 2. php-src を読んでみたい 3. おわりに
・おわりに ・本当に本当に、0が1になった話でした ・1から100にするためには神記事や過去のカンファレンスを見よう
結局、 このスライドでphp-srcが読めるように なった話聞けてなくない??
なんと、PHPについて学べる 場所があります!!
None
会場 札幌オフィス
ご清聴ありがとうございました!!