ice-cream/database

IceCream 框架的数据库连接处理程序

1.4.2 2018-03-16 21:05 UTC

This package is not auto-updated.

Last update: 2024-09-15 01:13:11 UTC


README

Build Status Packagist Maintenance Made With Love

在最简单的术语中,这是一个 DBAL。它是 PDO 的一层薄包装,同时返回一个连接的 PDO 对象。

我们可以连接到多个 PGSQL 或 MYSQL 数据库实例(见下文),并为每个实例创建打开的连接。

  • 需要 PHP 7.2.x
  • 独立

安装

composer require ice-cream/database

目的?

我想了解 PDO,我还有很多关于它的东西要学。我本可以用并创建一个围绕 Doctrines DBAL 的薄包装,就像我在 Ice Cream Router 中所做的那样,我在那里做了一个围绕 Symfony 路由器的薄包装。

但我认为我可以构建一个超级简单、超级容易开始的项目,并且能够让我了解 PHP 如何连接到数据库。

虽然这不像一个完整的 DBAL 那样完善,但它是一个很好的开始。你打开一个连接,返回一个数据库对象,完成你的工作,然后继续你的生活。

这里有很大的成长空间和改进空间,你的反馈和帮助将帮助塑造 Ice Cream 组件成为一个框架。

文档

您可以在这里查看项目的完整文档。

配置

创建一个新的连接实例

use IceCreamDatabase\Connect;

// Similar to that of Laravel if you are familiar.
$connections = [
  'mysql' => [
    'host' => '127.0.0.1',
    'port' => 3306,
    'database' => '',
    'username' => 'root',
    'password' => 'root',
    'charset' => 'utf8',
  ],
  'pgsql' => [
    'host' => '127.0.0.1',
    'port' => 5432,
    'dbname' => 'scotchbox',
    'username' => 'root',
    'password' => 'root',
    'charset' => 'utf8',
  ],
  'sqlite' => [
    'temp_file' => ':memory'
  ]
]

// At this time I have made the choice to only support mysql and pgsql as well as sqlite connections.
// More can be added in the future, simplicity was the game here.

$con = new Connect($connections);

如果我们无法连接到数据库,这将抛出一个 PDO 异常。该构造函数还将连接到连接数组中注册的所有数据库。

注意!!

目前,数组中指定的选项是我们唯一接受的选项。我想在几天内推出这个组件,并决定在第一次迭代中尽可能保持简单。

那么我们现在已经连接了,我们可以做什么呢?

$con->db()->exec( ... );

// Should you have multiple databases configured you can do:

$con->db('mysql')->exec( ... );
$con->db('pgsql')->exec( ... );
$con->db('sqlite')->exec( ... );

注意!!

注意在配置中,我们如何将密钥指定为 mysqlpgsql,以及 sqlite

这很重要,因为这些与创建连接字符串以连接到数据库的受支持驱动程序相对应。

这些名称也存储在管理所有连接的相关连接管理器中。

// Get the current connection name:
$con->manager()->getCurrentConnectionName(); // mysql, sqlite or pgsql