【问题标题】:Zend Framework 2 Access DB from Custom LibraryZend Framework 2 Access DB 来自自定义库
【发布时间】:2016-01-05 07:55:01
【问题描述】:

我正在将一个项目从 Zend 框架 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;
        }
    }
}

?>  

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      因为没有直接的方法可以访问这些配置。我已经在 config/autoload 的本地和全局 php 文件中编写了带有数据库访问信息的常量,并在我的班级中使用了它。

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

      【讨论】:

        猜你喜欢
        • 2013-06-02
        • 1970-01-01
        • 2013-06-21
        • 2012-12-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-14
        • 2012-12-21
        相关资源
        最近更新 更多