Zend Framework 2从自定义库访问数据库

时间:2016-01-05 07:55:02

标签: php zend-framework zend-framework2 zend-db zend-db-table

我正在将项目从Zend framework 1.4迁移到2.4,我在" vendor / custom / classes / User.php"

中有一个类
<?php

namespace Classes;

use Zend\Db\TableGateway\TableGateway;
use Zend\ServiceManager\FactoryInterface;
use Zend\ServiceManager\ServiceLocatorInterface;
use Zend\Db\Adapter\Adapter;

class User 
{
    public function getItemById($id)
    {
        //$config = $this->getServiceLocator()->get('config');
        //This only work in controller
        $configs = array();
        $adapter = new Adapter($configs);


        $projectTable = new TableGateway('project', $adapter);
        $rowset = $projectTable->select(array('type' => 'PHP'));

        echo 'Projects of type PHP: ';
        foreach ($rowset as $projectRow) {
             echo $projectRow['name'] . PHP_EOL;
        }
    }
}

?>  

我需要在&#34; config / autoload&#34;中的文件中加载合并配置。 ,global.php和local.php。 $config = $this->getServiceLocator()->get('config');有人可以指导我如何从自定义类中获取这些配置。基本上我要做的是在模型之外编写像User,Project,Customer这样的类,并在CMS,管理面板,网站等所有模块中使用它们。感谢您的指导。

2 个答案:

答案 0 :(得分:0)

一种方法可能是使用工厂。

您创建了一个类UserFactory implementing Zend\ServiceManager\FactoryInterface。此类将包含createService参数的$serviceLocator方法。您可以使用此服务定位器来检索您的依赖项并将它们传递给User类。

User类中,您需要使用一个控制器来接受您需要传递给它的依赖项作为参数

答案 1 :(得分:0)

由于没有直接的方式来访问这些配置。我在config / autoload中的本地和全局php文件中编写了带有DB访问信息的常量,并在我的课程中使用它。

Event