この章の最後のセクションで、Zeev は Zend エンジンによってもたらされたオブジェクト モデルについて説明し、それが PHP の以前のバージョンのモデルとどのように異なるかについて言及しています。
1997 年の夏に PHP3 を開発したとき、その時点では PHP3 は純粋な手続き型言語でした。クラスのサポートは PHP3 アルファ バージョンに追加されました。当時は PHP を研究する人が少なすぎたため、PHP に新しい機能を追加するのに最小限の議論が必要でした。そのため、PHP は 1997 年 8 月からオブジェクトに向けた一歩を踏み出しました。プログラミング言語の第一歩
実際、これは最初のステップにすぎません。この設計には関連するアイデアがほとんどないため、このバージョンでのオブジェクトの使用は、配列にアクセスするための優れた方法に過ぎません。 bar"] では、より見栄えの良い $foo->bar を使用できます。オブジェクト指向アプローチの主な利点は、メンバー関数またはメソッドを通じて機能を保存できることです。典型的なコード ブロックを例 6.18 に示します。しかし、実際にはこれです。例 6.19 のアプローチとあまり変わりません。
リスト 6.18 PHP 3 のオブジェクト指向プログラミング PHP3 のオブジェクト指向プログラミング
クラスの例
{
var $value = "何らかの値";
関数 PrintValue()
{
$this->value;を印刷します
}
}
$obj = 新しい例();
$obj->PrintValue();
?>
リスト 6.19 PHP 3 構造プログラミング PHP3 PHP3 の構造プログラミング
関数 PrintValue($arr)
{
print $arr["value"];
}
関数 CreateExample()
{
$arr["値"] = "何らかの値";
$arr["PrintValue"] = "PrintValue";
$arr を返します;
}
$arr = CreateExample();
//PHP の間接参照を使用します
$arr["PrintValue"]($arr);
?>
上記では、クラスに 2 行のコードを記述するか、配列を関数に明示的に渡していますが、PHP3 ではこれら 2 つのオプションに違いがないことを考慮すると、オブジェクト モデルを単に「構文上のホワイトウォッシュ」Access 配列として扱うことができます。 .
オブジェクト指向開発に PHP を使用したいと考えていた人、特にデザイン パターンを使用したいと考えていた人は、幸いなことに、当時 (PHP3 時代) オブジェクト指向に PHP を使用したいと考えていた人は多くはありませんでした。開発
PHP4 ではこの状況が変わり、参照の概念が導入されました。これにより、PHP の異なる識別子がメモリ内の同じアドレスを指すことができるようになります。これは、例 6.20 のように、同じ変数に複数の名前を使用できることを意味します。
リスト 6.20 PHP 4 のリファレンス PHP4 のリファレンス
$a = 5;
//$b は $a とメモリ内の同じ場所を指します $b と $a はメモリ内の同じアドレスを指します
$b = &$a;
// $a が $b の変更を指しているので、$b を変更します
//同じ場所 - それも変わります $a が指すアドレスも変わります
$b = 7;
//印刷 7 出力 7
$a を印刷します;