我经常为朋友或我访问的论坛上的人做小项目。 例如,它创建了一个用户空间或聊天页面,或类似的东西。
这就是为什么我认为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 / ...)发生变化,我只需要编辑该类并完成它。
那么,是否存在类似的类? 制作这样的东西是个好主意吗?
编辑:我很抱歉碰到这个帖子,但我担心没有人做过这样的事情。
答案 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等相比)。对于您正在谈论的性质的项目,我实际上可能会将Silex与Doctrine DBAL结合使用。