Последние несколько месяцев я провел по колено в Java, и я просто заново посещаю PHP. В Java я могу создать массив объектов и получить доступ к таким методам:
Jam jam = new Jam(1,"strawberry","December","false");
//creates an object with an id, a flavour, a useby and an opened status
Так что, если я проведу цикл, чтобы создать несколько джемов, у меня может быть массив, например,
[0] => [id => 1,"stawberry"... etc
[1] => [id => 2, "raspberry"... etc]
Теперь моя модель варенья может иметь такой метод, как
update_opened(bool newStatus) {
this.openedStatus = newStatus;
}
Так что теперь я могу перебрать варенье и вызвать метод
for(...size of array) {
if(i == 1) {
array.get(i).update_opened(true);
}
}
А теперь мое варенье открывается. Я могу передать этот объект вокруг моего приложения и получить доступ к методу, когда захочу / понадобится
В PHP этого не происходит. Кажется, мне нужно каждый раз воссоздавать новый набор объектов, например:
array_map(function($j) use ($jams) {
$j = new jam(....);
if($j->id == 1) $j->updateOpenedStatus(true);
return $jams[$j->id] = $j;
},
$jams);
Должен ли я сделать это или мои объекты все еще должны стоять одинаково? Мне интересно, если это потому, что Java - это скомпилированный язык, а не просто простой стиль выполнения, такой как PHP, но я не знаю, имеет ли это смысл. Если бы кто-нибудь мог пролить некоторый свет на это, это было бы очень полезно, чтобы помочь моему пониманию того, как язык работает на более глубоком уровне.
(П.С. Я на самом деле не делаю приложение, основанное на Jam, это было бы вкусно)