Проверьте, существует ли экземпляр класса, если не создать экземпляр

Мне было интересно, можно ли создать функцию и передать ей имя класса. Затем функция проверяет, существует ли экземпляр класса в данный момент, если он не создает экземпляр класса. Кроме того, если возможно, сделайте эту переменную глобальной и потребуйте ее возврата. Я понимаю, что возвращение может быть единственным вариантом.

function ($class_name) { // Check if Exists // __autoload will automatically include the file // If it does not create a variable where the say '$people = new people();' $class_name = new $class_name(); // Then if possible make this variable a globally accessible var. } 

Возможно ли это, или я сумасшедший?

Related of "Проверьте, существует ли экземпляр класса, если не создать экземпляр"

eval – это единственный способ сделать это. Очень важно убедиться, что это не предусмотрено вводом пользователя, например, из значений $_GET или $_POST .

 function create_or_return($class_name) { if(! class_exists($class_name)) { eval("class $class_name { }"); // put it in the global scope $GLOBALS[$class_name] = new $class_name; } } create_or_return("Hello"); var_dump($GLOBALS['Hello']); /* class Hello#1 (0) { } */ 

Вы не можете сделать его глобально доступным, потому что PHP не имеет глобального объекта, такого как javascript. Но вы не можете просто сделать контейнер, держащий объект.

PHP имеет функцию, называемую class_exists ($ class_name), возвращает bool.

http://www.php.net/manual/en/function.class-exists.php

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

 function some_fumction($class_name) { if(class_exists($class_name)) { return new $class_name; } else { throw new Exception("The class $class_name does not exist"); } }