$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.