Home >Backend Development >PHP Tutorial >The difference between php const and define

The difference between php const and define

WBOY
WBOYOriginal
2016-07-29 09:02:04979browse

Original address: http://www.manongjc.com/article/491.html

const is used for the definition of class member constants. It cannot be changed after definition. With define, we define global constants. In this way, we It can be accessed from other places but cannot be changed. We will list some specific details for you below

Note: define cannot be defined in the class, but const must be defined in the class, and const must be passed through the class name::variable name. Access


1. Const is used for class member variable definition. 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 define case-insensitive constants through the third parameter.
7. Using const is simple and easy to read. It itself is a language structure, and define is a method. Defining with const is much faster than defining 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 outside of classes through const. See the following. This is OK:

<?<span>php
    </span><span>const</span> a = "abcdef"<span>;
    </span><span>echo</span><span> a;
</span>?>

Regarding the basic knowledge of constants, I won’t go into it here. In addition to the above, there are other differences between define and const (taken from the Internet) :

1.const cannot define constants in conditional statements, but define can, 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 expressions as names

<?<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 synchronizations: both cannot be reassigned.

The above has introduced the difference between php const and define, including the relevant content. I hope it will be helpful to friends who are interested in PHP tutorials.

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn