首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在const中使用const

在const中使用const
EN

Stack Overflow用户
提问于 2014-08-26 07:51:37
回答 3查看 118关注 0票数 2

我有一些php,它需要生成一个脚本。它的一部分是静态的,但是数据是动态生成的。一段时间前,我在另一种语言中遇到了类似的问题,并使用常量替代解决了这个问题。

我想做的是:

代码语言:javascript
复制
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所接受?如果是的话,我会如何实施?若否,怎样才是合适的选择?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-08-26 08:33:04

在5.6之前的PHP版本中,您不能这样做。从这些版本的PHP中的组成部分构建常量的唯一方法是使用versions ()。我必须查找一下才能确定,但我认为您不能使用interface()来定义类/接口常量。

从PHP5.6开始,您将能够定义这样的常量,但前提是它们是用其他常量定义的。

定义()对const

票数 1
EN

Stack Overflow用户

发布于 2014-08-26 08:32:38

这在PHP中是不可能的,至少在5.4.4中是不可能的,这与Java不同。

文档说:

该值必须是一个常量表达式,而不是(例如)变量、属性、数学运算的结果或函数调用。

一个简单的尝试如下:

代码语言:javascript
复制
$ php -r 'const FOOBAR = "AF" . "A". "R"; '
PHP Parse error:  syntax error, unexpected '.', expecting ',' or ';' in Command line code on line 1

通过以下方式:

代码语言:javascript
复制
$ php --version
PHP 5.4.4-14+deb7u14 (cli) (built: Aug 21 2014 08:36:44) 
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies

对于全局常量,可以使用定义

票数 1
EN

Stack Overflow用户

发布于 2014-08-26 08:32:56

替换发生在字符串上,因此被接受。但是,您所收到的错误是由于PHP缺少常量表达式。即。不能编写使用另一个常量的常量。唯一被接受的语法是当第二个常量等于第一个常量时。

这种情况已经发生了变化,但只在最新的PHP5.6中发生了变化,它还不稳定:http://php.net/manual/en/migration56.new-features.php#migration56.new-features.const-scalar-exprs

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25500653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档