老虎今天解说的例子…感受

echo是个语句吧,一定以;结尾吧,如果引号会使编译出问题,那么编译器制作者,可以判断引号后是否有;而判断,是否是echo结束语句的引号,而可以让我减少犯错的机会,为什么php编译者当时没这么做呢?
回复列表(5|隐藏机器人聊天)
  • @Ta / 2012-07-01 / /
    呃,PHP是解释脚本语言。而且所有的语句都是以 ; 结尾!是规范源码的可读性!
  • @Ta / 2012-07-01 / /
    请问你知道我想通过下面的代码输出什么:
    echo '{$c='1',$d='2',$e='3'}';
    所以我想说的是,既然你都不知道我的想法,计算机怎么会知道。
  • @Ta / 2012-07-01 / /
    php的echo语句允许多个参数,于是可以echo 'a=', $b $c, ';d=', $d;
    并且,赋值可以在任何时候进行,这意味着可以
    echo $a=3; //输出3,并且把3赋给$a
    所以,当你书写了一个错误的复杂表达式时,根本就没有办法自动修正,比如这个:
    echo '{$c='1',$d='2',$e='3'}';
    它是一句错误的代码。
    在发现错误后,它可能被我修改成
    echo '{$c=\'1\',$d=\'2\',$e=\'3\'}';
    输出{$c='1',$d='2',$e='3'}。
    但是也有可能是
    echo '{$c=\'1',$d='2',$e='3\'}';
    输出{$c='123'},同时给$d和$e赋值。
    或者也可能是
    echo '{$c=\'1\',$d=\'2',$e='3\'}';
    输出{$c='1',$d='23'},同时给$e赋值。
    或者,还有其他更多种修改方法,而它们会得到完全不同的结果。
    但是,只有我知道我需要哪种结果,到目前为止计算机不可能替我做出正确的选择。
    所以,报告错误并让开发者自己修改,比“代替开发者处理错误”好得多。
  • @Ta / 2012-07-01 / /
    php的echo语句允许多个参数,于是可以echo 'a=', $b+$c, ';d=', $d; //讨厌会漏半角加号的UC
    并且,赋值可以在任何时候进行,这意味着可以
    echo $a=3; //输出3,并且把3赋给$a
    所以,当你书写了一个错误的复杂表达式时,根本就没有办法自动修正,比如这个:
    echo '{$c='1',$d='2',$e='3'}';
    它是一句错误的代码。
    在发现错误后,它可能被我修改成
    echo '{$c=\'1\',$d=\'2\',$e=\'3\'}';
    输出{$c='1',$d='2',$e='3'}。
    但是也有可能是
    echo '{$c=\'1',$d='2',$e='3\'}';
    输出{$c='123'},同时给$d和$e赋值。
    或者也可能是
    echo '{$c=\'1\',$d=\'2',$e='3\'}';
    输出{$c='1',$d='23'},同时给$e赋值。
    或者,还有其他更多种修改方法,而它们会得到完全不同的结果。
    但是,只有我知道我需要哪种结果,到目前为止计算机不可能替我做出正确的选择。
    所以,报告错误并让开发者自己修改,比“代替开发者处理错误”好得多。
  • @Ta / 2012-07-01 / /
    而且,即使可以顺利的“自动修复”错误,但是修复的结果可能是你不想要的。
    echo "<a href="$url"></a>";
    根据你描述的规则,它会被自动修复成
    echo "<a href=\"$url\"></a>";
    但事实上,我的
    $url='"http://g.cn"';
    它已经有一对引号了,我需要把它修复成
    echo "<a href=".$url."></a>";
    但是,程序按照既定的规则自动修复了我的错误,所以程序顺利执行了,但是结果却不是我想要的。如果代码量非常大,我可能完全不清楚到底是什么地方出现的问题,我可能要花大量的时间才能找到错误的所在,甚至有时候发现不了哪里错了。
    但是,如果php报告了错误,那么解决问题还不要30秒钟。
添加新回复
回复需要登录