ホームページ >バックエンド開発 >PHPチュートリアル >クラス内の関数のパラメータをクラスの属性として指定できますか?
クラス内の usbUSB 関数のパラメーターの 1 つが、上記の USB インターフェイスをパラメーターとして指定できるというコードを見ました。このように PHP 関数でパラメーターを使用することは聞いたことがありません。理由は何ですか?
function useUSB( USB $usb)
この USB は型宣言です $usb が USB の型ではない場合、構文エラーが発生します
関数useUSB( USB $ usb)
この USB は型宣言です。 $usb が USB 型ではない場合、構文エラーが発生します
理解が覆されるとしても、それはあなたの理解に問題があることを意味するだけです
したがって、それは覆すものではなく、理解を高めるものです
たとえば、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 つの例から推測するだけで、信じられないほど感じられます。理解できないのはここです。
2 つの回答を通じて、この式で理解できるかどうかはわかりません。次のようなクラスを宣言するメソッドを使用できます。この例では、USB $usb は $usb=new 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'; と同等です。
}