我想知道是否可以创建一个函数并传递一个类名。然后,该函数检查当前是否存在该类的实例,如果它不是,则创建该类的实例。此外,如果可能,使该变量全局并要求返回它。我意识到返回可能是唯一的选择。
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.
}
这可能还是我疯了?
答案 0 :(得分:2)
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那样的全局对象。但是你不能简单地制作一个容器来容纳这个物体。
答案 1 :(得分:0)
PHP有一个名为class_exists($ class_name)的函数,返回一个bool。
答案 2 :(得分:0)
有些事情:
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");
}
}