PHP:给定一个类名,如何返回一个实例化的类对象?

Vol*_*ike 1 php oop static eval class

他们说eval()是邪恶的.我想避免使用适当的PHP5功能使用eval()行.给定静态类方法中的类名,如何使其返回真实对象?

class Model {
  public static function loadModel($sModelPath) {
    if (!(strpos(' ' . $sModelPath, '/')>0)) {
      $sModelPath .= '/' . $sModelPath;
    }
    $sModelName = str_replace('/','_',$sModelPath);
    // P is a global var for physical path of the website
    require_once(P . '_models/' . $sModelPath . '.php');
    eval("\$oObject = new $sModelName" . '();');
    return $oObject;
  }
}
Run Code Online (Sandbox Code Playgroud)

Ken*_*iah 12

return new $sModelName();

您也可以通过动态名称调用函数:

$func = "foobar";
$func("baz"); //foobar("baz")
Run Code Online (Sandbox Code Playgroud)