PHP OOP - 类中的类数组

时间:2015-05-08 20:30:30

标签: php oop

我想知道如何在另一个对象中定义一个对象数组。

例如,假设我有一个名为" User"的类,另一个名为" Address&#34 ;.

用户可以列出无限数量的地址。我该怎么做?

我的猜测是我需要声明一个"地址" "用户"中的对象上课,但我不知道该怎么做。

3 个答案:

答案 0 :(得分:0)

class User {
    private $address;

    public function addAddress($street) {
        $this->address[] = new Address($street);
    }

    public function getAddress($i) {
        return $this->address[$i]->street;
    }
}

class Address {
    public $street;

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

$u = new User;
$u->addAddress('abc');
$u->addAddress('def');
$u->addAddress('zzz');

echo $u->getAddress(2);

答案 1 :(得分:0)

创建一个具有数组属性的类,然后添加到数组中:

<?php

class User
{
    private $addresses = [];

    public function addAddress(Address $address)
    {
        $this->addresses[] = $address;
    }

    public function getAddresses()
    {
        return $this->addresses;
    }
}

class Address
{
    private $street;

    public function __construct($street)
    {
        $this->street = $street;
        // ... etc
    }
}

$user = new User();
$user->addAddress(new Address("Foo"));
$user->addAddress(new Address("Bar"));

var_dump($user->getAddresses());

答案 2 :(得分:-1)

您可以这样声明:

$user = new stdClass; // declare the user object
$user->firstName = "John"; // add firstName property
$user->lastName = "Doe"; // add lastName property
$user->addresses = array(); // add addresses property as an array

//declare a couple of dummy address objects
$address1 = new stdClass;
$adresss1->street = "Elm Street";

$address2 = new stdClass;
$adresss2->street = "Arlington Road";

//Add the generated address objects into the addresses array of the user
$user->adresses[] = $address1;
$user->adresses[] = $address2;

如果这有帮助,请告诉我。干杯!