WTF系列 – PHP 的 echo 敘述

PHP 是個非常有彈性的語言,這件事情充分體現在 echo 敘述上面。

但也因為這個「彈性」,實際上卻會造成維護和理解上的困難。

PHP 的 string concatenation operator 是 “.”

不使用 + 的主要原因是 PHP 乃弱型別語言,採用 + 的時候,很容易發生問題:

廢話結束,接下來介紹印出變數的方法,:

對!為什麼這邊使用 , (逗號) 也行呢?

其實這又是一個 PHP 的奇怪設計!

在 PHP 的世界裡面, echo 並不是一個 function ,而是語法的一部分 (language construct),但他又允許把字串當成參數傳入,詳見下方定義:


void echo ( string $arg1 [, string $... ] )

ref: PHP: echo

所以在使用 , (逗號) 的時候,效率會比使用 . 來得高一點點。因為少了 concat 的動作, echo 直接分別把每一個變數印出。但是這個「優點」卻容易造成語法的混淆,所以我不是很喜歡。

另外,如果要印出 class member, array 或是 map 也是一件令人頭痛的事情,太多方法可以達成,卻又充滿了詭異:

看完了這些亂七八糟的東西…

我只能說這在視覺上真的是件非常痛苦的事情.. orz

Posted in Programming

Leave a Reply

Your email address will not be published.