Home  >  Q&A  >  body text

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

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

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

PHP中文网PHP中文网2750 days ago492

reply all(4)I'll reply

  • 迷茫

    迷茫2017-04-10 15:26:32

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

    PHP$this->db->query('SELECT * FROM XXX WHERE ID='.$id);
    

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

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

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

    PHP$this->db->prepare('SELECT * FROM XXX WHERE ID=:ID');
    $this->db->bindParam(array(':ID'=>$id));
    $this->db->execute();
    

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

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

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

    reply
    0
  • 天蓬老师

    天蓬老师2017-04-10 15:26:32

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

    reply
    0
  • 黄舟

    黄舟2017-04-10 15:26:32

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

    reply
    0
  • 怪我咯

    怪我咯2017-04-10 15:26:32

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

    reply
    0
  • Cancelreply