Home >Backend Development >PHP Tutorial >The difference between php const and define, phpconstdefine_PHP tutorial
Original address: http://www.manongjc.com/article/491.html
const is used for the definition of class member constants, which cannot be changed after definition. With define, we define global constants, so that we can access them in other places but cannot change them. We will list some details below. Come out
Note: define cannot be defined in a class, but const must be defined in a class, and const must be accessed through class name::variable name
1. Const is used to define class member variables. Once defined, its value cannot be changed. define defines global constants that can be accessed anywhere.
2. define cannot be defined in a class but const can.
3. Const cannot define constants in conditional statements
4. const uses an ordinary constant name, and define can use an expression as the name.
5. const can only accept static scalars, while define can use any expression.
6. const is always case-sensitive, however define() can use the third parameter to define case-insensitive constants
7. Using const is simple and easy to read. It itself is a language structure, while define It is a method, using const definition is much faster than define at compile time.
define defines constants. What if we define constants in a class? Of course, you cannot use define, but use const, as in the following example:
<?<span>php </span><span>//</span><span>在类外面通常这样定义常量</span> <span>define</span>("PHP","111cn.net"<span>); </span><span>class</span><span> MyClass { </span><span>//</span><span>常量的值将始终保持不变。在定义和使用常量的时候不需要使用$符号</span> <span>const</span> <span>constant</span> = 'constant value'<span>; </span><span>function</span><span> showConstant() { </span><span>echo</span> self::<span>constant</span> . "<br>"<span>; } } </span><span>echo</span> MyClass::<span>constant</span> . "<br>"<span>; </span><span>$classname</span> = "MyClass"<span>; </span><span>echo</span> <span>$classname</span>::<span>constant</span> . "<br>"; <span>//</span><span> PHP 5.3.0之后</span> <span>$class</span> = <span>new</span><span> MyClass(); </span><span>$class</span>-><span>showConstant(); </span><span>echo</span> <span>$class</span>::<span>constant</span>."<br>"; <span>//</span><span> PHP 5.3.0之后 //print_r(get_defined_constants()); //可以用get_defined_constants()获取所有定义的常量</span> ?>
Generally define defines constants outside the class, const defines constants within the class, and const must be accessed through class name::variable name. However, php5.3 and above support defining constants through const outside the class, as shown below, this is OK:
<?<span>php </span><span>const</span> a = "abcdef"<span>; </span><span>echo</span><span> a; </span>?>
I won’t go into the basic knowledge about constants here. In addition to the above, other differences between define and const (taken from the Internet):
1.const cannot define constants in conditional statements, but define is possible, as follows:
<?<span>php </span><span>if</span>(1<span>){ </span><span>const</span> a = 'java'<span>; } </span><span>echo</span> a; <span>//</span><span>必错</span> ?>
2.const uses an ordinary constant name, define can use an expression as the name
<?<span>php </span><span>const</span> FOO = 'PHP'<span>; </span><span>for</span> (<span>$i</span> = 0; <span>$i</span> < 32; ++<span>$i</span><span>) { </span><span>define</span>('PHP_' . <span>$i</span>, 1 << <span>$i</span><span>); } </span>?>
3.const can only accept static scalars, while define can take any expression.
<?<span>php </span><span>const</span> PHP = 1 << 5; <span>//</span><span> 错误</span> <span>define</span>('PHP', 1 << 5); <span>//</span><span> 正确 </span> ?>
4.const itself is a language structure. And define is a function. So using const is much faster.
Two common synchronizations: both cannot be reassigned.