免责声明:这个问题严格来说是支持它的mysql和数据库抽象层。
PHP网站指出,使用PHP的mysql_
函数非常不受欢迎。它鼓励开发人员使用PDO
或MySQLi
。
这是我的问题:关于mysql,在所有的抽象中,PDO和MySQLi只是一个更安全,更面向对象的mysql_
函数包装器吗?
如果这是真的,那么像CodeIgniter和Symfony这样的框架是不是通过在MySQLi上放置一个层来创建不必要的包装数量,然后将一层放在本机PHP mysql_
之上?
如果不是这样,我想知道为什么不鼓励有经验的开发人员使用mysql_
以及PDO
和MySQLi
在抽象下实际做什么。
(另外,请不要告诉我去查看代码)会给予+100赏金。
答案 0 :(得分:2)
答案 1 :(得分:2)
这是我的问题:关于mysql,在所有的抽象中,PDO和MySQLi是一个更安全,更面向对象的mysql_函数包装器吗?
没有。就像xdazz所说的那样,MySQLi和PDO都是用C实现的,这意味着它们不仅仅包装了mysql_ *函数。
如果这是真的,那么像CodeIgniter和Symfony这样的框架是不是通过在MySQLi上放置一个层来创建一个不必要的包装数量,然后将一层放在本机PHP mysql之上_?
还有另一个需要考虑的理由:CodeIgniter和Symfony可能在默认界面上创建了一个界面,因为默认界面不够用(从他们的角度来看)。我自己在PDO上写了一层设置了一些默认设置(例如错误模式,因为默认情况下PDO很安静)并且完全提供了一个更直观的API。 PDO是一个非常不错的软件,但setAttribute( $attr, $value )
不是我的一杯茶,真的。
答案 2 :(得分:1)
不,PDO和MySQLi不是mysql_
函数的包装器,它们是在C级,不同的扩展中实现的。
试想一下,如果它们是包装器,--with-mysqli
等等就没有必要了。