PHP为什么要逐渐废弃一些函数?出于什么原因呢?

1.比如说废弃mysql开头的几个数据库函数,是为了面向对象而废弃的么?
2.还有magic_quotes这个为什么又要去掉呢?
3.等等。。

知道的说一下,感激不尽。

首先,
我们讲讲mysql_xxx开头的函数为何被不建议使用,
在零几年的时候, 层主刚学PHP时, 书上都是写的这个啊,
然后各种PHP产出的项目, model都是写的

PHP$this->db->querySELECT * FROM XXX WHERE ID=.$id;

这样就导致了SQL注入的危险.

然后各种五花八门的escape_string、addslashes函数就产生了,
但万能的黑阔们还是可以用各种0x00构造的字符串绕过.

PHP官方被逼急了,
就推出了PDO、MySQLi,
然后各种好看一点的代码才出来了:

PHP$this->db->prepareSELECT * FROM XXX WHERE ID=:ID;
$this->db->bindParamarray:ID=>$id;
$this->db->execute;

所以mysql_db_query、mysql_xxx就可以被摒弃了.

magic_quotes为何也不建议被使用了?
因为他们的存在是为了自动给输入的参数的引号等字符打上转义符
有可能你觉得这样不是更安全吗?
但是你想过代码的可移植性吗?接口取输入数据时怎么和客户端输入的不一样时多无奈?

所以, 自从PDO、MySQLi出来后, magic_quotes就没有存在的必要了.

语言是不断发展的,这就意味着有的函数需要被开发,有的函数被证明是垃圾,所以当然要去掉,省得别人不小心取用造成麻烦

废除说不上吧,只是有新的出来推荐使用罢了

优胜劣汰
当然,不能可以立马废除,毕竟要考虑向下兼容和照顾老用户嘛。你看XP、IE6这些典型代表的生命周期。不过,php中的语言特性的淘汰不会那么慢,也不会很快。

发表评论

电子邮件地址不会被公开。 必填项已用*标注