2016-06-16 5 views
0

CakePHP Plugin documentationでは、次のコード行があります:$validator->provider('upload', \Josegonzalez\Upload\Validation\DefaultValidation::class);<namespace> ::クラスの意味は?

\Josegonzalez\Upload\Validation\DefaultValidationは名前空間ですが、私は::classを理解していませんでした。誰かがそれを説明できましたか? PHPのドキュメントで何も見つかりませんでした。

答えて

2

class定数は、(名前空間を持つ)クラスの完全な名前を文字列として返します。だから、それを必要とするメソッドに文字列として渡すのではなく、PHPの方法で渡します。それはちょうど、たとえば、良さそうに見えます:

$validator->provider('upload',\Josegonzalez\Upload\Validation\DefaultValidation::class); 

$validator->provider('upload', '\Josegonzalez\Upload\Validation\DefaultValidation'); 

はどちら

同じであり、このことのもう一つの利点は、あなたが完全なクラス名が必要な場合は数回あります1つのファイルに複数のメソッド呼び出しをパラメータとして記述します。あなたは単にそれを上の&で使うことができ、classnameだけが名前空間でフルネームを返します。

use \Josegonzalez\Upload\Validation\DefaultValidation; 

$validator->provider('upload', DefaultValidation::class); 

//you can use it on other places as well, if required. 
$someOtherClass->someOtherMethod(DefaultValidation::class); 

要するに、入力する必要がある文字数が減り、コードの外観がきれいになります。

+1

また、このような用途は、自動リファクタリングによって簡単に変更できます。通常、文字列ではうまく機能しません。 – ndm