PDO类处理程序

时间:2015-01-28 15:56:41

标签: php class pdo

我经常为朋友或我访问的论坛上的人做小项目。 例如,它创建了一个用户空间或聊天页面,或类似的东西。

这就是为什么我认为Frameworks / ORM不适合这些项目的大小,代码通常少于300行。

但是在所有情况下,我都使用PDO,并且它真的用来编写SQL字符串,检查文档以进行INSERT,所以我想用扩展方法扩展PDO类,像这样:

$pdo->create('users', array(
    'id' => 'int',
    'username' => 'text',
    'password' => 'text'
));

$pdo->insert(array(
    'username' => $user,
    'password' => md5($password)
))->in('users');

$pdo->update(array(
    'username' => $new_user
))->in('users')->where('id', $user_id);

$pdo->select()->from('users')->where('id', $user_id)->row();

$pdo->select('username')->from('users')->rows();

$pdo->drop('users');

$pdo->close();

如果PDO或存储方式(mysql / sqlite / ...)发生变化,我只需要编辑该类并完成它。

那么,是否存在类似的类? 制作这样的东西是个好主意吗?

编辑:我很抱歉碰到这个帖子,但我担心没有人做过这样的事情。

1 个答案:

答案 0 :(得分:2)

你自相矛盾......你正在谈论在PDO之上编写QueryBuilder和/或DBAL(就支持多个数据库供应商所需的代码量而言,这是一件相当复杂的事情)但是你回避框架。没有多大意义。

那里说有DBAL和QueryBuilders可以在更大的框架之外使用。就个人而言,我会说Doctrine DBAL。使用其QueryBuilder

的示例
$conn = DriverManager::getConnection($connectionInfo);
$queryBuilder = $conn->createQueryBuilder();

$queryBuilder
    ->select('*')
    ->from('users')
    ->where('id = ?')
    ->setParameter(0, $user_id);

至于框架,还有"微框架"它可以作为一个简单的MVC堆栈(与Laravel,Cake,Symfony2等相比)。对于您正在谈论的性质的项目,我实际上可能会将SilexDoctrine DBAL结合使用。