Говорят, что eval() is evil. Я хочу, чтобы избежать использования линии eval(), используя надлежащую функциональность PHP5. Учитывая имя класса в методе статического класса, как мне заставить его вернуть реальный объект?PHP: Как вернуть экземпляр объекта класса, учитывая имя класса?
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;
}
}
Просто обратите внимание: вам не нужно хранить свой объект в переменной перед его возвратом. В любом случае, это функционально эквивалентно. – Kenaniah