我有一些php,它需要生成一个脚本。它的一部分是静态的,但是数据是动态生成的。一段时间前,我在另一种语言中遇到了类似的问题,并使用常量替代解决了这个问题。
我想做的是:
interface IConstants {
const SUBSTITUTE = '!substitute';
const FULL_STRING = 'var data = "' . self::SUBSTITUTE . '";';
}
class Util {
public static function replace($haystack, $needle, $replace) {
// implementation
}
}
class SampleClass {
public function getScript() {
$someData = $this->getData();
return Util::replace(IConstants::FULL_STRING, IConstants::SUBSTITUTE, $someData);
}
public function getData() {
// generate $someData
return $someData;
}
}这个设计是否为PHP所接受?如果是的话,我会如何实施?若否,怎样才是合适的选择?
发布于 2014-08-26 08:32:56
替换发生在字符串上,因此被接受。但是,您所收到的错误是由于PHP缺少常量表达式。即。不能编写使用另一个常量的常量。唯一被接受的语法是当第二个常量等于第一个常量时。
这种情况已经发生了变化,但只在最新的PHP5.6中发生了变化,它还不稳定:http://php.net/manual/en/migration56.new-features.php#migration56.new-features.const-scalar-exprs
https://stackoverflow.com/questions/25500653
复制相似问题