PHP のインターフェースについてのディスカッション
この記事は重慶 PHP からの転載です。元のアドレス: http://www.php-chongqing.com/index.php/article/107
多くの人が私に、PHP の用途は何なのかと尋ねます。インタフェース?いつ使用しますか?どこで使用しますか?
まず、インターフェースとは何なのか見てみましょう。
インターフェイスはクラスではありませんが、クラスに似ています。これは主にクラスの特定の関数 (メソッド) を記述するために使用されますが、特定の関数を実装するのではなく、クラスが 1 つまたは複数のインターフェイスを実装するクラスによって実装されます。より多くのインターフェース。
一般的な動的言語にはインターフェースがありませんが、PHP5 にはインターフェースがあります。PHP でインターフェースを定義します。
interface User {
public function eat();
public function sleep();
}
ログイン後にコピー
インターフェースを実装します。
class Chinese implements User {
public function eat() {
echo "eat chinese food!";
}
public function sleep() {
echo "sleep..."
}
}
ログイン後にコピー
上記。コードは次のとおりです PHP プログラミングのポイントは何ですか?実用的な観点から見ると、PHP におけるインターフェイスの役割はほぼゼロであり、上記のコードではまったく役に立ちません。また、中国語クラスを直接定義しても問題なく正常に動作します。 PHP5 の現在のインターフェイスは、せいぜい型ヒントとしてのみ使用できます。それだけです。もちろん、タイプヒントを使用すると、デザインの一部をより明確にすることができます。
インターフェイスを使用して型ヒントを完成させる方法を見てみましょう (実際にはあまり意味がありません)。
public function doSomething($user) {
$user->eat();
}
ログイン後にコピー
メソッド doSomething() が User オブジェクトのインスタンスを渡す必要がある場合、このメソッドを使用するユーザーが $user が次のインスタンスであることを知らない可能性があります。コードは次のように記述されます:
$user = "bing.peng";
$test->doSomething($user);
ログイン後にコピー
ログイン後にコピー
次に、プログラムが $user->eat() メソッドを実行しようとすると、失敗します。ユーザーが予期したオブジェクトを渡しませんでした。 doSomething() メソッドに型ヒントを追加しましょう:
public function doSomething(User $user) {
$user->eat();
}
ログイン後にコピー
これにより、ユーザーは doSomething() が User オブジェクトを必要とすることを明確に認識できるため、低レベルのエラーを回避できます。ただし、PHP は動的言語であるため、次のようにランダムに記述することもできます。
$user = "bing.peng";
$test->doSomething($user);
ログイン後にコピー
ログイン後にコピー
コードを実行すると、やはり失敗します。また、タイプ ヒントの役割はあまり意味がありません。 PHP インターフェイスを練習する 効果はほぼ 0 です。インターフェイスのコードを別のファイルに置くと、非常に小さいですが、インターフェイス定義コードが余分に発生します。ファイルを開くのに時間がかかります。
ところで、PHP の現在の開発についての個人的な意見を述べさせてください。エンタープライズレベルの開発に適応するために、PHP には多くの新しいオブジェクト指向機能が追加されています。 Java など。ただし、実際にはあまり役に立たない型ヒントなどの動的言語ではインターフェイスは必要ありません。今日の PHP はますます複雑になり、少し平凡になり、徐々に人々から離れてきています。PHP が Web 開発の最初の言語になり得る主な理由は、PHP が草の根的でシンプルな開発であることを願っています。 PHP はますます良くなります。