PHP 尝试创建一个可以同时添加多个元素而不会覆盖的方法

PHP Trying to create a method which could add several elements at same time without overwriting

提问人:Johnny Bravo 提问时间:6/15/2023 更新时间:6/15/2023 访问量:24

问:

我正在尝试在类中创建一个数组,该数组将包含一些用户信息,主要问题是每个最后一个用户名都被下一个用户名覆盖,需要创建一个包含所有用户名的数组。

class Users{
    public $name;
    function add($name){
        $this -> name = $name;
    }
    
}

$users = new Users();
$users->add('Jane');
$users->add('Rick');
$users->add('Niles');

var_dump($users);

输出应包含每个用户名

PHP 数组类 OOP 方法

评论


答:

4赞 Rob Eyre 6/15/2023 #1

为什么不直接使用数组呢?

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

$users = [];
$users[] = new User('Jane');
$users[] = new User('Rick');
$users[] = new User('Niles');

评论

0赞 Sammitch 6/15/2023
然后,如有必要,您可以创建类似 UsersCollection 的东西,将它们存储在数组属性中,并具有知道如何对 User 对象进行操作以进行搜索等的方法。
0赞 oacastillol 6/15/2023 #2

如果希望对象具有所有用户的列表,则必须将 class 属性转换为数组类型,您可以像这样重构代码

class Users{
    public $names = array();
    function add($name){
        $this->names[] = $name;
    }
    
}

$users = new Users();
$users->add('Jane');
$users->add('Rick');
$users->add('Niles');

var_dump($users);