PHP为类成员分配值,并使用该类内的另一个方法进行访问

时间:2019-02-05 11:38:58

标签: php class

我在获取类中另一个方法中的类成员设置的值时遇到麻烦。我尝试使用__get__set魔术方法,gettersetter以及代码中的另外两种方法,但是它们都不起作用。

我正在寻找的是类型是否为U,而不是应使用javascript变量。

方法一

class UserRatings extends User {

    private $postType; // string


    public function headJS(){

        // access postType value from getItem method
        // this outputs nothing (blank)
        if ($this->postType = 'U') {
            # code...
        }


    }


    public function getItem($post){

        $this->postType = $post['data']['post_type'];

        $markup = 'html markup to render the output';

        return $this->postType; 

    }

    public function isType($post)
    {
        if ($post == 'U') {
            $this->isType = true;
        }

        return $this->isType;
    }


}

方法二

class UserRatings extends User {

    private $isType = false;


    public function headJS(){

        // even this doesnt't work too
        if ($this->isType) {
            # code...
        }

    }


    public function getItem($post){

        $markup = 'html markup to render the output';

        $type = $post['data']['post_type'];

        $this->isType($type);

    }

    public function isType($post)
    {
        if ($post == 'U') {
            $this->isType = true;
        }

        return $this->isType;
    }


}

2 个答案:

答案 0 :(得分:1)

您的第一种方法将不起作用,因为$isType将始终为false。因为它尚未初始化,所以即使您使用函数isType($post)对其进行初始化,也要给它true作为值。但是,如果您检查headJS()是否为$this->isType ==‘U’,则始终为false。

对于第二种方法,一切似乎都很好。我唯一的猜测是您在HeadJS()之前调用isType($post)$post的值始终不同于“ U”

答案 1 :(得分:0)

您在$this->isType(type);错过了$号。

您必须在$this->headJS();之后致电$this->isType = true;

class UserRatings extends User {

private $isType = false;


public function headJS(){

    // even this doesnt't work too
    if ($this->isType) {
        # code...
    }

}


public function getItem($post){

    $markup = 'html markup to render the output';

    $type = $post['data']['post_type'];

    $this->isType($type);

}

public function isType($post)
{
    if ($post == 'U') {
        $this->isType = true;
        $this->headJS();
    }

    return $this->isType;
}
}