【问题标题】:Class not found using namespaces使用命名空间找不到类
【发布时间】:2012-10-23 02:48:39
【问题描述】:

当我创建数据库连接字符串时,使用 ZF1 可以正常工作。但是在 ZF2 数据库适配器中似乎 BUG 永远不会起作用,它总是给出以下内容:

错误:

[Fri Nov 02 13:26:25 2012] [error] [client 127.0.0.1] PHP Fatal error:  Class 'Application\\Controller\\Zend\\Db\\Adapter\\Adapter' not found in /var/www/html/org/module/Application/src/Application/Controller/TestController.php on line 17

代码:

<?php
namespace Application\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use Zend\Db\Adapter\Adapter;
//use Zend\Db\Adapter\Platform\PlatformInterface;
//use Zend\Db\ResultSet\ResultSet;
class TestController extends AbstractActionController {
  public function indexAction() {
    $driverArray = array(
    'driver' => 'Pdo_Mysql',
    'database' => 'web145',
    'username' => 'web145',
    'password' => 'meandmypassword',
    'host'=>'localhost'
    );
    $adapter = new Zend\Db\Adapter\Adapter($driverArray);
    //Zend\Db\Adapter\Adapter::query('SELECT * FROM `sh_operaor`');
    //var_dump ($adapter->query('SELECT * FROM `sh_operaor`'));
    exit;
  }
}

【问题讨论】:

    标签: php namespaces zend-framework2


    【解决方案1】:

    既然你已经使用过命名空间 Zend\Db\Adapter\Adapter,你应该这样称呼它:

    $adapter = new Adapter($driverArray);
    

    或者您可以从以反斜杠开头的根命名空间调用它

    $adapter = new \Zend\Db\Adapter\Adapter($driverArray);
    

    【讨论】:

    • 如果你想使用完整的限定名,它必须以反斜杠 \ 开头。如果没有,PHP 会在当前命名空间中查找子命名空间 Zend
    • 您在全名示例中添加了一个额外的Adapter
    猜你喜欢
    • 2020-02-10
    • 1970-01-01
    • 2016-08-15
    • 2014-10-19
    • 1970-01-01
    • 2015-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多