2

間に違いはありますか?

public function init(a_class_name $classObj)

public function init($classObj)

違いは、例1で、取得するオブジェクトの種類を指定することです。私の質問はもっとです:phpはまだ参照によってオブジェクトを渡しますか(デフォルトの動作)、または例1はオブジェクトを複製するための奇妙なショートカットです。より厳密な言語(C、Java)では、例1は非常に単純であるため(そして機能する唯一の例)、私は尋ねるだけです。PHPでは、それはそれほど明確ではなく、両方の方法がPHPドキュメントのさまざまな場所で使用されています。

ありがとう。

4

3 に答える 3

5

これは、aaタイプヒントと呼ばれます。

PHP 5では、型ヒントが導入されています。関数は、パラメーターをオブジェクト(関数プロトタイプでクラスの名前を指定することにより)、インターフェース、配列(PHP 5.1以降)、または呼び出し可能(PHP 5.4以降)にすることができるようになりました。

--http ://php.net/manual/en/language.oop5.typehinting.php

どちらの場合も(型ヒントがある場合とない場合)、オブジェクトは参照によって渡されます。それは変わりません。

于 2012-05-02T17:33:12.457 に答える
1

a_class_nameは、私が知る限り、配列型、クラス名、またはインターフェース名にすることができます。instanceofが行うように、そのルールに対して指定された正式なパラメーターを検証するだけです。

この機能は、int、bool、string、...などの単純な型では機能しません。

于 2012-05-02T17:34:14.517 に答える
1

違いは、最初のオブジェクトでは、タイプa_class_nameのオブジェクトのみをinitメソッドに渡すことができますが、2番目のオブジェクトでは、任意のタイプ(int、string ...など)を渡すことができることです。

于 2012-05-02T17:34:37.423 に答える