クラス内の関数のパラメータをクラスの属性として指定できますか?

WBOY
リリース: 2016-06-23 13:56:35
オリジナル
840 人が閲覧しました

クラス内の usbUSB 関数のパラメーターの 1 つが、上記の USB インターフェイスをパラメーターとして指定できるというコードを見ました。このように PHP 関数でパラメーターを使用することは聞いたことがありません。理由は何ですか?


ディスカッションへの返信 (解決策)

function useUSB( USB $usb)
この USB は型宣言です $usb が USB の型ではない場合、構文エラーが発生します

関数useUSB( USB $ usb)
この USB は型宣言です。 $usb が USB 型ではない場合、構文エラーが発生します


もしそうなら、これは私の理解では、関数パラメータのパラメータであるということです。 function は変数であり、型の制限はありません。

理解が覆されるとしても、それはあなたの理解に問題があることを意味するだけです
したがって、それは覆すものではなく、理解を高めるものです
たとえば、USB クラスには load メソッドがあり、
関数 useUSB($ usb) {
$usb->load();
}
このように定義して、 $obj->useUSB('abc'); を呼び出します
これは $usb->load() のロードメソッドではありませんエラーが存在します
したがって、$usb->load(); の前に $usb がオブジェクトであるかどうかを確認する必要があります。load メソッドがあるかどうか
型宣言を追加した後、このチェックは PHP パーサーによって完了します

あなたは私が話している問題がまだ理解できません。私が言いたいのは、関数 useUSB の最初のパラメーター USB がインターフェイス クラスであるということです。関数のパラメーターをどうやって指定できるのかということです。クラス?多くのチュートリアルでわかったことは、関数のパラメーターは変数であり、それが呼び出されるとすぐに出力されるということですが、このクラスでは何が起こっているのでしょうか? 。 1 つの例から推測するだけで、信じられないほど感じられます。理解できないのはここです。

私の意味が理解できませんでした!
関数のパラメータはカンマで区切られています
USB $usbの間にカンマはありますか?
明らかにそうではありません。USB $usb はパラメータです

私が言いたいことは、関数 useUSB の最初のパラメータ USB がインターフェイス クラス USB であるということです。なぜ関数のパラメータがクラスなのか理解できません。多くのチュートリアルでわかったことは、関数のパラメーターは変数として定義され、呼び出されるとすぐに出力されるということですが、このクラスでは何が起こっているのかについては言及されていません。それはまったく。 1 つの例から推測するだけで、信じられないほど感じられます。理解できないのはここです。



関数 use(USB $usb){}
$usb は USB クラスによってインスタンス化されたオブジェクト ポインターです
たとえば $usb1 = USB() use($usb1); usb2);

2 つの回答を通じて、この式で理解できるかどうかはわかりません。次のようなクラスを宣言するメソッドを使用できます。この例では、USB $usb は $usb=new USB

この例では、USB $usb
は、$usb がクラス USB またはクラスのインスタンスである必要があることを意味しますUSB から継承

この例では、USB $usb
は、$usb が USB クラスのインスタンスであるか、USB

から継承されたクラスである必要があることを意味します
$usb は usb のプロパティまたはメソッドにすることができますか? ? ?

いいえ、インスタンスである必要があります

function use(USB $usb) { }
function use($usb) {
if(! is_a($usb, 'USB')) return 'error'; と同等です。
}

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