在我的类中(实际上是一个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 - PHP-意外的全局,期望在类中使用String,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5563758/

10-13 23:08