オーバーロード (オーバーライドとは異なり) は PHP ではサポートされていません。 OOP では、メソッドをオーバーロードして、同じ
を持つ 2 つ以上のメソッドを実装できます。ですが、引数の数または種類は異なります (言語によって異なります)。 PHP は緩やかに型指定された言語であるため、型のオーバーロードは機能しませんが、異なる数のパラメーターを使用したオーバーロードは機能しません。
(異なる数のパラメータを渡す)。 PHP
で実装するコツは次のとおりです:
-------- -------------------------------------------------- ----------------------- php クラス
Myclass { 関数 Myclass() { $name="Myclass".func_num_args
();
$this->$name(); >
//注
$this->name() は一般的に間違っていますが、ここでは
$name
は、呼び出されるメソッドの名前です。
}
function Myclass1($x) {
code; } function Myclass2($x,$y) { コード } } ?>---------------- - ------------------------------------------------- - ----------- このクラスの使用は、クラス内の追加処理を通じてユーザーに透過的です:
$obj1=new
Myclass
('1') //
は
Myclass1
$obj2=new Myclass('1','2') // は Myclass2 これは場合によっては非常に便利です。
多態性 ポリモーフィズムは、実行時に渡されたオブジェクト パラメーターに基づいて呼び出すオブジェクト メソッドを決定できます。たとえば、
figure のクラスがある場合、それは を定義しますdraw メソッド。そして派生した circle クラスと rectangle クラスで、派生クラスで
は draw メソッドをカバーしており、パラメータ x を期待する関数も含めることができます。 $x->draw() を呼び出すことができます。ポリモーフィズムがある場合、どの draw
メソッドが呼び出される は、オブジェクトのタイプによって異なります。この機能。
ポリモーフィズムは、PHP C++ のようなインタープリター型言語に存在します。コンパイラはそのようなコードを生成しますが、どのメソッドを呼び出す必要がありますか? オブジェクトの種類がわからない (まあ、それが重要ではありません) のは非常に簡単で自然です。したがって、PHP は確かにポリモーフィズムをサポートしています。
-------------------------------------- -- ------------------------------------------ php function niceDrawing($x) { //
これが
Board であると仮定します
クラスのメソッド
$x->draw()
}
$obj=new Circle( 3,187) ; $obj2=new Rectangle(4,5); $board->niceDrawing($
obj
); //将调用Circle的draw方法
$board->niceDrawing($obj2);
//将调用Rectangle的draw方法
?>--------------------------------------------------------------------------------
用PHP进行面向对象编程
一些"纯化论者(purists)"可能会说PHP不是一个真正的面向对象的语言,这是事实。PHP 是一个混合型
语言,你可以使用OOP,也可以使用传统的过程化编程。然而,对于大型项目,你可能想/需要在PHP 中使用
纯的OOP去声明类,而且在你的项目只用对象和类。
随着项目越来越大,使用OOP可能会有帮助,OOP代码很容易维护,容易理解和重用。这些就是软件工程
的基础。在基于web的项目中应用这些概念就成为将来网站成功的关键。