谁说PHP很烂

今天看到Harry的Twitter上,Reply的一个链接,说“以前的PHP很烂”。这类的看的也不是一次两次了。虽然我不是什么高手,我还是忍不住说几句,PHP有那么烂么?

(所有代码测试环境: PHP 5.2.10)
规范不严格?

if($name == 'francis')
{
    echo 'I am francis';
    //标准括号形式
}
 
if($name == 'francis'):
    echo 'I am francis';
    //类似Python的缩进式
endif;
 
if($name == 'francis')
    echo 'I am francis';
//单行也可以省略括号

虽然这些代码很弱智,但是你可以用其中任何一个顺手的方式来写,执行的结果都是一样的,这到底是规范不严格还是自由灵活?

变量定义不严格?

$age = 20;
$name = 'francis';
echo "I'm {$name} and {$age} years old.';

字符串和整数变量就这样随意的加在一起了?的确不严格啊,但是不是更便于字符串输出?如果非要加一个变量类型,也不是不行。

$age = (Integer)$_GET['age'];
$name = (String)$_GET['name'];
echo "I'm {$name} and {$age} years old.";

这样有什么意义,真搞不懂……

结构混乱?

$person = array();
 
$person['age'] = 20;
$person['name'] = 'francis';
 
echo "I'm {$person['name']} and {$person['age']} years old.";

这样是很乱,双引号套单引号,尖括号套方括号。当然,结构也不是不可以有:

class Person
{
    private $age;
    private $name;
    public function __construct($age, $name)
    {
        $this->age = (Integer)$age;
        $this->name = (String)$name;
    }
    public function sayHello()
    {
        echo "I'm {$this->name} and {$this->age} years old.";
    }
}
 
$me = new Person(20, 'francis');
$me->sayHello();

非要这样写,C/C++/Java的OOP狂人才觉得爽么?

运行效率低?

我应该不会写出一个要循环读取数据库上万次的程序,即使需要如此大量且高效的读写数据,我也会用本地文件作缓存的……

还有太多太多,不要随便说一个语言多么的烂。说他烂,是因为你不了解他。
唉,半夜失眠,一不小心又说了很多疯话,大家见谅……

Related Post

5 Responses to “谁说PHP很烂”


  • 老實說,我覺得你沒抓到重點。

    如果你真的有仔細看我們舉出來的 PHP 的問題,就會發現你舉的例子都不是我們在說 PHP 爛的地方……

    你舉的『爛』的例子在 Python / Ruby 中都是可以用,也被視為正常的。Ruby 幾乎中沒人在用強制轉型,associative array 也用得很兇,有時候比 class 還常用。

    我們認為 PHP 『爛』的地方在於一些『地雷』,例如 magic quote,差勁的 charcter set 支援。

    這些東西通常要自己踩到了才知道痛,而且,老實講,說 PHP 爛的大部份都不是 C++/Java 狂人……我們喜歡 Script 語言,但不覺得 PHP 是夠好的 Script 語言。

    • 哈,感谢您能看完,然后客观的给我一个留言~
      像MagicQuote和CharcterSet这类的地雷,我感觉不应该称之为地雷,反而叫做"Hack"比较好一些,因为总有一些小的问题是我们需要注意的。

      比如我较为熟悉的AS3中,Date(Year, Month, Day)三个变量,唯独Month是从0开始计算……

      PHP是有很多不足的地方,但作为一个开源项目,就像Linux一样,不足的地方太多了,但我们可以共同来维护他,使它变得越来越好玩,容易掌握。 :grin:

  • C语言也有多种表现方式吧?
    那种效率高就用哪个哈

  • 看完完全一头雾水的说…… :evil:

  • 作为编程语言,实际上还是规范一点更好,太多兼容性会把程序员惯坏啦:)

Leave a Reply

Your comment may be deleted in anytime.
Just keep comment area clean and tidy if you don't like.