PHP5.0 におけるポリモーフィズムの実装スキームの簡単な分析_PHP チュートリアル

WBOY
リリース: 2016-07-13 16:58:34
オリジナル
748 人が閲覧しました

要約: この記事では、ポリモーフィズムの概念とオブジェクト指向設計におけるその応用について説明し、PHP 5 でのポリモーフィズムの使用方法とその利点と欠点についても分析します。

遅延バインディングのサポートは、PHP の最新リリースに実装されました。もちろん、遅延バインディング機能を使用する場合にはまだ多くの問題があります。古いバージョンの PHP を使用している場合 (私のサーバーは PHP 5.0.1 を実行しています)、遅延バインディングのサポートが不足していることに気づくかもしれません。したがって、この記事のコードは、お使いの特定のバージョンの PHP 5 では動作しない可能性があることに注意してください。

1. PHP 5 とポリモーフィズム

この記事では、オブジェクト指向プログラミングの最も重要な部分の 1 つであるポリモーフィズムの設計について説明したいと思います。問題を説明するために、私は PHP 5 を使用しています。読み進める前に、この記事は完全に PHP に関するものではないことを明確にしてください。この言語は過去 2 つのメジャー バージョンにわたって急速な開発で大きな進歩を遂げてきましたが、オブジェクトのサポートが C や Java コースのようなより成熟した言語に匹敵するまでにはまだ時間がかかります。

オブジェクト指向プログラミングの初心者には、この記事は適していないかもしれません。ポリモーフィズムのこの部分は並外れたものであり、一度理解すると決して忘れることはできないからです。オブジェクト プログラミングと設計について少し学びたいが、「オブジェクトはポリモーフィックである」と言われることが何を意味するのかよくわからない場合は、この記事が最適です。
この記事を読み終えるまでに、ポリモーフィズムとは何か、それをオブジェクト指向設計に適用する方法を理解し、PHP 5 でのオブジェクト プログラミングの長所と短所を理解できるようになります。

2. ポリモーフィズムとは何ですか?

Dictionary.com のポリモーフィズムの定義は、「独立した組織または同じ組織内で基本的な違いはなく、異なる形式、段階、タイプで発生すること」です。この定義から、ポリモーフィズム セクシュアリティは同じものを記述するプログラミング方法であると考えることができます。オブジェクトは複数の状態または段階を経て変化します。実際、その本当の意味は、実際の開発では、インターフェイスまたは基本クラスのプログラミングにのみ集中すればよく、オブジェクトが属する特定のクラス (クラス) について心配する必要がないことです。

デザイン パターンに精通していれば、たとえ予備的な理解だけでも、この概念は理解できるでしょう。実際、ポリモーフィズムはパターンベースの設計プログラミングにおける最大のツールである可能性があります。これにより、同様のオブジェクトを論理的な方法で編成できるため、コーディング時にオブジェクトの特定のタイプを気にする必要がなくなり、さらに、必要なインターフェイスまたは基本クラスをプログラムするだけで済みます。アプリケーションが抽象的であればあるほど、柔軟性は高まります。ポリモーフィズムは動作を抽象化する最良の方法の 1 つです。

たとえば、Person というクラスについて考えてみましょう。 David、Charles、Alejandro というクラスを使用して person をサブクラス化できます。 Person には抽象メソッド AcceptFeedback() があり、すべてのサブクラスはこのメソッドを実装する必要があります。これは、基本 Person クラスのサブクラスを使用するコードはどれも AcceptFeedback() メソッドを呼び出すことができることを意味します。オブジェクトがデビッドであるかアレハンドロであるかを確認する必要はありません。それが人であることがわかれば十分です。結果として、コードは「最小公倍数」である Person クラスにのみ焦点を当てる必要があります。

この例の Person クラスは、インターフェイスとして作成することもできます。もちろん、上記のものと比較するといくつかの違いがあります。主に、インターフェイスは動作を与えず、一連のルールを決定するだけです。 Person インターフェイスでは「AddFeedback() メソッドをサポートする必要がある」必要がありますが、一方、Person クラスでは AddFeedback() メソッドのデフォルト コードを提供できます。これについての理解は、「AddFeedback() のサポートを選択しない場合は、デフォルトの実装を提供する必要があります。「インターフェイスまたは基本クラスの選択方法はこの記事の主題ではありませんが、一般に、基本クラスを通じてデフォルトのメソッドを実装する必要があります。クラスが実装する必要な機能セットの概要を簡単に説明できる場合は、インターフェイスを使用することもできます。

3. ポリモーフィックデザインを適用する

引き続き Person 基本クラスの例を使用し、非ポリモーフィック実装を分析してみましょう。次の例では、さまざまなタイプの Person オブジェクトを使用していますが、これは非常に不満足なプログラミング方法です。実際の Person クラスは省略されていることに注意してください。これまでのところ、コード呼び出しの問題のみに注目してきました。

$name = $_SESSION['name'];
$myperson = 人::Getperson($name);
スイッチ (get_class($myperson)){
ケース「デビッド」:
$myPerson->AddFeedback('素晴らしい記事!', '読者', date('Y-m-d'));
休憩;
ケース「チャールズ」:
$myPerson->フィードバック[] = array('一部の読者', '素晴らしい編集!');
休憩;
ケース「アレハンドロ」:
$myPerson->フィードバック->Append('素晴らしい Javascript!');
休憩;
デフォルト:
$myperson->AddFeedback('やった!');
}
?>

この例では、異なる動作を持つオブジェクトと、異なる Person クラス オブジェクトを区別してそれぞれの正しい操作を実行できるようにする switch ステートメントを示します。ここでのフィードバック コメントは条件によって異なることに注意してください。これは実際のアプリケーション開発には当てはまらない可能性があります。ここでは、クラスの実装に存在する違いを説明するだけです。

次の例ではポリモーフィズムを使用しています。

$name = $_SESSION['name'];
$myperson = 人::Getperson($name);
$myPerson->AddFeedback('素晴らしい記事!', 'SomeReader', date('Y-m-d'));
?>

ここには switch ステートメントが存在しないことに注意してください。そして最も重要なことは、どのようなタイプのオブジェクトが Person::GetPerson() から返されるかについての情報がないことです。もう 1 つの Person::AddFeedback() はポリモーフィック メソッドです。動作は具象クラスによって完全にカプセル化されます。ここで David、Charles、または Alejandro を使用するかどうかに関係なく、呼び出し元のコードは具象クラスの動作を知る必要はなく、基本クラスのみを知る必要があることに注意してください。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/631392.html技術記事要約: この記事では、ポリモーフィズムの概念とオブジェクト指向設計におけるその応用について説明し、PHP 5 でのポリモーフィズムの使用方法とその利点と欠点についても分析します。 PHP の最新リリース バージョンでは...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート