php7為什麼沒有改成強類型語言?
php很多時候都是生成語言 php7為什麼沒有改成強類型語言?
強類型strict_types是從PHP7開始才引入的東西,默認不開啟,以後也不會默認開啟,是一個很有爭議性且完全不兼容PHP5的特性.這個強類型跟性能沒有任何關係,其中PHP之父Rasmus,Zend公司CEO兼創始人Andi,PHP7性能方面的核心開發者Dmitry和鳥哥Laruence都投了反對票.
https://wiki.php.net/rfc/scalar_type_hints_v5
經過相當激烈的討論後,PHP7決定引入強類型(strict types)支持.
strict_types=1無非就是約束了參數和返回值的類型,
類型對不上則返回一個Fatal error: Uncaught TypeError
而且是運行時才能感知,php -l file.php語法檢查並不會提示類型錯誤.
&
弱類型仍然是PHP編程優勢所在,PHP默認就有一套is_xxx判斷類型的函數,
根本不需要用戶函數再多此一舉限制返回值類型(strict_types=1):
http://php.net/manual/zh/ref.var.php
其實PHP5也提供有對函數參數類型的檢查支持,典型的如數組和類:
http://php.net/manual/zh/functions.arguments.php
function foo(array $arr) {} //要求參數$arr類型是數組
function bar(MyClass $obj) {} //要求參數$obj類型是MyClass類或子類的實例(對象)
PHP里可以用比較運算符全等===和不全等!==以及變數處理函數來檢查變數類型:
is_int/is_float/is_numeric/is_string/is_bool/is_null
is_array/is_object/instanceof/is_resource/is_callable
PHP在無需聲明類型的動態弱類型環境下提供類型檢查,非常靈活又不失嚴謹.
PHP開發者仍然可以用弱類型編寫代碼,弱類型帶來的開發便捷這個優勢PHP是絕不會放棄的,強類型只是多了一種選擇,不喜歡,無視就好.
我在想強類型是否跟jit有關?
如果直接改成了強類型語言,那還能叫PHP嗎?而且也不會對其它語言的開發者有多大吸引力,反而很有可能會丟失一大批現有的開發者。
為何要改成強類型語言?
PHP7 可以定義 強類型 但不是強制的 也是為了向下兼容 老代碼拿來直接可以用 強類型的好處我就不說了
PHP7已經支持強類型:
強類型可以做更多有意義的事,比如性能提升。提供給那些需要的人,畢竟後端語言競爭那麼大。取長補短還是不錯的
那還用PHP幹嘛?另外向下兼容性好才是一個語言好的發展趨勢,完全擯棄過去是不合理的,看看隔壁Python2和3多少年都該在矛盾之中。
那你以前寫的php代碼怎麼辦?全部崩掉重寫?
除樓上介紹外再追加一下
這些網上都能搜的
php7開啟強類型模式 - 紙上得來終覺淺 - 博客頻道 - CSDN.NETjs都有強類型TypeScript支持了說明弱類型畢竟不適用於大型項目的開發
推薦閱讀:
※如何看待 swoole 作者最近修改開源協議?
※macOS High Sierra 上測試 Apache 和 PHP 站點
※把網站從PHP5.4移到PHP5.6的那些坑——第二話:PHP版本不一樣還怎麼愉快玩耍
※為什麼PHP工程師很難招?
※PHP 框架 CodeIgniter 是否找到了新家?
TAG:PHP |