ハッシュテーブルは、文字列のキーから高速で値を取り出すことができる強力なデータ構造です。私たちの身近なPHPの配列が良い例です。そして、チェイン法はハッシュテーブル実装時に生じるハッシュの衝突という問題を解決するための実装方法です。
これらの技術はPHPの配列の内部実装でも利用されており、PHPerにとって必須の知識であると言っても過言ではありません!
今回は、ハッシュテーブルとチェイン法についてより理解を深めるために、PHPのSplFixedArray(C言語の配列と似たような挙動をもつ)を使ってその実装を行います。
過去、私は社内の勉強会を主催してきましたが、2023年には他社の方と何度か勉強会を開催する機会を作り実行してきました。
これらはまるで「ミニカンファレンス」のような形をとり、非常に有意義なものでした。
その経験から得た知見を共有し、これまでの成功と失敗から学んだことを皆さんとシェアしたいと思います。
PHPer同士の合同勉強会がもっとカジュアルに行われることを願って!
書くこと
EmacsやPhpStormのようなテキストエディタは常に最新のPHPをストレスなく書けるように機能を提供し続けています。
直近追加されたmatch式やenum構文なども問題なくハイライトしてくれるのは誰かが対応してくれているからです。
この記事では、そもそもテキストエディタはどのように構文を解釈してハイライトしてくれているのか、tree-sitterなどの最近のテキストエディタ事情も踏まえて解説していきます。
PHPには、複数のエラーがあります。
「復旧不能な致命的なエラー」「復旧可能な致命的なエラー」「継続的なエラー」が主役です。
「例外」もいますね。
発生のタイミングで、PHPの起動時やコンパイル時だったり実行時だったり…と複数のパターンがあります。
そして、それをハンドリングするための機構、エラーハンドラーがあります。
更に、エラー制御演算子 @
があります。
こう書いてみると、割と色々なものが入り組んでいるんだな〜と思いませんか?
とはいえ、PHPの経験をある程度積んだアプリケーション開発者であれば、身体で覚えているようにも思います。
しかし、PHPにとって「エラー」って何なのでしょう?
エラーが起きた時に、何が起きて、どういう処理をしているのでしょうか?
@
を付けたら「エラーが出なくなる」、なぜ? 制御の対象はどこまでなのか、どういう挙動の変化があるのか?
PHPの気持ちになって考えてみたいな、と思いませんか・・・・?
そこで、php-srcの読解やPHPコミュニティで公開されている各種ツールの利用により、
「エラーって何だろう」を自分の目で見ていこうと思いました。
本記事は、その調査結果です。
@
の仕事