PHP 类 : Global variable as property in class

标签 php class variables methods

我在类(class)之外有一个全局变量 = $MyNumber;


如何在 myClass 中将其声明为属性?
对于我类(class)中的每个方法,我都是这样做的:

class myClass() {

    private function foo() {
         $privateNumber = $GLOBALS['MyNumber'];
    }

}



我想要这个

class myClass() {

    //What goes here?
    var $classNumber = ???//the global $MyNumber;

    private function foo() {
         $privateNumber = $this->classNumber;
    }

}



编辑:我想根据全局 $MyNumber 创建一个变量,但是
在方法中使用之前进行了修改

类似:var $classNumber = global $MyNumber + 100;

最佳答案

您可能真的想要这样做,因为这将是调试的噩梦,但它似乎是可能的。关键是您在构造函数中通过 reference 分配的部分。

$GLOBALS = array(
    'MyNumber' => 1
);

class Foo {
    protected $glob;

    public function __construct() {
        global $GLOBALS;
        $this->glob =& $GLOBALS;
    }

    public function getGlob() {
        return $this->glob['MyNumber'];
    }
}

$f = new Foo;

echo $f->getGlob() . "\n";
$GLOBALS['MyNumber'] = 2;
echo $f->getGlob() . "\n";

输出将是

1
2

这表明它是通过引用而不是值分配的。

正如我所说,调试将是一场噩梦,所以你真的不应该这样做。阅读关于 encapsulation 的维基百科文章;基本上,您的对象应该理想地管理自己的数据以及修改该数据的方法;恕我直言,即使是公共(public)属性(property)通常也是个坏主意。

关于PHP 类 : Global variable as property in class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4489134/

相关文章:

java - 长时间尝试语句

linux makefile 帮助声明基于 make gnu 或 make linux 规则的 FC FFLAGS 变量

php - 如何使用 TripleDES 加密与 Node.js 和 PHP-mcrypt 获得相同的结果?

php - 如何强制 PHP CLI 读取我的 .user.ini 文件?

java - 一个对象能知道它的方法是从哪个对象调用的吗?

objective-c - IOS - 使用 #import 类的正确方法

javascript - 格式化 RSS 提要日期和时间

php - 在 WordPress 中按字数对帖子进行排序

java - isInstance 中的 ClassNotFoundException

variables - 在 Go 中设置全局条件变量