PHP のインターフェースに関するディスカッション

WBOY
リリース: 2016-06-13 13:11:27
オリジナル
948 人が閲覧しました

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 はますます良くなります。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート