将 Doctrine DBAL 添加到自己的 php 项目中
Posted
技术标签:
【中文标题】将 Doctrine DBAL 添加到自己的 php 项目中【英文标题】:Add Doctrine DBAL into own php project 【发布时间】:2015-11-01 17:30:53 【问题描述】:尝试将 Doctrine DBAL 添加到我自己的项目中以使用它来访问我的数据库等。我没有作曲家,我从未使用过它。根据文档,这就是我想要做的:
use Doctrine\Common\ClassLoader;
class Connection
var $connection;
//Constructor
public function __construct()
require_once "doctrine/Common/ClassLoader.php";
$classLoader = new ClassLoader('Doctrine', 'doctrine');
$classLoader->register();
$config = new Configuration();
$connectionParams = array(
'dbname' => 'mydb',
'user' => 'root',
'password' => "",
'host' => 'localhost',
'driver' => 'pdo_mysql',
);
$this->connection = \Doctrine\DBAL\DriverManager::getConnection($connectionParams, $config);
这取自这里: -http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html 和: - http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/introduction.html
我的项目中添加了 Common 和 DBAL 文件夹
我的文件夹结构如下:
-
根
教义
DBAL
常见
php 的东西
index.php (connection.php) 被执行
所以发生的情况是,根据我对代码所做的更改,我要么得到“找不到类 XY”或类似的东西。我永远无法按照教程执行它。
我在这里做错了什么?
我只想拥有连接对象,在那里我可以开始做我的事情,比如使用查询构建器等...
我完全迷路了……
更新:按要求安装了作曲家并立即拥有此代码:
use Doctrine\DBAL\Configuration;
class Connection
var $connection;
//Constructor
public function __construct()
$config = new Configuration();
$connectionParams = array(
'url' => 'mysql://root:secret@localhost/mydb',
);
$this->connection = \Doctrine\DBAL\DriverManager::getConnection($connectionParams, $config);
这是我第一个链接中的第二个代码示例。告诉我“找不到类'Doctrine\DBAL\Configuration'”。有趣的是,IntelliJ 可以完美地自动完成路径(在路径中完成 DBAL 时建议我配置)但 PHP 没有找到它。如果我删除新的配置 PHP 只是告诉我,它没有找到 DriverManager...
虽然我通过 composer 正确安装了它,但至少 composer 告诉我它现在安装正确(composer 在哪里保存库?)
【问题讨论】:
我没有作曲家,也没用过。改这个,你不会后悔的! 我完全同意@michael:Composer 是一种管理外部库的简单方法:try it,你永远不会回去;) 是的,我确定这是正确的。但是对于这个项目,我现在只想让它工作并实际开始使用查询生成器......没有别的...... @michael:好的,刚刚安装了 composer。安装了学说/dbal,它说我成功安装/更新了它。现在:我到底如何使用作曲家导入它的学说?复制示例代码对我不起作用... 好吧,如果设置正确,您可以简单地在文件中使用 `use Namespace\Class' dbal。您能否使用您现在拥有的代码更新您的问题?那我去看看! 【参考方案1】:您现在需要要求作曲家自动加载文件。
require __DIR__.'/vendor/autoload.php';
use Doctrine\DBAL\Configuration;
class Connection
var $connection;
//Constructor
public function __construct()
$config = new Configuration();
$connectionParams = array(
'url' => 'mysql://root:secret@localhost/mydb',
);
$this->connection = \Doctrine\DBAL\DriverManager::getConnection($connectionParams, $config);
请注意,根据您的目录结构,自动加载文件可能位于其他位置,但通常应该可以。
【讨论】:
但是我敢肯定,一旦您对作曲家使用得更自如,您就会爱上它。这是一个非常好的工具! @BoA456【参考方案2】:注意命名空间的使用:如果Doctrine的加载器命名空间是Doctrine\Common\ClassLoader
,则必须将文件放在Doctrine\Common
文件夹中(“Doctrine”,大写“D”)。
参见 Doctrine DBAL 文档的Introduction chapter 中显示的代码 sn-p。
【讨论】:
好的,现在就这样做。感谢您清除它。然而 PHP 现在声明“找不到类 'Doctrine\DBAL\Configuration'”,尽管我添加了使用 Doctrine\DBAL\Configuration ...以上是关于将 Doctrine DBAL 添加到自己的 php 项目中的主要内容,如果未能解决你的问题,请参考以下文章
laravel5.1 上安装依赖(doctrine / dbal)
避免使用Doctrine DBAL查询构建器select语句将驼峰别名名称转换为小写
Doctrine/dbal - 尝试将字符串字段更改为日期时出错
工匠迁移错误“类'Doctrine \ DBAL \ Driver \ PDOMySql \ Driver'not found”,