0

このコードから netbeans も PHP もエラーを報告しないのはなぜですか:

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');
}

私は電話をして、その未完成の3行目を忘れて、私の仕事を保存し、ウェブサイトは静かに死にました.

4

2 に答える 2

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

のように書くこともできます

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

これは意味がありませんが、完全に有効です。

ただし、この場合$instance->$other_instance、メソッドなしで使用すると次の__toStringエラーが発生するため、スクリプトが壊れます: Object of class Test could not be converted to string. IDE はこれをチェックしません。これは実際には特殊なケースであり、そうでない場合、$this->$thisたとえば別の関数の戻り値である場合、何ができるかを知ることはほぼ不可能になるためです。$this->$that$that$that


$this->$this実際にうまく動作することを証明するコード例を次に示します。

<?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();

$this->$thisステートメントは2__toString番目に使用される$thisことになるため、同等で$this->xyzあり、行全体がecho $this->xyz->foo;どちらが有効かとして終了します。

于 2012-09-24T11:24:38.743 に答える
1

それはあなたが技術的にやっているからです

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

これは有効です。

于 2012-09-24T11:25:18.247 に答える