ホームページ >バックエンド開発 >PHPチュートリアル >PHP5のオブジェクト指向インターフェース技術を詳しく解説_PHPチュートリアル

PHP5のオブジェクト指向インターフェース技術を詳しく解説_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:13:09927ブラウズ

PHP 5 はインターフェースの概念もサポートしており、インターフェースを導入してキーワードを実装しています。 Java と同様、PHP 5 はインターフェイスを使用して「多重継承」と同様の効果を実現します。

PHP5 インターフェースの構文は次のとおりです:
クラスを宣言するときはキーワード「class」を使用し、特別なクラスであるインターフェースはキーワード「interface」を使用します。

クラスの定義:classクラス名{…}、インターフェースの宣言:interfaceインターフェース名{…}

特定の PHP5 抽象クラスのコードは次のとおりです:

例 2
コードは次のとおりです コードをコピー

抽象クラス AbstractClass {

抽象パブリック関数 test();

}

クラス ImplementedClass extends AbstractClass {

パブリック関数 test() {

echo "ImplementedClass::test() が呼び出されました。";

}

}

$o = 新しい実装クラス

;

$o->test();


コードは次のとおりですコードをコピー表示可能なインターフェース { 抽象クラスと PHP5 インターフェイスの導入により、PHP は完全なオブジェクト指向言語になります //interface キーワードを使用してインターフェイスを定義します。「One」はインターフェイス名です
関数display();

}

印刷可能なインターフェイス {

関数 doprint()

}

クラス foo は、displayable,printable を実装します {

関数display(){

// コード

} 関数 doprint() {

// コード

}

}



コードは次のとおりです

コードをコピーインターフェース 1 { //定数を定義します
const 定数 = '定数値';


//抽象メソッド「fun1」が定義されています
パブリック関数 fun1();

//抽象メソッド「fun2」が定義されています

パブリック関数 fun2();
}



上記の例では、インターフェイス「one」が定義されており、その中で 2 つの抽象メソッド「fun1」と「fun2」が宣言されています。インターフェイス内のすべてのメソッドは抽象メソッドであるため、インターフェイスのような抽象メソッドを宣言する必要はありません。この方法では、「abstract」キーワードがデフォルトで追加されています。また、デフォルトは public であるため、このキーワードは削除することもできます。インターフェイスはパブリックである必要があります。インターフェイス内のメンバーには、「プライベート」権限と「保護された」権限を使用することはできません。パブリックまたはデフォルトを使用する必要があります。さらに、インターフェイス内で定数「constant」も宣言しました。インターフェイス内では変数メンバーを使用できないため、const キーワード宣言を使用する必要があります。

インターフェイスは特別な抽象クラスであり、その中のすべてのメソッドは抽象メソッドであるため、インターフェイスはインスタンス オブジェクトを生成できません。これは仕様でもあり、すべての抽象メソッドはサブクラスによって実装される必要があります。

「extends」キーワードを使用すると、あるインターフェイスが別のインターフェイスを継承できるようになります。

コードは次のとおりです コードをコピー

//別のインターフェースを継承するには「extends」を使用します
インターフェース 2 は 1 を拡張します
{
関数 fun3();
関数 fun4();
}

インターフェース内のすべての抽象メソッドを実装するインターフェースのサブクラスを定義する場合、使用されるキーワードは、前述したように「extends」ではなく「implements」です。

//キーワード「implements」を使用して、インターフェースに抽象メソッドを実装します

コードは次のとおりです コードをコピー

クラス 3 は 1 を実装します
{
関数 fun1()
{
… …
}

関数 fun2()
{
… …
}
}

//すべてのメソッドが実装されたので、サブクラスを使用してオブジェクトをインスタンス化できます

コードは次のとおりです コードをコピー
$three=新しい Three();

抽象クラスを使用してインターフェースにいくつかの抽象メソッドを実装することもできますが、オブジェクトをインスタンス化するには、この抽象クラスにそのすべての抽象メソッドを実装するためのサブクラスが必要です。

PHP は単一の継承を持つと前に述べましたが、クラスは複数のインターフェースを実装できます。これは、法律を遵守するだけではないのと同じように、クラスは複数の仕様に準拠する必要があるのと同じです。学校に通っている場合は、学校の規則にも従わなければなりません

コードは次のとおりですコードをコピー

PHP では、1 つのクラスが複数のインターフェイスを実装できるだけでなく、クラスを継承する際に複数のインターフェイスを実装することもできます。まずクラスを継承してからインターフェイスを実装する必要があります。

//implements を使用して複数のインターフェースを実装します

クラス 4 はインターフェイス 1、インターフェイス 2、... を実装します
{
// オブジェクトをインスタンス化する前に、インターフェイス内のすべてのメソッドを実装する必要があります。
}

コードは次のとおりですコードをコピー
//extends を使用してクラスを継承し、implements を使用して複数のインターフェイスを実装します

クラス 4 はクラス名 1 を拡張し、インターフェイス 1、インターフェイス 2 を実装します...
{
// オブジェクトをインスタンス化するには、インターフェイス内のすべてのメソッドを実装する必要があります
……
}

たくさん話した後、例を見てみましょう

VideoCard.php インターフェースファイル (グラフィックスカードの機能インターフェース定義)

コードは次のとおりですコードをコピー インターフェイス VideoCardInter{
関数 Display();
関数 getName();
}
?>
Dmeng.php はインターフェースを実装します (Dmeng のメーカーがこれらのインターフェースを実装しています。マザーボードのメーカーはそれらの実装方法について心配する必要はありません)

コードは次のとおりですコードをコピー include_once("VideoCard.php");
クラス Dmeng は VideoCardInter {
を実装します 関数 Display(){
echo "表示";
}
関数 getName(){
「Dmeng VideoCard」を返します;
}
}
?>
Mainboard.php アプリケーション インターフェイス (グラフィック カードをマザーボードに挿入します。マザーボードはこれらのインターフェイスのみを使用する必要があるかどうか)

コードは次のとおりですコードをコピー include_once("VideoCard.php");
include_once("Dmeng.php");
クラスメインボード{
var $vc;
function run(VideoCardInter $vc){ //VideoCardInter インターフェイス タイプのパラメータを定義します。現時点では誰が実装するかわかりません。
$this->vc=$vc;
$this->vc->Display();
echo "マザーボードは実行中です!";
}
}
$computer=新しいメインボード();
$computer->run(new Dmeng);
//使用する場合は、インターフェースを実装するクラスの名前を記述します(現在はDiamondグラフィックスカードですが、インターフェースを実装している限り、他のメーカーのグラフィックカードでも置き換えることができます)
?>上記を転載し、自分なりに書いてみた:感想まとめ

4つの側面に分かれると思います

1. 静的リンク データベース クラス (基本的なリンク データベース、クエリ レコード番号、返される結果セットなど)

2. 各モジュールのインターフェース(ニュースインターフェースNewsInterfaceなど)

3. インターフェースを実装するクラス (ニュース実装クラス NewsInterfaceImpl がページで使用されるいくつかのメソッドを記述し、新しいオブジェクトがここでそのメソッドを呼び出します)

4、モジュールクラス(ニュースクラスNews)

http://www.bkjia.com/PHPjc/629208.html

tru​​ehttp://www.bkjia.com/PHPjc/629208.html技術記事 PHP 5 はインターフェイスの概念もサポートしており、インターフェイスを導入してキーワードを実装しています。 Java と同様、PHP 5 はインターフェイスを使用して「多重継承」と同様の効果を実現します。 PHP5 インターフェースの構文は次のようなものです...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。