禁止从全局范围访问特定的变量

时间:2011-10-21 11:09:18

标签: php oop global-variables php-5.3

有没有办法禁止变量被选出全局范围?

类似的东西:

#index.php
$forbidden = 'you should not be able to access me outside this scope'; // maybe invoke a function or namespaces?
require 'stuff.php';
echo new stuff();

#stuff.php
class stuff
{
    public function __toString()
    {
        global $forbidden; // to result in an error or something?
        /*
            just a random example, but yes, any way
            to somehow make a variable not global?
        */
        return 'I am forbidden';
    }
}

不知道是否可能,但无论如何,只对OOP感兴趣。

原因?

禁止将特定类实例化为变量,然后从全局范围中取出以重用它的函数。使类完全“私有”,有点像完成所有自动化的大师班。

希望我已经说清楚了。

1 个答案:

答案 0 :(得分:2)

我能想到的唯一方法就是“伪造”全球范围......

//index.php
function scope() {
    require 'actual.php';
}
scope();

现在,将代码放在actual.php看起来像“普通”代码,但它实际上是在函数范围内。显然你现在不能在actual.php中声明函数或类,但是它的行为相同,除了声明的任何变量都在函数的作用域而不是全局作用域。

我真的不会这样做。如果有人做类似全局的愚蠢事情,那么用棍子殴打通常会起作用;)