不要理解为什么我无法访问另一个类方法的结果

时间:2017-11-11 10:45:36

标签: php

这是我的班级。 getPosts方法返回一个数组,但我无法在proceedPosts中访问该数组。当我尝试在浏览器中打印时,它会向我显示$result变量不是defined的错误。

class myClass
    {
        public $myposts;

        public function getPosts()
        {
           $result =  $this->myposts = array('a','b','c');

            return $result;

        }

        public function handlePosts()
        {
            echo $result;
        }
    }

    $myObj = new myClass();
    $myObj->getPosts();
    $myObj-> handlePosts();

有人能解释我为什么吗?谢谢。

2 个答案:

答案 0 :(得分:0)

第一个问题$result;handlePosts()函数中未知,您尝试回显一个必须具有toString数组的数组,以便让您的代码正常运行:

    <?php

    class myClass
        {
            public $myposts;

            public function getPosts()
            {
               $result =  $this->myposts = array('a','b','c');

                return $result;

            }

            public function handlePosts()
            {
              var_dump($this->getPosts());
            }
        }

        $myObj = new myClass();

        $myObj-> handlePosts();

    ?>

答案 1 :(得分:0)

您的$result变量已在getPosts()方法中创建,并且仅存在于此方法中(如果您愿意,则存在于范围内)。

如果您有以下代码,那么您在此方法中所做的回报才有意义:

$result_from_get_post_method =  $myObj->getPosts();

如果要创建类范围的可访问变量,则必须在变量名前面使用$this,例如:

class myClass
{
    public $myposts;

    public $result;

    public function getPosts()
    {
       $this->result = $this->myposts = array('a','b','c');

        return $this->result;

    }

    public function handlePosts()
    {
        echo $this->result;
    }
}

$myObj = new myClass();
$result_of_method = $myObj->getPosts();
print($result_of_method); // prints result_of_method which contains array
print($myObj->result); // does the same as line above, by calling object variable
$myObj->handlePosts(); // echos the array