PHP Internals わいわい #1 の資料
by
てきめん tekimen
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
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に従いましょう ● レッツコントリビュート! ● これだけじゃ厳しいのはわかってるのであとはよし なに