<?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
测试。)
答案 0 :(得分:4)
const只能采用标量或非表达式值。
define将采用表达式值,这就是为什么定义适用于您的情况。
答案 1 :(得分:2)
const是一个编译时动作。 define是一个运行时动作。在运行时可以使用更多的php机器,包括数组分配和空间分配。
相关的SO question
Google php const define
了解更多