この記事では、php における const と static の違いと使い方について説明します。
まず const に関しては、次のように PHP クラス内のメンバー属性のみを変更できますが、メソッドは変更できません:
class Test{ const PATH = 'c/';//修饰常量 const function test(){//这种方法是错误的,const无法修饰方法 } }
const を使用する場合、フィールドを変更する権限を追加する必要はありませんが、呼び出すときにスキルが必要ですconst で変更された定数。定数はオブジェクトではなくクラス全体に属するため、呼び出すときはクラス名とドメイン名修飾子を使用する必要があります。たとえば:
echo Test::PATH; //也可以使用下面的方法调用 $test = new Test(); echo $test::PATH;
しかし、クラス内で呼び出すと問題が発生します。 、クラスに追加するにはどうすればよいですか? 現在のクラス名または現在のオブジェクト名を内部的に取得します (PHP はオブジェクトに基づいてクラス名を取得できます - リフレクション)。
class Test{ const PATH = 'c/';//修饰常量 public function ass(){ echo $this::PATH.'<br />'; echo self::PATH.'<br />'; } }
where self などの 2 つの特別なキーワードが提供されます。 ($ なし) は現在のクラス名を表し、$this は現在のオブジェクトを表します。このようにして、クラス内で const 変更された定数を呼び出すことができます。
次に static
const について話しましょう。これは非常に便利ですが、一度定義すると値を変更することはできません。ただし、クラスに属する属性が必要になる場合がありますが、その値をカウントするなどの変更が可能です。 static がクラスのメンバー変数を変更する場合、その使用法は基本的に const と同じです。違いは、static によって変更されたプロパティがアクセス許可を追加できることです (const も使用できます)。 7.1 PHP では追加されましたが、以前のものはできませんでした)、静的に変更されたメンバー変数の値を変更できるようになりました。
しかし、メンバーメソッドが静的に変更されると、使用方法が少し変わります。クラス内、静的に変更されたメソッド本体内では、現在のクラスの通常のメンバー変数にはアクセスできません。正確には、キーワード $this にはアクセスできません。を使用するには、現在のクラスの静的メンバー変数とクラス定数のみを使用できます。
class Test{ static public $name='asd'; const π = 3.1415926; public $age = 10; public static function lenth($r){ //echo $this->age;//会发生错误,不能访问普通的成员变量 echo Test::$name; return $r*2*self::π; } public static function area($r){ return $r*$r*self::π; } }
static を使用するプロセスでは、呼び出されるメソッドは static によって変更された変数とは異なります。次のように、クラス名またはオブジェクト名を通じて呼び出すことができます。
echo '周长:'. Test::lenth(1).'<br/>'; echo '面积:'.Test::area(1).'<br/>'; $per = new Test(); echo $per->lenth(3);
上記の 2 つの呼び出しメソッドは有効です。
この記事では、php における const と static の違いと使用法について説明します。関連コンテンツの詳細については、php 中国語 Web サイトを参照してください。
関連イラスト:
PHPはどのようにして2つの関数__autoloadとapl_autoload_registerを自動的にロードしますか?
以上がPHPにおけるconstとstaticの違いと使い方を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。