php4 と php5 の違い: 1. php4 にはデストラクターがありませんが、php5 にはデストラクターがあります; 2. php4 で関数またはメソッドに変数を渡すとき、変数は実際には 1 回コピーされます、php5 のオブジェクトは常に参照の形式で存在します。
このチュートリアルの動作環境: Windows10 システム、PHP7.1 バージョン、DELL G3 コンピューター
コンストラクターとデストラクター
PHP4 では、関数がオブジェクトと同じ名前を持つ場合、この関数はオブジェクトのコンストラクターになります。PHP4 にはデストラクターの概念がありません。
PHP5 では、コンストラクターは __construct という名前で統一され、デストラクターの概念が導入され、一律 __destruct という名前が付けられます。
例 1: コンストラクターとデストラクター
class foo {undefined var $x; function __construct($x) {undefined $this->x = $x; } function display() {undefined print($this->x); } function __destruct() {undefined print("bye bye"); } } $o1 = new foo(4); $o1->display(); ?>
上記の例では、foo クラスの呼び出しを終了すると、そのデストラクターが呼び出されます。上記の例では、「bye bye」を出力します。 。
オブジェクトリファレンス
ご存知のとおり、PHP4 では、関数またはメソッドに変数を渡すと、実際にはその変数がコピーされます。つまり、関数またはメソッドに渡した変数がコピーされます。参照記号「&」を使用してコピーではなく参照を作成することを宣言しない限り、この変数のコピーです。 PHP5ではオブジェクトは常に参照の形で存在し、オブジェクトへの代入演算も参照演算となります。
例 2: オブジェクトの参照
class foo {undefined var $x; function setX($x) {undefined $this->x = $x; } function getX() {undefined return $this->x; } } $o1 = new foo; $o1->setX(4); $o2 = $o1; $o1->setX(5); if($o1->getX() == $o2->getX()) print("Oh my god!"); ?>
オブジェクトのクローン
上記のように、オブジェクトが常に参照の形式で呼び出される場合、オブジェクトのコピーをどうすればよいでしょうか? PHP5 は、__clone 構文を使用したオブジェクトのクローン作成という新機能を提供します。
例 3: オブジェクトの複製
class foo {undefined var $x; function setX($x) {undefined $this->x = $x; } function getX() {undefined return $this->x; } } $o1 = new foo; $o1->setX(4); $o2 = $o1->__clone(); $o1->setX(5); if($o1->getX() != $o2->getX()) print("Copies are independant"); ?>
オブジェクトの複製方法は他の多くのアプリケーション言語に存在するため、その安定性について心配する必要はありません。 :)
オブジェクトのプライベート、パブリック、およびプロテクト モード
PHP4 では、オブジェクトのすべてのメソッドと変数はパブリックです。つまり、オブジェクトの外部でオブジェクトを操作でき、任意の変数や変数を操作できます。方法。 PHP5 では、このアクセス許可を制御するために、Public、Protected、Private という 3 つの新しいモードが導入されています。
パブリック モード (パブリック): オブジェクトの外部での操作制御を許可します。
プライベート モード (プライベート): このオブジェクト内のメソッドのみが操作および制御を許可されます。
保護モード (保護): このオブジェクトとその親オブジェクトが操作および制御できるようにします。
推奨学習: 「PHP ビデオ チュートリアル 」
以上がphp4とphp5の違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。