所以我想要一个模型,我想以正确的方式去做。我这样做了吗?
<?php
class Factory
{
public function buildModel($model)
{
require MODELS . $model . '.php';
return new ucfirst($model):
}
}
在我的控制器中
public function create()
{
...
$model = $this->factory->buildModel('user');
$model->save();
}
答案 0 :(得分:0)
看起来不错;可能会有一些改进吗?
我怀疑你想传递参数或依赖注入其他对象到加载的模型中,你的用户类可能需要数据库访问,还是路由?:
同样$this->model->load()
更适合。
<?php
public function create()
{
...
$model = $this->model->load('user', $something, $something_else);
$model->save();
}
?>
因此模型加载器看起来像:
<?php
class model{
/**
* model loader
*/
private function load()
{
// retrieve passed arguments
$args = func_get_args();
// delete the first argument which is the class name
$class = array_shift($args);
try
{
$path = MODELS . $class . '.php';
if (file_exists($path))
{
require_once ($path);
$ref = new ReflectionClass(basename($class));
return $ref->newInstanceArgs($args);
} else
{
throw new Exception('Model class not found: ' . htmlentities($path));
}
}
catch (exception $e)
{
return $e->getMessage();
}
}
}
?>
并且用户类将获得类似的构造参数,
<?php
Class user{
function __construct($something, $something_else){
$this->something = $something;
$this->something_else = $something_else;
}
function save(){
//yada
}
...
}
?>