Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 包装mongoDB和mysql_Php_Mysql_Mongodb_Architecture_Uml - Fatal编程技术网

Php 包装mongoDB和mysql

Php 包装mongoDB和mysql,php,mysql,mongodb,architecture,uml,Php,Mysql,Mongodb,Architecture,Uml,我的mongoDB类和mysql类可以使用一个抽象类吗。因为,在mysql中,我们可以在一个函数中执行insert、update和delete语句,但mongodb不能 或者它们应该有单独的数据库抽象层 // I can pass INSERT,UPDATE and DELETE query to this function but for monbodb I cannot mysql public function doNonQuery($sql){ mysql_quer

我的mongoDB类和mysql类可以使用一个抽象类吗。因为,在mysql中,我们可以在一个函数中执行insert、update和delete语句,但mongodb不能

或者它们应该有单独的数据库抽象层

 // I can pass INSERT,UPDATE and DELETE query to this function but for monbodb I cannot 
mysql 
public function doNonQuery($sql){
        mysql_query($sql);
}

mongoDB
public function insert($tableName,$query){
    $collection = new MongoCollection($db,$tableName);
    $a  = $query
    $collection->insert($a);
}

public function update($tableName,$query){
    $collection = new MongoCollection($db,$tableName);
    $a  = $query
    $collection->update($a);
}

你没有在正确的抽象层次上思考。您不应该试图抽象插入、更新和删除操作(代码示例就是这样做的),而应该考虑抽象域。这将使您能够创建一个可以插入、更新和删除对象的界面。。例如:

interface IDatabaseCollection<T> where T : IDatabaseEntity
{
    void Insert(T item);
    void Update(T item);
    void Delete(T item);
}
接口IDatabaseCollection,其中T:IDatabaseEntity
{
无效插入(T项);
无效更新(T项);
作废删除(T项);
}
现在可以实现SQLDatabaseCollection和MongoDatabaseCollection,它们都实现IDatabaseCollection

以上是一个基本的例子,当然还有很多其他的方法。但这是你在处理抽象概念时需要开始思考的方向


简而言之,你的抽象太低级了,你需要提升它,使它成为一个更高级的抽象。

你没有在正确的抽象层次上思考。您不应该试图抽象插入、更新和删除操作(代码示例就是这样做的),而应该考虑抽象域。这将使您能够创建一个可以插入、更新和删除对象的界面。。例如:

interface IDatabaseCollection<T> where T : IDatabaseEntity
{
    void Insert(T item);
    void Update(T item);
    void Delete(T item);
}
接口IDatabaseCollection,其中T:IDatabaseEntity
{
无效插入(T项);
无效更新(T项);
作废删除(T项);
}
现在可以实现SQLDatabaseCollection和MongoDatabaseCollection,它们都实现IDatabaseCollection

以上是一个基本的例子,当然还有很多其他的方法。但这是你在处理抽象概念时需要开始思考的方向


简而言之,您的抽象太低级了,您需要提升它,使其成为更高级的抽象。

您计划如何将SQL转换为MongoDB符号?您的意思是什么?mongodb查询将作为参数传递,我的意思是,MySQL查询在SQL中,而mongodb查询不是。拥有一个抽象类的目的是使程序员能够透明地切换后端,而不必更改代码。将SQL转换为对象查询将是愚蠢的,但将对象查询转换为SQL是可能的。您打算如何将SQL转换为MongoDB表示法?您的意思是什么?mongodb查询将作为参数传递,我的意思是,MySQL查询在SQL中,而mongodb查询不是。拥有一个抽象类的目的是使程序员能够透明地切换后端,而不改变代码。将SQL转换为对象查询是愚蠢的,但将对象查询转换为SQL是可能的。