这个问题可能看起来像基于意见,但我很困惑,也没有找到任何资源澄清,所以只希望任何机构在这里更好的想法。
我在Beta版本期间参与过ZF2项目,并一直工作到第一次稳定发布。我遵循Skeleton应用程序指南来构建项目结构/代码(模型,表单和控制器)。然后在2年之后,我又得到了一个ZF2项目(ZF2库2.2版),我通过复制我的旧项目源代码文件来开发它。项目现在工作。
但是当我检查更新版本的Skeleton应用程序时,我感到很困惑,这里的骨架和很多变化都比之前的更多。我不知道他们是为了更好,强制还是过度设计。
有些不同之处:
在ZF2 2.0中
Form Validator就是这样的。
if (!$this->inputFilter) {
$inputFilter = new InputFilter();
$inputFilter->add(array(
'name' => 'user_id',
'required' => true,
'filters' => array(
array('name' => 'StripTags'),
array('name' => 'StringTrim'),
),
'validators' => array(
------
)));
}
在ZF2 2.2中
if (!$this->inputFilter) {
$inputFilter = new InputFilter();
$factory = new InputFactory();
$inputFilter->add($factory->createInput(array(
'name' => 'artist',
'required' => true,
'filters' => array(
array('name' => 'StripTags'),
array('name' => 'StringTrim'),
),
'validators' => array(
---------
),
)));
在ZF2 2.0中
DB模型就是这样的。
在Module.php中
return array(
'factories' => array(
'Test\Model\UserTable' => function($sm) {
$dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
$table = new Model\UserTable($dbAdapter);
return $table;
},
),
);
在模型构造函数
中public function __construct(Adapter $adapter)
{
$this->adapter = $adapter;
$this->resultSetPrototype = new ResultSet();
$this->resultSetPrototype->setArrayObjectPrototype(new User());
$this->initialize();
}
和模型一样查询
$rowset = $this->select(array('id' => $id));
在ZF2 2.2中
在Module.php中
'Application\Model\UserTable' => function($sm) {
$tableGateway = $sm->get('UserTableGateway');
$table = new UserTable($tableGateway);
return $table;
},
'VarietyTableGateway' => function ($sm) {
$dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
$resultSetPrototype = new ResultSet();
$resultSetPrototype->setArrayObjectPrototype(new User());
return new TableGateway('user', $dbAdapter, null, $resultSetPrototype);
},
不需要模型构造函数设置
模型查询
$rowset = $this->tablegateway->select(array('id' => $id));
如果不再提出旧方法,或者更新方法只是构建事物的另一种方法。