php变量对象属性

时间:2017-03-28 08:00:00

标签: php variables object properties

这可能看似重复,但我尝试了所有答案,但没有一个能帮助我。 我有一个:

class Api extends Controller {
    private $host;
    function __construct() {
        parent::__construct();
    }
}

我对这部分没有问题,因为Api类中的许多函数都在工作

我的问题如下:

function POS() {
    $host = defined('url_parameter_1') ? url_parameter_1 : null;
    $operation = defined('url_parameter_2') ? url_parameter_2 : null;
    $transaction_id = defined('url_parameter_3') ? url_parameter_3 : null;

    if ($host != null) { 
        $this->{$host};
    }
    else { 

    }

}

在这个例子中url_parameter_1 = PashaBank,我有一个函数:

private function PashaBank() {
    $data = array();
    $params['logo'] = '/public/img/logo-pashabank.png';
    $params['description'] = 'Some description text';

    echo $this->build_html($params);
}

我收到错误

  

注意:未定义的属性:/ var / www / vhosts /

中的Api :: $$主机

当我使用$ this-> {' $ host'};

和错误

  

未定义的属性:/ var / www / vhosts /中的Api :: $ PashaBank   当我使用$ this-> {$ host};

类完全如下所示:

class Api extends Controller {
    private $host;
    function __construct() {
        parent::__construct();
    }
    function POS() { 
        $host = defined('url_parameter_1') ? url_parameter_1 : null;
        $operation = defined('url_parameter_2') ? url_parameter_2 : null;
        $transaction_id = defined('url_parameter_3') ? url_parameter_3 : null;

        if ($host != null) { 
            $this->{$host};
        }
        else { 

        }   
    }

    function build_html($params) {
        $html = '<div class="pos_container">';
        $html .= '<div class="pos_header"><img src="'.$params['logo'].'" /></div>';
        $html .= '<div class="pos_body">';
        $html .= '<p class="pos_description">'.$params['description'].'</p>';

        $html .= '</div>'; // pos_body
        $html .= '</div>'; // pos_container

        return $html;
    }
    private function PashaBank() { 
        $data = array();
        $params['logo'] = '/public/img/logo-pashabank.png';
        $params['description'] = 'Some description text';

        echo $this->build_html($params);
    }   
}

请帮助,我被困在这里

2 个答案:

答案 0 :(得分:0)

首先,您的班级没有名为“PashaBank”的字段。这是你可以看到通知的原因:

  

注意:未定义的属性:/ var / www / vhosts /

中的Api :: $$主机

顺便说一下,没有理由使用声明:

  

$这 - &GT; {$主机}

而不是:

  

$这 - &GT; $宿主

答案 1 :(得分:0)

问题是我错过了对象属性之后的()。感谢@ChetanAmeta

正确的方法是:

 ________________________________
| METHOD   | MEMORY   | SPEED    |
|==========|==========|==========|
| MESHGRID | 1547 MB  | 1.24 Secs|
|----------|----------|----------|
| BSXFUN   | 57 MB    | 0.18 Secs|
|__________|__________|__________|