PHP 常量问题
大家讲道理
大家讲道理 2017-04-10 17:03:38
0
4
607

写了一段时间php
有一个问题特别想不明白
为什么使用define()定义常量
而它的值确可以是一个变量, 感觉完全不和逻辑呀!!

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

reply all (4)
大家讲道理

LZ要表达的是这个意思,因为$name是个变量,但是也还可以赋值给一个常量NAME

我的理解是php在进行词法分析时,就已经将$name值替换成了"xuwenzhi"这个字符串,而PHP在定义define()这个函数时,传进去的第二个参数实际上就是这个字符串的首地址,仅此而已,参考下define()函数的定义

ZEND_FUNCTION(define) { char *name; int name_len; zval *val; //用于接收"xuwenzhi" if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz|b", &name, &name_len, &val, &non_cs) == FAILURE) { return; } ... }
    Ty80

    define()定义的常量不可更改

      Peter_Zhu

      它的值只能是string, int, boolean这种简单类型,用什么来定义不重要,因为它取的是define执行时这个变量的值。以后你的变量再怎么变常量也不会受影响。
      不过,通常define之后那个变量也没什么价值了。

        迷茫

        常量和变量其实都是一个容器,看你如何去理解这个容器,比如JAVA的话用final String xx = xxx;来表达一个常量,实际上他定义的正确解释应该是另一个不可重写的变量xx这样。那个就简单了,定义了就不能改变的就是常量。PHP中另一个例子就是const,const定义的值在程序流程里面不能被改变,那么就可以理解为常量了。

          Latest Downloads
          More>
          Web Effects
          Website Source Code
          Website Materials
          Front End Template
          About us Disclaimer Sitemap
          php.cn:Public welfare online PHP training,Help PHP learners grow quickly!