Home >Backend Development >PHP Tutorial >一般何种情况上定义常量

一般何种情况上定义常量

WBOY
WBOYOriginal
2016-06-13 11:05:521063browse

一般何种情况下定义常量?

新手提问,
常量和变量的值一样,也是存在内存中也是存在栈区吗?
为什么会有常量这种东西呢?反正都是存值,直接用变量代替它不久好了。

常量和变量运用的典型场合有哪些


------解决方案--------------------
看名字就应该知道一些,一个是可以修改的,一个不能修改的
------解决方案--------------------
关键在于 常量是全局的
------解决方案--------------------

本帖最后由 xuzuning 于 2012-12-13 13:39:17 编辑
引用:
版主 变量也可以是全局的呀
是吗?你用用看呀
$a = 123;<br />define('A', 123);<br /><br />function func1() {<br />  echo $a; //Notice: Undefined variable: a<br />}<br />function func2() {<br />  echo A; //123<br />}<br /><br />func1();<br />func2();

------解决方案--------------------
引用:
本帖最后由 xuzuning 于 2012-12-13 13:39:17 编辑
            引用:版主 变量也可以是全局的呀是吗?你用用看呀PHP code?123456789101112$a = 123;define('A', 123); function func1() {  echo $a; //Not……

他的意思可能是声明成 global
------解决方案--------------------
凑一下热闹
<br />$GLOBALS['a']='aa';<br />function abc(){<br />echo $GLOBALS['a'];<br />}<br />abc();<br />

------解决方案--------------------
繼續打醬油
<br />Define('D','DD');<br />$b='bbb';<br />$GLOBALS['a']='aa';<br />function abc(){<br />	Global $b;//如果不加入这一行,下边的行一定出错,这就是变量的作用范围了.<br />	echo $b;<br />	echo $GLOBALS['a'];<br />	Echo D;<br /><br />	$c='ccc';<br />}<br />abc();<br />Echo D;<br />Echo $c;//這行一定出錯,因為$c聲明的時候作用範圍是在function內

------解决方案--------------------
常量的结构定义:
typedef struct _zend_constant {<br />	zval value;//常量的值<br />	int flags; //CONST_PERSISTENT(跨进程持续存在) <br><font color='#FF8000'>------解决方案--------------------</font><br> CONST_CS(大小写敏感) <br><font color='#FF8000'>------解决方案--------------------</font><br> CONST_CT_SUBST(允许编译时被替代)<br />	char *name;//常量名<br />	uint name_len;//名称长度<br />	int module_number;//常量模块号,由用户定义的常量,此属性会被初始化为PHP_USER_CONSTANT<br />} zend_constant;




变量的结构定义
struct _zval_struct {<br />	/* Variable information */<br />	zvalue_value value;		//变量值<br />	zend_uint refcount__gc;   //引用计数,gc会根据此值来决定是否回收内存<br />	zend_uchar type;	//变量类型<br />	zend_uchar is_ref__gc; //是否是一个引用<br />};



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