1. ホーム
  2. php

[解決済み] PHP 5: const と static の違い

2022-04-20 10:49:03

質問

PHP 5 では、以下のような違いがあります。 conststatic ?

それぞれどのような場合に適切か?また、どのような役割で public , protectedprivate があれば教えてください。

解決方法は?

クラスのコンテキストでは、静的変数は(オブジェクトではなく)クラススコープ上にありますが、constとは異なり、その値を変更することができます。

class ClassName {
    static $my_var = 10;  /* defaults to public unless otherwise specified */
    const MY_CONST = 5;
}
echo ClassName::$my_var;   // returns 10
echo ClassName::MY_CONST;  // returns 5
ClassName::$my_var = 20;   // now equals 20
ClassName::MY_CONST = 20;  // error! won't work.

public, protected, private は const (常に public) の観点からは無関係で、static 変数を含むクラス変数にのみ有効です。

  • public static 変数は、ClassName::$variable を介してどこにでもアクセスすることができます。
  • protected static 変数は、定義クラスまたは拡張クラスから ClassName::$variable を介してアクセスすることができます。
  • private static 変数は、ClassName::$variable を介して定義クラスによってのみアクセス可能です。

編集部:重要なのは PHP 7.1.0 からは、クラス定数の可視性を指定する機能が追加されました。 .