Zend framework2 ZF2:If教程更改必须在较新的项目中完成

Zend framework2 ZF2:If教程更改必须在较新的项目中完成,zend-framework2,zend-form,zend-db,Zend Framework2,Zend Form,Zend Db,这个问题可能看起来像是基于意见,但我很困惑,也没有发现任何澄清的资源,所以只希望这里的任何机构有更好的想法 我曾在ZF2的测试版期间参与过该项目,并一直工作到第一个稳定版本。我遵循框架应用程序指南来构建项目结构/代码模型、表单和控制器。经过2年的间隔,现在我又得到了一个ZF2项目ZF2库2.2版本,我通过复制我以前的项目源代码文件开发了这个版本。项目正在进行中 但当我签出新版本的骨架应用程序时,我感到困惑,这里的骨架和许多更改都比上一个版本要多。我不知道它们是为了更好,是强制性的还是过度设计的

这个问题可能看起来像是基于意见,但我很困惑,也没有发现任何澄清的资源,所以只希望这里的任何机构有更好的想法

我曾在ZF2的测试版期间参与过该项目,并一直工作到第一个稳定版本。我遵循框架应用程序指南来构建项目结构/代码模型、表单和控制器。经过2年的间隔,现在我又得到了一个ZF2项目ZF2库2.2版本,我通过复制我以前的项目源代码文件开发了这个版本。项目正在进行中

但当我签出新版本的骨架应用程序时,我感到困惑,这里的骨架和许多更改都比上一个版本要多。我不知道它们是为了更好,是强制性的还是过度设计的

一些区别是:

在ZF2.0中

表单验证程序就是这样工作的

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中

在ZF2.0中

DB模型就是这样工作的

if (!$this->inputFilter) {
   $inputFilter = new InputFilter();

   $inputFilter->add(array(
     'name'     => 'user_id',
     'required' => true,
     'filters'  => array(
         array('name' => 'StripTags'),
         array('name' => 'StringTrim'),
     ),
     'validators' => array(
            ------
   )));
}
在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;
        },
    ),
);
'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);
 }, 
在模型构造函数中

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中

在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;
        },
    ),
);
'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)); 

如果不建议使用较旧的方法,更多或更新的方法只是构建东西的另一种方法。

那么问题是什么?我的问题是,正如Zend在教程中将很多东西从2.0更改为2.2一样。因此,如果建议在表单/模型中使用更新的方法,如果是,那么与2.0或它只是另一种工作方式相比有什么优势,我可以自由选择适合我的方法。