如何使用PHP访问函数内的类变量

时间:2016-08-16 20:52:11

标签: php class oop

我在课堂上将几个功能组合在一起。一些功能将使用相同的列表来完成一些计算工作。有没有办法放置列表,以便所有函数仍然可以访问列表而不是将列表放在需要列表的每个函数中?

// Simplified version of what I am trying to do
Class TestGroup
{
    public $classArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

    public function getFirstFiveElemFromArray()
    {
        $firstFive = array_slice($this -> $classArray, 0, 5, true);
        return $firstFive;
    }

    public function sumFirstEightElemFromArray()
    {
        //methods to get first eight elements and sum them up
    }

}

$test = new TestGroup;
echo $test -> getFirstFiveElemFromArray();

这是我收到的错误消息:

Undefined variable: classArray in C:\wamp\www\..

2 个答案:

答案 0 :(得分:2)

删除$行8.您访问类中的变量。在课程内部,您可以调用方法和变量,如:$this->myMethod()$this->myVar。在课外调用方法和var,如$test->myMethod()$test->myVar

请注意,方法和变量都可以定义为Private或Public。根据您的不同,您可以在课堂外访问它们。

// Simplified version of what I am trying to do
Class TestGroup
{
    public $classArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

    public function getFirstFiveElemFromArray()
    {
        $firstFive = array_slice($this -> classArray, 0, 5, true);
        return $firstFive;
    }

    public function sumFirstEightElemFromArray()
    {
        //methods to get first eight elements and sum them up
    }

}

$test = new TestGroup;
echo $test -> getFirstFiveElemFromArray();

答案 1 :(得分:2)

您正在尝试access an object member,因此您应该使用$this->classArray。如果您在那里有美元符号,则会评估$classArray(未定义)。

E.g。如果您将$classArray = 'test'放在以$firstFive =开头的行之前,PHP将尝试访问测试成员并说它不存在。

所以:删除美元符号。 :-)