Heim >Backend-Entwicklung >PHP-Tutorial >PHP为什么要逐渐废弃一些函数?出于什么原因呢?

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

WBOY
WBOYOriginal
2016-06-06 20:37:26999Durchsuche

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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn