迄今为止最好的PHP DAL(数据抽象层)[已关闭]

2022-08-30 17:14:40

迄今为止,在任何开源项目下开发的最好的PHP DAL(数据抽象层)是什么,我们可以善意地重用它?

我发现很难为我的应用程序选择一个DAL,它足以支持对大多数常见数据库系统(MySQL,PostgreSQL,MSSQL,Oracle等)的抽象,并且是:

  1. 经过广泛测试,
  2. 具有良好的接口(可读的方法名称,良好的参数传递策略),
  3. 提供缓存(例如与Memcache集成或支持良好的缓存机制),
  4. 开源许可证,
  5. 至少应该有MySQL / MySQLi的适配器(非基于PDO)

需要考虑的一些词汇:

请不要考虑:

  • 断续器
  • 所有 ORM(但是,除了 ORM 之外,Doctrine 似乎还有一个单独的 DAL)

答案 1

如果你能使用PHP 5.3,我强烈推荐Therism DAL,它是建立在PDO之上的,所以你得到了同样的性能和一个很棒的API。

更新:如果教义不好,你可以试试MDB2。它具有大多数流行的RDBMS的驱动程序,强大的API,出色的文档和庞大的用户群:

  • 我的SQL
  • MySQLi(仅限 PHP5)
  • PostgreSQL
  • 神谕
  • 前端底座
  • Interbase/Firebird(仅限 PHP5)
  • MSSQL
  • SQLite

答案 2

在过去的1年中,我一直在使用Zend_Db作为我的Web应用程序。我认为,Zend框架是迄今为止最好的。

Zend是由PHP的核心贡献者创立的。(1)

经过广泛测试

是的。它被数千个项目使用,并拥有活跃的开发人员社区。

具有良好的接口(可读的方法名称,良好的参数传递策略)

是的。所有组件都可以根据您的需求轻松定制。Zend中的每个组件都是松散耦合的,这意味着您可以使用任何组件,而无需依赖框架中的任何其他组件。

速度

是的。默认情况下,Zend_Db使用 PDO。

是的

提供缓存(例如,与memcache集成或支持良好的缓存机制)

Zend具有广泛的缓存系统

开源许可证

是的

要访问数据库表,您所要做的就是通过将表名及其主键设置为其字段来为其创建一个类。

class User extends Zend_Db_Table {

    protected $_name = "users";  //tablename
    protected $_primary = "user_key"; //primary key column

    function addNewUser($name,$age,$email) {
          //Validate input and add Logic to add a new user
          //Methods are available to insert data like $this->insert($data)
          // where $data is an array of column names and values
          // Check links below for documentation
    }
}

这称为模型。在此类中,您可以创建与“User”实体相关的所有方法,例如添加新用户,编辑用户等。

在应用程序代码中,可以将其用作:

$u = new User();
$u->addNewUser('Name','Age','email');

必读此内容 - http://framework.zend.com/manual/en/zend.db.table.html

更多参考请点击这里。检查此关系问题以获取更多信息


推荐