PHP5.6起CONST新特性定義類常量可以使用常量標量表達式(Constant scalar expressions),例如:
<?php
class MyTimer {
const SEC_PER_DAY = 60 * 60 * 24;
}
?>
define和CONST的區別是define可以用於定義全局常量,而CONST是定義類的常量。
static靜態變量與define,CONST的區別是static定義的變量是可以改變的,而後兩者不行,並且static靜態變量是隨類直接在內存中初始化,可以直接用,如$oneclass::hobby.
define可以定義數組嗎?例如define(‘A_ARRAY’,array(‘o’=>’ooo’,’x’=>’xxx’)).
在PHP5.6之前是不行的,但是可以通過serialize把數組序列化,如:
# define constant, serialize array
define ("FRUITS", serialize (array ("apple", "cherry", "banana")));
# use it
$my_fruits = unserialize (FRUITS);
PHP5.6之後可以直接const定義一個數組:
const DEFAULT_ROLES = array('guy', 'development team');
或者:
const DEFAULT_ROLES = ['guy', 'development team'];
如果是PHP7,可以直接用define定義數組:
define('DEFAULT_ROLES', array('guy', 'development team'));