2012-04-25 2 views
2

オブジェクトのコレクションを格納しようとしていますが、foreachループでオブジェクトメソッドを呼び出すことができません。これは基本的に私が持っているものです。印刷機能は何も印刷しません。私が見ているものがあるのか​​、それともこの方法が違うのでしょうか?foreachループを使用して配列内のオブジェクトのオブジェクトメソッドを呼び出す方法

class person 
{ 
    private $name; 

    public function __construct($name) { 
     $this->name = $name; 
    } 

    public function get_name() { 
     return $this->name; 
    } 
} 

$test_set[] = new person("John"); 
$test_set[] = new person("Jane"); 

foreach($test_set as $set_item) { 
    print $set_item->get_name(); 
} 
+1

、それが正常に動作します:

public function __construct($name) { $this->$name = $name; } 

で:

を交換してください。問題は別のところです。エラー報告が有効になっていますか? –

+0

これは私のコードを単純化したものです。私はそれを貼り付けてコピーし、それも働いた。私のより高度なクラスのものでなければなりません。 – wachpwnski

+0

このコードを試してください。それは複数のパラメータの構成かもしれませんか? https://gist.github.com/a7e525e84cb95057a676 – wachpwnski

答えて

4

あなたは、この(おそらくタイプミス)のように自分の名前を設定する必要があります。

public function __construct($name) { 
    $this->name = $name; // not $this->$name 
} 
+0

それはここに入力ミスでした。まだ空白の出力は変更されません。 – wachpwnski

+0

私にとっては、それはテストファイルで動作します。 'error_reporting(E_ALL);でエラー出力。 ini_set( 'display_errors'、 '1'); '先頭に? –

+0

合意 - それはまた私のために働く。 – Kasapo

2

あなたのループが働いています。しかし、あなたのクラスには間違いがあります。私はあなたのコードを貼り付け、コピー

public function __construct($name) { 
     $this->name = $name; 
    } 
+2

なぜあなたはdownvotedを得たのかわかりません... +1、これは正しいです。 – Kasapo

+1

@匿名のダウン投票。たぶん、ダウンボッターがそれは非常に似た答えよりも数分遅れて来たと思ったからです。しかし、まだ正しいです。 –

関連する問題