doumao1047 2012-09-24 11:23
浏览 38
已采纳

为什么netbeans和PHP都没有报告此代码的错误

Why do neither netbeans nor PHP report an error from this code:

public function __construct ()
{
global $blog;
$this->_blog_id = $blog->blog_id;
$this->_post_amount = $blog->
$this->_limit_per_page = $blog->config_get('posts_limit_per_page');
$this->_short_sign_limit = $blog->config_get('posts_short_sign_limit');
}

I had a phone call and forgot about that unfinished 3rd line, saved my work and website silently died on it.

  • 写回答

2条回答 默认 最新

  • dqyym3667 2012-09-24 11:24
    关注
    $this->_post_amount = $blog->
    $this->_limit_per_page = $blog->config_get('posts_limit_per_page');
    

    can also be written as

    $this->_post_amount = $blog->$this->_limit_per_page = $blog->config_get('posts_limit_per_page');
    

    which makes no sense but is perfectly valid.

    However, in your case it breaks your script because using $instance->$other_instance without a __toString method results in this error: Object of class Test could not be converted to string. You IDE does not check for this since since it's really an edge case and as soon as it's not $this->$this but e.g. $this->$that with $that being e.g. the return value of another function it would be near impossible to know what $that can be.


    Here's some example code that proves how $this->$this can actually work fine:

    <?php
    class Foo {
        public $foo = 'bar';
    }
    
    class Test {
        private $xyz;
        function __construct() {
            $this->xyz = new Foo();
        }
        function __toString() {
            return 'xyz';
        }
        function run() {
            echo $this->$this->foo;
        }
    }
    
    $t = new Test();
    $t->run();
    

    The $this->$this statement will result in __toString being used for the second $this and thus it will be equivalent to $this->xyz so the whole line will end up as echo $this->xyz->foo; which is valid.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 phython如何实现以下功能?查找同一用户名的消费金额合并—
  • ¥15 孟德尔随机化怎样画共定位分析图
  • ¥18 模拟电路问题解答有偿速度
  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序
  • ¥50 html2canvas超出滚动条不显示
  • ¥15 java业务性能问题求解(sql,业务设计相关)
  • ¥15 52810 尾椎c三个a 写蓝牙地址