PHP の記事 PHP におけるオブジェクト指向プログラミング------------------------------------------ --- -------------------------------------------- 大規模PHPプロジェクトの開発方法(2) ) 翻訳者: limodou 2000 年 5 月 16 日 著者: Luis Argerich 翻訳者: limodou 「Another」クラスのオブジェクトには、親クラス (Something) のすべてのデータ メンバーとメソッドが含まれており、独自のデータ メンバーとメソッドも追加されています。 $obj2=new Something; $obj2->setX(6); $obj2->setY(7); を使用できます。PHP はまだ多重継承をサポートしていないため、2 つ以上のクラスから新しいものを派生することはできません。 派生クラスでメソッドを再定義できます。「Another」クラスで getX メソッドを再定義すると、「Something」で getX メソッドを使用できなくなります。派生クラスで基本クラスと同じ名前のデータ メンバーを宣言すると、それを処理するときに基本クラスのデータ メンバーが「隠蔽」されます。 クラス内にコンストラクターを定義できます。コンストラクターはクラス名と同じ名前のメソッドで、クラスのオブジェクトを作成するときに呼び出されます。たとえば、次のようになります。 ---- ---------------------------- x=$y } function setX($v) { $this-> x=$v ; } 関数 getX() { return $this->x } } ?>---------------------------- ---- ------------------- したがって、次のようにしてオブジェクトを作成できます。 $obj=new Something(6); コンストラクターはデータ変数に 6 を自動的に割り当てます。バツ。コンストラクターとメソッドは通常の PHP 関数であるため、デフォルトのパラメーターを使用できます。 function Something($x="3",$y="5") 次に、 $obj=new Something() // x=3 および y=5 $obj=new Something(8); and y=5 $obj=new Something(8,9); // x=8 and y=9 デフォルトパラメータはC++メソッドを使用するため、Yの値を無視してXにデフォルトパラメータを与えることはできません。値は左から右に割り当てられます。渡されたパラメータが必要なパラメータより小さい場合は、デフォルトのパラメータが使用されます。 派生クラスのオブジェクトが作成されると、そのコンストラクターのみが呼び出され、親クラスのコンストラクターは呼び出されません。基本クラスのコンストラクターを呼び出したい場合は、派生クラスのコンストラクターで明示的に呼び出す必要があります。クラス。これが可能なのは、すべての親クラスのメソッドが派生クラスで使用できるためです。 -------------------------------------------------- --- y=5; $this->Something(); //基本クラスのコンストラクターの呼び出しを表示します} ?>---------------------- ---------------------------- OOP の優れたメカニズムは、抽象クラスの使用です。抽象クラスはインスタンス化できず、派生クラスへのインターフェイスのみを提供できます。設計者は多くの場合、抽象クラスを使用してプログラマに基本クラスからの派生を強制し、新しいクラスに必要な機能が確実に含まれるようにします。 PHP には標準メソッドはありませんが、この機能が必要な場合は、基本クラスを定義し、そのコンストラクターの後に「die」呼び出しを追加して、基本クラスがインスタンス化できないようにすることができます。ここで「die」ステートメントを追加します。各メソッド (インターフェイス) の後で、プログラマが派生クラスのメソッドをオーバーライドしないと、エラーが発生します。また、PHP は型指定されていないため、オブジェクトが基底クラスからの派生クラスであることを確認し、クラスの ID を定義する (ある種の識別 ID を返す) メソッドを基底クラスに追加する必要がある場合があります。オブジェクトパラメータを受け取るときにこの値を確認してください。もちろん、邪悪なプログラマーが派生クラスでこのメソッドをオーバーライドした場合、このメソッドは機能しませんが、一般に問題は邪悪なプログラマーではなく怠惰なプログラマーに見られます。 もちろん、基本クラスをプログラマに見えないようにすることができるのは便利です。プログラマはインターフェイスを出力して仕事をするだけです。 PHP にはデストラクターがありません。