0

私は PHP の初心者であり、機能するクラス、メソッド、およびプロパティを理解しようとしています。解決したいのに解決できない問題があります。適切な解決策を見つけることができませんでした (私も気に入りました)。

質問する前に、私のクラス/コードは次のとおりです。

メインクラスのユーザー(user.class.php)

 class User {

    // Properties
    protected $_name;
    public $surname;

    // Methods
    public function setName($name) {
        $this->_name = $name;   
    }   

    public function getName() {
        return $this->_name;
    }

    public function setSurname($surname) {
        $this->surname = $surname;
    }

    public function getSurname() {
        return $this->surname;
    }

}

子クラス *Premium_User* (premiumUser_child_user.class.php)

class Premium_User extends User { 
    private $_premiumId;

    public function setData($name, $id) {
        $this->name = $name;
        $this->_premiumId = $id;
    }   

    public function getData() {
        return array(
        'name' => $this->name,
        'id' => $this->_premiumId
        );

    }   
}

コード:

 // Class User::

include('user.class.php');

// Child class -> class::User

include('premiumUser_child_user.class.php');

$user = new Premium_User(); 
$user->setData('P','1'); 
$user->setData('H','2'); 
$user->setData('P','3'); 

$getUserData = $user->getData();

while ($i <= $getUserData['id'] ) {
    echo "User: " . $getUserData['name'] . " ID: " . $getUserData['id'] . ".\n"; <br>
    $i++; 
}

出力:

User: P ID: 3. 
User: P ID: 3. 
User: P ID: 3.

私がそれを手に入れたいのは:

User: P ID: 1.
User: H ID: 2. 
User: P ID: 3.

*array_push* を使用してすべてのエントリを配列に追加しようとしましたが、うまくいきませんでした。

4

2 に答える 2

0

クラスは、最後にデータを設定したときだけを覚えています。複数のユーザーをインスタンス化するか、一度に 1 つずつ設定して一度に 1 つずつ出力します。

$user = new Premium_User();
$user->setData('P','1'); 

$user2 = new Premium_User();
$user2->setData('H','2'); 

$user3 = new Premium_User();
$user3->setData('P','3'); 

参考<br>までに、エコーを使用するまでタグは必要ありません。

または使用:

$user = new Premium_User();
$user->setData('P','1');
//do something with this user data
$user->setData('H','2'); 
//do something with second user data
//etc.
于 2013-05-06T20:22:38.700 に答える