ZF2:如果必须在较新的项目中进行教程更改

时间:2014-07-14 06:12:35

标签: zend-framework2 zend-form zend-db

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

我在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)); 

如果不再提出旧方法,或者更新方法只是构建事物的另一种方法。

0 个答案:

没有答案