Запретить доступ к определенной переменной из глобальной области видимости - PullRequest
1 голос
/ 21 октября 2011

Есть ли способ запретить выбор переменной из глобальной области видимости?

Что-то вроде:

#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';
    }
}

Не знаю, возможно ли это, но в любом случае, заинтересован в ООПonly fashion.

Reason?

Запретить конкретному классу быть созданным в переменную и затем вынутым из глобальной области видимости для повторного использования его функций.Сделайте урок полностью «приватным», вроде как мастер-класс, который выполняет всю автоматизацию.

Надеюсь, я все прояснил.

1 Ответ

2 голосов
/ 21 октября 2011

Единственный способ, которым я могу придумать, - это "подделать" глобальную область видимости ...

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

и теперь помещение кода в actual.php выглядит как «нормальный» код, но на самом деле он находится внутри области действия функции. Очевидно, что вы не можете теперь объявлять функции или классы в actual.php, но в противном случае они ведут себя одинаково, за исключением того, что любые объявленные переменные будут в области действия функции вместо глобальной области видимости.

Хотя я бы не стал этого делать. Удар палкой обычно срабатывает, если кто-то делает глупости, подобные глобалам;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...