Я создаю новый объект внутри цикла foreach, и я действительно не знаю, как вызвать конкретный объект, поскольку все они имеют одинаковое имя.
Вот класс:
class Item{
public static $allItems = array();
public $slot;
public $id;
public function __construct($slot, $id){
self::$allItems[] = $this;
$this->slot = $slot;
$this->id = $id;
}
}
И вот цикл foreach:
foreach($item_type as $key => $type){
$itemID = $_SESSION[$type.'ID'];
$item = new Item($key, $itemID);
}
Есть ли способ назвать их по-другому или вызвать конкретный экземпляр?
Почему бы вам не создать ассоциативный массив с объектами и получить к ним доступ как элементы массива:
$elementsArray = array();
foreach($item_type as $key => $type){
$itemID = $_SESSION[$type.'ID'];
$elementsArray[$key] = new Item($key, $itemID);
}
Затем вы можете получить доступ к любому из них (предположив, что $key
- это число):
$elementsArray[0]
Item
внутри Item
потому что у каждого каждого элемента коллекции будет своя коллекция, и так далее, и так далее, и вы закончите бесконечным циклом
Вы можете просто сделать $ item содержать массив.
$item = array();
foreach($item_type as $key => $type)
{
$itemID = $_SESSION[$type.'ID'];
$item[$itemID] = new Item($key, $itemID);
}
complex variables
, который позволяет вам именовать переменную во время выполнения, например, когда вы создаете переменную для каждого пользователя, используяuser-id
например,{'user' . $userid}
и вызвать эту переменную используя{}