PHP Internals わいわい #1 の資料
by
てきめん tekimen
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
PHP Internals わいわい
Slide 2
Slide 2 text
自己紹介 てきめん ● https://tekitoh-memdhoi.info ● X: @youkidearitai ● https://github.com/youkidearit ai ● PHP 8.4で複数の関数を作りました – mb_trim, mb_ltrim, mb_rtrim – mb_ucfirst, mb_lcfirst – grapheme_str_split オレ
Slide 3
Slide 3 text
趣旨 ● PHP Internals Bookを元に、PHPのソースコード、php-srcを取得、コンパ イルしたりソースコードを読みます – https://www.phpinternalsbook.com/ – あわよくばバグを見つけたら報告したり – あわよくばテストコードを修正したり – 更に行けば関数・機能を追加するとか ● PHP Internalに向かって新機能を追加する提案をしたりできないかと思っ ています
Slide 4
Slide 4 text
コンパイルの前段階 ● Linuxを用意します ● 今回はDockerを使います – WSLやmultipass、limaなどを使ってもらっても構いま せん
Slide 5
Slide 5 text
PHPのコンパイルの準備 > docker pull ubuntu:22.04 > docker run -it ubuntu:22.04 bash # apt update && apt install -y pkg-config build-essential autoconf bison re2c libxml2-dev libsqlite3-dev gdb git libonig- dev # cd ~ # /root # git clone https://github.com/php/php-src
Slide 6
Slide 6 text
PHPのコンパイルの準備 # cd php-src # ./buildconf -f # ./configure --enable-debug --enable-mbstring # make # make test # make install # --prefix を指定していないので/usr/local/に入る # php -v #これで実行できる!
Slide 7
Slide 7 text
この状態を保存します ● Command + p + qで抜けるか、もしくは別のコン ソールを開いてください ● > docker ps で開いているContainer IDを調べます ● > docker commit [container id] ubuntu:php84 – このようにすればubuntu:php84で今までの作業した内 容を保存して、コンパイルできた状態で入れます
Slide 8
Slide 8 text
このようにコンテナを作れました > docker run -it ubuntu:php84 root@ea6b72b5f128:/# php -v PHP 8.4.0-dev (cli) (built: May 31 2024 00:57:46) (NTS DEBUG) Copyright (c) The PHP Group Zend Engine v4.4.0-dev, Copyright (c) Zend Technologies
Slide 9
Slide 9 text
tips ● 今回はDockerを使いましたが、LinuxやmacOS内 部で複数のPHPを持ちたいときは --prefix オプ ションが便利です。 – --prefix=$HOME/php84 とかしてあげると、ホームディ レクトリ配下にバージョンごとにコンパイル・インストー ルができるわけです。
Slide 10
Slide 10 text
デバッグ手法 ● Linuxではgdbとかlldbなどが使えますが、今回はgdbを使い ます ● コンテナ内部でvimとctagsなどを利用してソースコードを読み ます – 手元でコンパイルできるとVisual Studio Codeがつかえたりするよ うですね ● https://php.github.io/php-src/introduction/ides/visual-studio-code.h tml – このあたり知ってる人は共有してくれると嬉しい
Slide 11
Slide 11 text
開発環境を揃える # apt install exuberant-ctags vim # cd ~/php-src # ctags -R . # カレントディレクトリが/root/php-src
Slide 12
Slide 12 text
コンパイルオプションあれこれ 変数 CC をつけるとコンパイラを指定できます 変数 CFLAGS でコンパイルオプションを指定できま す 例: CC=clang CFLAGS=”-g” ./configure –enable- debug # clangでコンパイルし、-gオプションを加え られます
Slide 13
Slide 13 text
テストについて https://www.phpinternalsbook.com/tests/runn ing_the_test_suite.html # sapi/cli/php run-tests.php # すべてのテストを行 う # sapi/cli/php run-tests.php -P ext/mbstring # mbstring拡張のみテストする
Slide 14
Slide 14 text
テストファイルについて https://www.phpinternalsbook.com/tests/phpt _file_structure.html .phptファイルを使ってテストを行います
Slide 15
Slide 15 text
あとはPHP Internals Bookに従いましょう ● レッツコントリビュート! ● これだけじゃ厳しいのはわかってるのであとはよし なに