PHP - 意外的全局,期待类中的字符串

标签 php cakephp

在我的类(class)(实际上是一个 CakePHP 模型)中,我试图简单地设置一个变量,然后从函数内部访问它,但我收到以下错误:

解析错误:语法错误,意外的 T_GLOBAL,期望在第 120 行的/path/to/file/file.php 中有 T_FUNCTION

我的文件第 120 行开始如下:

global $accessid = 'accessid';
global $secret = "secret";
global $b = 0;
global $m = 0;

function generateCredentials() {    
    global $accessid;

    return $accessid;
}

知道我哪里出错了吗? 谢谢!

最佳答案

我猜这是在类定义中,例如:

class Foo {
    global $var;
}

你不能在那里使用这个关键字。您可以在类属性之前使用的唯一关键字是可见性声明 varpublicprotectedprivate。类属性始终是它们在其中定义的类的属性,它们不能是全局变量。

如果你坚持,你可以在一个函数中从 global 获取它们并将它们设置为属性:

class Foo {
    public $var;

    public function foo() {
        global $var;
        $this->var = $var;
    }
}

虽然这一切都非常丑陋,尤其是因为 Cake 为您提供了更好的工具来处理这些事情,例如 Configure class在全局注册值。

或者您可能只想创建简单的类属性:

class Foo {

    public $accessid = 'accessid';
    public $secret = "secret";
    public $b = 0;
    public $m = 0;

    function generateCredentials() {    
        $this->accessid;
    }

}

关于PHP - 意外的全局,期待类中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5563758/

相关文章:

php - 使用 codeigniter 将不同表中的值获取到单个数组中?

php - 如何配置 nginx 重写规则以使 CakePHP 在 CentOS 上运行?

php - 从 cakephp 查询中获取平面数组

php - JSON 形式的网站导航树 - 这是不好的做法吗?

php - 处理异常并继续执行

php - 复选框数组分解值并存储在新数组中

php - 将数据从 javascript 传递到代码点火器

cakephp - 在 Cakephp 中使用通配符管理 Redis 键

mysql - 通过创建额外的表格在网站中使用两种语言的最佳方法

php - 获取模型名称以在 CakePHP 的 AppModel 中实现可重用的方法