【问题标题】:Composer, class not found作曲家,找不到类
【发布时间】:2014-04-30 07:56:36
【问题描述】:

我在我的 CodeIgniter 项目中安装了 composer,下载了 2 个包:Aura/Sql 和 Aura/SqlQuery

这是我在 index.php 文件中的代码

require_once ROOTPATH . 'vendor/autoload.php';

use Aura\Sql\ExtendedPdo;
$db = new ExtendedPdo('mysql:host=127.0.0.1;dbname=mydb', 'root', '', array(), array());
var_dump($db->fetchAll('SELECT * FROM sh_users'));

use Aura\Sql_Query\QueryFactory;
$query_factory = new QueryFactory('mysql');

require_once BASEPATH . 'core/CodeIgniter.php';

两个片段都是从文档中复制的

var_dump 给出了完美的结果,但 QueryFactory 给出了错误

Fatal error: Class 'Aura\Sql_Query\QueryFactory' not found in F:\XAMPP\htdocs\codeigniter\public\admin\index.php on line 83

我不知道为什么。所有供应商都已下载,所有 php 文件都在那里,但似乎自动加载没有加载它。为什么?

【问题讨论】:

  • 您的composer.json 文件是什么样的?
  • 您应该阅读您实际使用的分支/版本的文档。试试这个而不是 master README.md - github.com/auraphp/Aura.Sql_Query/blob/rename/README.md
  • 问题出在命名空间上。在另一个版本之前更改的是 SqlQuery。所以可能是某个测试版出现了问题。

标签: php sql codeigniter composer-php


【解决方案1】:

看看磁盘上的文件结构;您实际上可能希望包含Aura\SqlQuery\QueryFactory,而不是Sql_Query 命名空间下的内容。可能就是这么简单。当我忘记在符合 PSR-0 的路径中重命名类以使其与文件名匹配时,我遇到了问题,所以如果实际上磁盘上的内容位于:

Aura\SqlQuery\QueryFactory 但你的使用语句是Aura\Sql_Query\QueryFactory,你会遇到问题。

正如下面在 cmets 中提到的,Aura 开发人员似乎有两个分支,Githup 项目上的主分支 auraphp/Aura.Sql_Query 仍然具有 Sql_Query 的目录结构,其中作为默认包,由 packagist 提供服务dev-rename 分支将 Sql_Query 替换为 SqlQuery

希望有帮助!

【讨论】:

  • 似乎 Aura 开发人员决定删除他们的 dev-rename 分支中的下划线,这是我打赌 OP 正在使用的(这是 packagist 上的默认版本)
  • @Phil 正是我现在的想法。 Github master 还是有下划线...
  • 感谢大家的支持。仅供参考:@nietonfir 大师就在那里。只有 develop 用于 v1,develop-2 用于 version2 开发。不要使用 master 分支。
猜你喜欢
  • 2018-04-05
  • 2016-01-17
  • 2015-01-30
  • 2017-12-01
  • 1970-01-01
  • 2017-02-06
  • 2015-07-04
  • 2016-01-22
  • 2018-10-01
相关资源
最近更新 更多