jkga/dbcon

一个连接不同关系型数据库管理系统(RDBMS)和NoSQL的PHP API

dev-master 2016-03-02 01:29 UTC

This package is auto-updated.

Last update: 2024-08-29 03:47:37 UTC


README

一个PHP API,用于连接不同的关系型数据库管理系统(RDBMS)和NoSQL,例如mysql、mysqli、postgresql、mongodb等。

为什么需要这个

Dbcon在底层使用PDO连接到不同的数据库管理系统,并为没有PDO的数据库提供了原生函数。如果您需要在单个文件中定义多个数据库连接并在稍后建立连接,则可能需要这些功能。它允许应用程序通过一个其他开发者可以更容易且更干净地使用的包装器连接到不同的数据库管理系统。

优势

  • 开发过程中代码更简洁
  • 配置多个不同的数据库连接
  • 更容易维护
  • 模块化(可以定义自己的扩展。请参阅“扩展”部分)

注意

对于小型项目和简单应用程序,使用原生函数连接和管理数据库。仅建议在维护和生产效率是繁琐任务的较大项目中使用dbcon。

要求

  • PHP 5.4(建议使用PHP 5.5+)
  • PDO驱动程序
  • 由开发者扩展类定义的数据库管理系统(DBMS)驱动程序

目前支持的DBMS

  • MySQL(PDO)/ MySQLi(原生)
  • PostgreSQL(PDO)

如何使用

将zip文件下载到您的计算机上,并将其解压缩到您的服务器根目录。以下是来自example/mysql/mysql.example.php文件的示例脚本,用于连接到MySQL。示例数据库连接脚本位于/example文件夹中,供您参考。

<?php 
	#autoload class
	require_once('/path/to/vendor/autoload.php');
	
	#database configuration
	$database=['host'=>'localhost',
				'username'=>'root',
				'password'=>'',
				'port'=>'',
				'dbms'=>'mysql',
				'dbname'=>'your_database'
			];

	#class mysql
	use \DBCon\MySQL\mysql as MySQL;

	#setup database connection
	$db=new MySQL($database['dbms'],$database['host'],$database['username'],$database['password'],$database['dbname']);

	#open connection to mysql
	$sth=$db->open();

	#add query,bind param ,etc. to command. These will depend on your dbms
	$command=$sth->query(...);

	#execute command
	$command->execute();
		
 ?>

您还可以配置设置以切换或使用不同的DBMS,而不会影响您其余的代码。这样做将允许应用程序通过在多个数据库上读取和写入数据来同步其数据。

数据库配置 ```php #数据库配置 $database_mysql=['host'=>'localhost', 'username'=>'root', 'password'=>'', 'port'=>'', 'dbms'=>'mysql', 'dbname'=>'your_database' ]; $database_pgsql=['host'=>'localhost', 'username'=>'postgres', 'password'=>'root', 'port'=>'5432', 'dbms'=>'pgsql', 'dbname'=>'test' ]; #mysql和pgsql类使用 \DBCon\MySQL\mysql as MySQL; use \DBCon\pgSQL\pgsql as pgSQL; /*设置数据库连接此将保持关闭,除非显式调用'->open()'函数 */ $main_database=new MySQL($database_mysql['dbms'],$database_mysql['host'],$database_mysql['username'],$database_mysql['password'],$database_mysql['dbname']); $for_statistics_purpose=new pgSQL($database_pgsql['dbms'],$database_pgsql['host'],$database_pgsql['username'],$database_pgsql['password'],$database_pgsql['dbname']);

?>

<br/>
Page containing CRUD function
```php
<?php 
	#your page.php
	#autoload class
	require_once('/path/to/your/config.php');
	
	#Use this statement to open the connection configured on your configuration
	#open connection to mysql
	//main database
	$sth=$main_database->open();
	#or open connection to pgsql
	//backup database
	$sth=$for_statistics_purpose->open();

	
		
 ?>

##扩展 开发者可以通过扩展命名空间DBCon\dbms下的dbms定义的类来创建自己的模块。为了创建更干净的扩展,请在dbcon/your_namespace/your_extension_class中添加您定义的类。

示例。dbcon/pgsql/pgsql.php

注意:您可以使用dbcon_development分支作为核心,并创建一个以“dbcon_dev_”为前缀的分支。
<?php 
#namespace of extension
namespace DBCon\pgSQL;

#include dbcon
include_once(dirname(__DIR__)."../../dbcon.php");

#use dbms namespace
use DBCon\dbms as dbms;

#extend to your defined class
class pgsql extends dbms{

	#these are the functions defined in abstract dbms class
	function __construct(variable here. . .){ code here. . . }

	function open(){ }

	
	function close(){ }


	function get_description(){}

	function get_version(){ }


}

?>

##移除不需要的模块

开发者A和开发者B的对话

你需要mysql吗?

					I have mysql module

你需要pgsql吗?

					Nope! i dont use it and i need a smaller footprint

好的,我会移除pgsql文件夹 :)

					wait! i need mongoDB

SOLUTION: 然后创建模块 <3


##测试

您可以在dbconUnitTesting文件夹中找到PHPUnit测试。

许可协议

本软件受MIT许可协议保护。请阅读LICENSE以获取有关软件可用性和描述的信息。