2016-01-05 54 views
0

我从Zend框架1.4至2.4迁移的项目,我有一类“供应商/自定义/班/ user.php的”Zend框架2 Access数据库从定制库

<?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; 
     } 
    } 
} 

?> 

我需要加载在我的文件“config/autoload”,global.php和local.php中合并配置。 $config = $this->getServiceLocator()->get('config');有人可以指导我如何从自定义类中获取这些配置。基本上我试图做的是编写一组类,如用户,项目,模型以外的客户,并通常在所有模块,如CMS,管理面板,网站中使用它们。感谢您的指导。

回答

0

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

class DBManager 
{ 
    protected $adapter ; 
    protected $connection ; 

    /** 
    * Constructor 
    */ 
    public function __construct() 
    { 
     $configs = array(
      'hostname' => DB_SERVER_NAME, 
      'driver' => 'Pdo_Mysql', 
      'database' => DB_DATABASE_NAME, 
      'username' => DB_USER_NAME, 
      'password' => DB_PASSWORD , 
     ); 

     $this->adapter = new Adapter($configs); 
    } 

} 
0

方式可能是利用工厂。

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

在你User类,你需要使用接受的控制器参数,你需要传递给它