const
用来定义那些在运行时不能被改变的常数值。一旦定义且不能改变其值,假如在程序中改变了它的值,那么会出现错误。
<?php
calss Math{
const pi=3.14159;
}
echo Math::pi;
?>
前面没有美元符号($),可以在不需要初始化该类的情况下实用。常量值必须是一个常量表达式。const定义的变量,在子类中可以被覆盖。
在类的内部定义,php5.3以后也可以在类的外部定义。
const不可以用表达式。
define()
可以用 define() 函数来定义常量。一个常量一旦被定义,就不能再改变或者取消定义。
常量只能包含标量数据(boolean,integer,float 和 string)。
可以简单的通过指定其名字来取得常量的值,不要在常量前面加上 $ 符号。
define定义全局常量,在任何地方都可以访问。
define不能在类中定义而const可以。
define可以采用任何表达式。如define('BIT_5', 1 << 5);
<?php
define(\"CONSTANT\", \"Hello world.\");
echo CONSTANT; // outputs \"Hello world.\"
echo Constant; // outputs \"Constant\" and issues a notice.
?>
define()与const()两者之间的区别:
内存空间的分配上。define进行宏定义的时候,不会分配内存空间,编译时会在main函数里进行替换,只是单纯的替换,不会进行任何检查,比如类型,语句结构等,即宏定义常量只是纯粹的置放关系,如#define null 0;编译器在遇到null时总是用0代替null它没有数据类型(还有疑问请找C语言书籍看预处理部分或者看MSDN.而const定义的常量具有数据类型,定义数据类型的常量便于编译器进行数据检查,使程序可能出现错误进行排查,所以const与define之间的区别在于const定义常量排除了程序之间的不安全性.
define定义全局常量,在任何地方都可以访问
const用于类成员变量定义,只能用类名访问不能更改要是初学这样显理解着就行别太钻牛角尖就行
static
php中的变量作用范围的另一个重要特性就是静态变量(static 变量)。
静态变量仅在局部函数域中存在且只被初始化一次,当程序执行离开此作用域时,其值不会消失,会使用上次执行的结果。
static关键字在类中,描述一个成员是静态的,static能够限制外部的访问,因为static后的成员是属于类的,是不属于任何对象实例。
static的成员,必须使用self来访问。
class Counter
{
public static $count = 0;//定义一个静态属性
//定义一个静态的方法
static function getCount(){
return self::$count;
}
}
echo Counter::getCount();
Counter::count;
最后补充一个例子:
<?php
class test {
public $name2 = \'name2\';
static $name = \'name\';
const CHARSET = \"中国\";
public function say_hello() {
echo self :: CHARSET;
}
public static function set_name() {
echo self :: $name;
}
public static function set_name2() {
self::set_name();
}
public static function set_name3() {
echo $this->name;
$this->set_name();
}
}
$const1 = new test();
// 1
$const1->say_hello();
// 2
echo \"<br />\";
echo test :: CHARSET;
// 3
echo \"<br />\";
echo $const1->name;
// 4
echo \"<br />\";
echo $const1->set_name();
// 5
echo \"<br />\";
echo $const1->set_name2();
// 6
echo \"<br />\";
echo test::CHARSET;
// 7
echo \"<br />\";
echo $const1->CHARSET;
?>
继续阅读与本文标签相同的文章
人工神经网络技术在地球化学研究中的潜在应用
-
手机信号突然从“4G”变成“E”,是什么意思?客服给出答案
2026-05-14栏目: 教程
-
互联网架起“乌镇式生活”
2026-05-14栏目: 教程
-
微信才是内存“杀手”,别再乱清理,关闭这个功能,手机立马流畅
2026-05-14栏目: 教程
-
手机信号变成E是什么意思?看完专业人士给出的解释后,涨知识了
2026-05-14栏目: 教程
-
关于Word的四个隐藏办公小技巧,你可能一个也不知道,建议收藏!
2026-05-14栏目: 教程
