передавать объекты по ссылке как минимум не имеет смысла
Без амперсанда я теряю $storage, т.к внутри метода изменяю его динамически объявляя свойстваВ PHP очень хитро замудренная система работы с памятью, поэтому единственный и очевидный вариант, это избавиться от ссылок и не вмешиваться в их работу, т.к они не работают точь в точь как в том же C++. В данном случае я получил совсем неожиданный результат (в PHP мануале предупреждают). Решением будет второй вариант который я предложил в проблеме. Придется на пару строк увеличить код каждого метода и место где он вызывается.
return $storage;
и снаружи метода parseAttrsIn() принимать его. В данном случае клон незачем, мне нужен всегда обновленный объект со старыми данными то же. Как оказывается ссылки в PHP просто для галочки, в сложных ситуациях они просто становятся непредсказуемыми и падают. Придется избавиться от ссылок, и добавить на пару строк больше. function decline($num, $forms) {
return $num%10==1&&$num%100!=11?$forms[0]:($num%10>=2&&$num%10<=4&&($num%100<10||$num%100>=20)?$forms[1]:$forms[2]);
}
echo $years . ' ' . decline($years, ['год', 'года', 'лет']); // 3 года
sudo add-apt-repository "deb http://us.archive.ubuntu.com/ubuntu/ artful-updates main" &&
sudo apt-get install libfreetype6=2.8-0.2ubuntu2.1 &&
sudo apt-mark hold libfreetype6
org.kde.solid.udisks2: Failed enumerating UDisks2 objects: "org.freedesktop.DBus.Error.AccessDenied"
"An AppArmor policy prevents this sender from sending this message to this recipient; type=\"method_call\", sender=\":1.209\" (uid=1000 pid=8569 comm=\"okular \" label=\"snap.okular.okular (enforce)\") interface=\"org.freedesktop.DBus.Introspectable\" member=\"Introspect\" error name=\"(unset)\" requested_reply=\"0\" destination=\"org.freedesktop.UDisks2\" (uid=0 pid=930 comm=\"/usr/lib/udisks2/udisksd \" label=\"unconfined\")"
/etc/dbus-1/system.d/org.freedesktop.UDisks2.conf