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 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀