Maison >développement back-end >tutoriel php >PHP为什么要逐渐废弃一些函数?出于什么原因呢?

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

WBOY
WBOYoriginal
2016-06-06 20:37:261000parcourir

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中的语言特性的淘汰不会那么慢,也不会很快。

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn