Heim > Artikel > Backend-Entwicklung > PHP为什么要逐渐废弃一些函数?出于什么原因呢?
1.比如说废弃mysql开头的几个数据库函数,是为了面向对象而废弃的么?
2.还有magic_quotes这个为什么又要去掉呢?
3.等等。。
知道的说一下,感激不尽。
1.比如说废弃mysql开头的几个数据库函数,是为了面向对象而废弃的么?
2.还有magic_quotes这个为什么又要去掉呢?
3.等等。。
知道的说一下,感激不尽。
首先,
我们讲讲mysql_xxx开头的函数为何被不建议使用,
在零几年的时候, 层主刚学PHP时, 书上都是写的这个啊,
然后各种PHP产出的项目, model都是写的
<code>PHP</code><code>$this->db->query('SELECT * FROM XXX WHERE ID='.$id); </code>
这样就导致了SQL注入的危险.
然后各种五花八门的escape_string()、addslashes()函数就产生了,
但万能的黑阔们还是可以用各种0x00构造的字符串绕过.
PHP官方被逼急了,
就推出了PDO、MySQLi,
然后各种好看一点的代码才出来了:
<code>PHP</code><code>$this->db->prepare('SELECT * FROM XXX WHERE ID=:ID'); $this->db->bindParam(array(':ID'=>$id)); $this->db->execute(); </code>
所以mysql_db_query、mysql_xxx就可以被摒弃了.
magic_quotes为何也不建议被使用了?
因为他们的存在是为了自动给输入的参数的引号等字符打上转义符\
,
有可能你觉得这样不是更安全吗?
但是你想过代码的可移植性吗?接口取输入数据时怎么和客户端输入的不一样时多无奈?
所以, 自从PDO、MySQLi出来后, magic_quotes就没有存在的必要了.
语言是不断发展的,这就意味着有的函数需要被开发,有的函数被证明是垃圾,所以当然要去掉,省得别人不小心取用造成麻烦
废除说不上吧,只是有新的出来推荐使用罢了
优胜劣汰
当然,不能可以立马废除,毕竟要考虑向下兼容和照顾老用户嘛。你看XP、IE6这些典型代表的生命周期。不过,php中的语言特性的淘汰不会那么慢,也不会很快。