有没有办法禁止变量被选出全局范围?
类似的东西:
#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感兴趣。
禁止将特定类实例化为变量,然后从全局范围中取出以重用它的函数。使类完全“私有”,有点像完成所有自动化的大师班。
希望我已经说清楚了。
答案 0 :(得分:2)
我能想到的唯一方法就是“伪造”全球范围......
//index.php
function scope() {
require 'actual.php';
}
scope();
现在,将代码放在actual.php看起来像“普通”代码,但它实际上是在函数范围内。显然你现在不能在actual.php中声明函数或类,但是它的行为相同,除了声明的任何变量都在函数的作用域而不是全局作用域。
我真的不会这样做。如果有人做类似全局的愚蠢事情,那么用棍子殴打通常会起作用;)