【发布时间】:2021-03-09 17:38:17
【问题描述】:
我正在尝试在 PHP 中创建一个唯一对象列表。 我想通过一个唯一的名称访问每个对象,但我还需要该对象知道它的名称。
我的想法是创建一个这样的关联对象数组:
class MyObject()
{
public $name;
public $property1;
public $property2;
function __construct($name)
{
$this->name = $name;
}
function doSomething()
{
echo $name.$property1;
}
function doSomethingElse()
{
echo $name.$property2;
}
}
$array = array();
$name = 'example';
$array[$name] = new MyObject($name);
$array[$name]->property1 = 'xyz';
$array[$name]->property2 = 123;
$name = 'test';
$array[$name] = new MyObject($uniqueName);
$array[$name]->property1 = 'abc';
$array[$name]->property2 = 321;
$array['example']->doSomething();
$array['test']->doSomethingElse();
我对 PHP 和编码很陌生,我觉得这是一个非常愚蠢的解决方案,所以我想问你是否知道任何更好的方法。
【问题讨论】:
-
我个人认为这种方法会有一个流程:按原样使用此代码,您不能保证此名称的唯一性。我会尝试使用处理添加新对象并将它们与唯一名称(存储在私有属性中)相关联的“主”对象,并确保每次尝试添加新对象时该名称尚未使用。这也提供了一个漂亮的方法,如“getObjectByName(string $name)”和“addObject($object, string $name)”。
-
什么是独特的对象?具有相同属性的两个对象是否被视为相同?
-
$name是您的doSomething和doSomethingElse声明中未声明的变量。
标签: php arrays object associative-array