他們說eval()是邪惡。我想避免使用適當的PHP5功能的eval()行。給定一個靜態類方法中的類名,如何讓它返回一個真實的對象?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 2009-12-08 01:18:11