2016-08-16 16 views
-1

クラス内にいくつかの関数をグループ化しました。いくつかの関数は、同じリストを使用していくつかの計算作業を行います。リストを必要とする各関数の中にリストを入れるのではなく、すべての関数がリストにアクセスできるようにリストを置く方法はありますか?PHPで関数内のクラス変数にアクセスする方法

// 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\.. 

答えて

1

は、あなたがクラス内の変数にアクセス8. $行を削除します。クラスの中では、メソッドと変数を以下のように呼び出します:$this->myMethod()$this->myVar。クラス外でメソッドとvarを呼び出すと$test->myMethod()$test->myVarのようになります。

メソッドと変数の両方をプライベートまたはパブリックとして定義できます。それに応じて、あなたはクラスの外でそれらにアクセスすることができます。

// 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

あなたはaccess an object memberしようとしているので、あなたは$this->classArrayを使用する必要があります。ドル記号がある場合は、$classArray(これは定義されていません)が評価されます。

など。 $firstFive =で始まる行の前に$classArray = 'test'と入力すると、PHPはテストメンバーにアクセスして、それが存在しないと答えます。

So:ドル記号を削除します。 :-)

関連する問題