php5中const、define和static

本文详细解释了PHP中的const、define和静态成员的概念、定义方式和使用场景,帮助开发者更好地理解和运用这些特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、const 
在编程中,我们一般用常量来定义那些在运行时不能被改变的常数值,下面让我们来看看php中的const吧,这个东西其 实没有什么好说的,只是为了知识的完善而随便说下吧。在定义一个常量的时候我们可以使用const来修饰这个常量, 使用const修饰的常量更其它的常量有点不同的地方就是:常量名前不要使用”$”,切记!当然这个常量值也是不能修改的,一旦定义就不能程序的任何地方进行“人为”的修改。这跟使用 define定义是一样,还有就是使用const来定义当然也遵守其它常量的命名规则――使用大字的字母。 

看个小例子吧: 
<?php 
class say_const{ 
const CHARSET  =  "中国"; 
    public function say_hello(){ 
        echo slef::CHARSET; 
    } 

$const1  =  new say_const(); 
$const1->say_hello(); 

作为其它要说明的,请看下面这个扩展阅读: 
    常量前面没有美元符号($); 
    常量只能用 define() 函数定义,而不能通过赋值语句; 
    常量可以不用理会变量范围的规则而在任何地方定义和访问; 
    常量一旦定义就不能被重新定义或者取消定义; 
    常量的值只能是标量; 
    常量只能包含标量数据(boolean,integer,float 和 string),不要定义 resource常量. 
    可以用函数 constant() 来读取常量的值.get_defined_constants()可以获得所有已定义的常量列表. 
    如果使用了一个未定义的常量,PHP 假定想要的是该常量本身的名字,如同用字符串调用它一样(CONSTANT 对应 “CONSTANT”),此时将发出一个 E_NOTICE 级的错误. 


PHP 的“魔术常量”. 
__LINE__ 
__FILE__ 
__FUNCTION__ 
__CLASS__ 
__METHOD__ 


在面向对象中 
接口: 
1 不能够定义静态变量在类的 成员变量(常量除外) 
2 定义的常量 const YOUCONST = VALUE,不能在子类中覆盖,在子类中以 interfaceName::YOUCONST的方式调用 
3 不能使用parent::YOUCONST的方式调用接口的常量 

类: 
1 const 变量可以使用parent::YOUCONST的方式,className::YOUCONST的方式在子类中访问 
2 const定义的变量,在子类中可以被覆盖 
3 当然在类中可以定义静态成员变量了 


二、define 
什么是自定义常量? 

    所谓自定义常量,就是指用一个字符标识来代表另外一个对象,这个对象可以是一个数值,一个字符串,一个布尔值等等。它的定义与变量有着许多相似之处。 只有一点不一样,那就是变量的值在程序运行过程中可以任意更改,而自定义常量一旦定义下来后,在程序运行中就再也不能修改了。 
    定义方式如下: 
    define("YEAR","2012"); 
    使用define关键字来将2012这个字符串绑定到YEAR上来,以后在程序当中出现YEAR的地方就用2012来代替。一般情况下,我们定义常量时,常量名都使用大写字母。例, 
<?php 
define("YEAR","2012"); 
define("MONTH","12"); 
define("DATE","21"); 
define("THING","Doomsday"); 
echo YEAR."-".MONTH."-".DATE." ".THING; 
?> 



三、static 
static关键字在类中是,描述一个成员是静态的,static能够限制外部的访问,因为static后的成员是属于类的,是不属于任何对象实例,其他类是无法访问的,只对类的实例共享,能一定程序对该成员尽心保护。类的静态变量,非常类似全局变量,能够被所有类的实例共享,类的静态方法也是一样的,类似于全局函数。类的静态方法能访问类的静态的属性。另外说明的是,static的成员,必须使用self来访问,使用this会出错。 


static变量与局部变量的区别是,当静态变量离开了它的作用范围后,它的值不会自动消亡,而是继续存在,当下次再用到它的时候,可以保留最近一次的值。 
例如: 
Php代码   收藏代码
  1. <?php    
  2.     
  3. class Counter    
  4. {    
  5.  private static $count = 0;//定义一个静态属性    
  6.  const VERSION = 2.0;//定义一个常量    
  7.     
  8.  //构造函数    
  9.  function __construct()    
  10.  {    
  11.   self::$count++;    
  12.  }    
  13.      
  14.  //析构函数    
  15.  function __destruct()    
  16.  {    
  17.   self::$count--;    
  18.  }    
  19.      
  20.  //定义一个静态的方法    
  21.  static function getCount()    
  22.  {    
  23.   return self::$count;    
  24.  }    
  25. }    
  26.     
  27. //创建一个实例    
  28. $c = new Counter();    
  29.     
  30. //执行打印    
  31. print( Counter::getCount(). "<br>\n" ); //使用直接输入类名来访问静态方法Counter::getCount    
  32.     
  33. //打印类的版本    
  34. print( "Version useed: " .Counter::VERSION. "<br>\n" );    
  35.     
  36. ?>    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值