この記事では、PHP における const と static の違いと使い方を紹介します。必要な方は参考にしてください。
まず、const については、PHP クラス内ではメソッドではなくメンバー属性のみを変更できます。以下に続きます:
[php]view plaincopy
class Test{ const PATH = 'c/';//修饰常量 const function test(){//这种方法是错误的,const无法修饰方法 } }
constを使用する場合、権限を変更したフィールドを追加する必要はありませんが、定数がオブジェクトに属するのではなく、クラス全体を呼び出すため、呼び出すときはクラス名とドメイン名修飾子を使用する必要があります。例:
[php]view plaincopy
echo Test::PATH; //也可以使用下面的方法调用 $test = new Test(); echo $test::PATH;
しかし、内部で呼び出す場合は問題が発生します。クラス内の現在のクラス名または現在のオブジェクト名を取得する方法です (php はオブジェクトに基づいてクラス名を取得できます - リフレクション)。php は、次のような 2 つの特別なキーワードを提供します。
[php] view plain copyclass Test{
const PATH = 'c/';//修饰常量
public function ass(){
echo $this::PATH.'<br />';
echo self::PATH.'<br />';
}
}
次に静的について話しましょう
constは非常に便利ですが、一度定義すると値を変更することはできません。ただし、場合によってはクラスに属する属性が必要ですが、その値は変更できます。このクラスは複数のオブジェクトを構築します。ここで static を使用します。static がクラスのメンバー変数を変更する場合、その使用法は基本的に const と同じです。違いは、static によって変更されたプロパティがアクセス許可を追加できることです。 7.1 Const も追加できますが、前のものは追加できません)、static で変更されたメンバー変数の値を変更できます。
しかし、static がメンバーメソッドを変更すると、使用方法が少し変わります。クラス内、static で変更されたメソッド本体内では、現在のクラスの通常のメンバー変数にアクセスすることはできません。 $this では、現在のクラスの静的メンバー変数とクラス定数のみを使用できます。
[php]
view plaincopyclass 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::π;
}
}
[php]
view plaincopyecho '周长:'. Test::lenth(1).'<br/>';
echo '面积:'.Test::area(1).'<br/>';
$per = new Test();
echo $per->lenth(3);
関連する推奨事項:
PHP で iconv 関数を使用する方法以上がPHPにおけるconstとstaticの違いと使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。