【问题标题】:Why Can't Serialized Objects Be Stored in const Constants?为什么不能将序列化的对象存储在 const 常量中?
【发布时间】:2011-08-19 03:27:34
【问题描述】:
<?php
    const FOOBAR = "Foo"; // Works.
    const FOOBAR = array("Foo", "Bar"); // Doesn't work.  Makes sense.
    const FOOBAR = serialize(array("Foo", "Bar")); // Doesn't work.  Okay.  :\

    define("FOOBAR", serialize(array("Foo", "Bar"))); // Works!  The heck?
 ?>

PHP Parse error: syntax error, unexpected '(', expecting ',' or ';'

为什么常量可以在用define() 声明时设置为序列化对象,但不能用const 关键字声明?我在这里错过了什么?

(用5.3.5-1ubuntu7.2测试。)

【问题讨论】:

标签: php serialization constants declaration


【解决方案1】:

const 只能接受标量或非表达式值。

define 将采用表达式值,这就是为什么 define 适用于您的情况。

【讨论】:

    【解决方案2】:

    const 是一个编译时动作。定义是一个运行时动作。更多的 php 机制,包括数组分配和空间分配在运行时可用。

    一个相关的SO question

    谷歌 php 常量定义

    了解更多

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-27
      • 2012-03-30
      • 1970-01-01
      • 1970-01-01
      • 2019-12-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多