Home > Article > Backend Development > Detailed explanation of the differences between PHP class constants, static properties, and non-static properties
1. ClassConstant: The value that always remains unchanged in the class is defined as a constant
The constant of the class cannot use the access restriction modifier, he is It is public, can inherit, and can be overridden by subclasses. You must use double colons to access the constants of the class::. You can use the class name or instance of the class to access. Because it is a constant, the name cannot be used to represent a variable. The symbol $.
can define a value that remains unchanged in the class as a constant. There is no need to use the $ symbol when defining and using constants.
The value of a constant must be a fixed value and cannot be a variable, class attribute, the result of a mathematical operation or a function call.
Constants can also be defined in interfaces. See the interface section of the documentation for more examples.
Since PHP 5.3.0, you can use a variable to dynamically call a class. But the value of this variable cannot be a keyword (such as self, parent or static).
Syntax: const constant= 'constant';
class Myclass{ const constant = '常量'; //类内部调用 public function test(){ echo self::constant.'<br>'; } } Myclass::test(); //类外部访问 echo Myclass::constant.'<br>'; //方法一 $obj = new Myclass(); //方法二 echo $obj::constant.'<br>';
2.staticAttribute: It is a variable that can be accessed using constant syntax, which is:: , It can be accessed without instantiation
Syntax: public static $my_static = 'similar constant';
class Myclass{ public static $static_val = '静态属性'; //类内部访问 public function test(){ return self::$static_val.'<br>'; } } //类外部访问 // echo Myclass::test(); echo Myclass::$static_val; //方法一 $obj = new Myclass(); //方法二 echo $obj::$static_val; echo $obj->test();
3. Non-static attributes: a normal variable, instance It can be accessed after being transformed, using the -> symbol
Syntax: public $my_val = 'normal variable'
class Myclass{ public $normal_val = '非静态属性'; //类内部访问 public function test(){ return $this->normal_val ; } } //类外部访问 $obj = new Myclass(); echo $obj->normal_val; echo $obj->test();
PHP gets the list of constants, attributes, and methods in the class Method
$r = new ReflectionClass($this); Zend_Debug::dump($r->getConstants(), "Constants"); Zend_Debug::dump($r->getProperties(), "Properties"); Zend_Debug::dump($r->getMethods(), "Methods");
The above is the detailed content of Detailed explanation of the differences between PHP class constants, static properties, and non-static properties. For more information, please follow other related articles on the PHP Chinese website!