PHP 类:全局变量作为类中的属性

PHP class: Global variable as property in class(PHP 类:全局变量作为类中的属性)
本文介绍了PHP 类:全局变量作为类中的属性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我在班级之外有一个全局变量 = $MyNumber;

I have a global variable outside my class = $MyNumber;


我如何将其声明为 myClass 中的属性?
对于我班上的每个方法,我都是这样做的:


How do I declare this as a property in myClass?
For every method in my class, this is what I do:

class myClass() {

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

}



我想要这个



I want this

class myClass() {

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

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

}



我想基于全局 $MyNumber 创建一个变量,但是
在方法中使用之前修改

I want to create a variable based on the global $MyNumber but
modified before using it in the methods

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

something like: var $classNumber = global $MyNumber + 100;

推荐答案

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

You probably don't really want to be doing this, as it's going to be a nightmare to debug, but it seems to be possible. The key is the part where you assign by reference in the constructor.

$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() . "
";
$GLOBALS['MyNumber'] = 2;
echo $f->getGlob() . "
";

输出将是

1
2

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

which indicates that it's being assigned by reference, not value.

正如我所说,调试将是一场噩梦,所以你真的不应该这样做.通读维基百科关于封装的文章;基本上,理想情况下,您的对象应该管理自己的数据以及修改该数据的方法;恕我直言,即使是公共财产也是个坏主意.

As I said, it will be a nightmare to debug, so you really shouldn't do this. Have a read through the wikipedia article on encapsulation; basically, your object should ideally manage its own data and the methods in which that data is modified; even public properties are generally, IMHO, a bad idea.

这篇关于PHP 类:全局变量作为类中的属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

Subtract time in PHP(在 PHP 中减去时间)
Limit execution time of an function or command PHP(限制函数或命令 PHP 的执行时间)
How to sum N number of time (HH:MM Format)?(如何求和 N 次(HH:MM 格式)?)
How to get current time in milliseconds in PHP?(如何在 PHP 中以毫秒为单位获取当前时间?)
How to check if time is between two times in PHP(如何检查时间是否在 PHP 中的两次之间)
Convert number of minutes into hours amp; minutes using PHP(将分钟数转换为小时数分钟使用 PHP)