

PHP - varování "Creating default object from empty value"
Zdravím,
mám menší problém v PHP s varováním "Creating default object from empty value".
Mám funkci parser, která z dodané instance třídy (jakožto formy pro vytváření dalších objektů) a výsledku MySQL dotazu vrátí pole různě nastavených objektů (podle počtu výsledků z DB). Parser funguje jak má (vrátí přesně to, co potřebuji, ale i přesto mi paradoxně pořád vyhazuje výše uvedený warning.
Zjednodušený kód:
require_once('res/Category');
function parser($res, $obj) {
$var = 'id';
foreach ($res as $r) {
$obj->$var = $r[$var]; // zde mi to hází WARNING
}
return $obj;
}
parser($query, new Category());
Btw. varování vypínat nechci, pouze opravit, kde dělám chybu.
Předem děkuji.
Možná jsi kód zjednodušil až moc - v tomto zjednodušení snad uvedené varování nevypisuje (nebo ano?).
Tohle jsi možná četl:
creating-default-object-from-empty-value-in-php
Asi ano, vyzkoušel jsem zjednodušenou verzi a už mě to na nic neupozornilo. Přikládám tedy screenshot svého původního kódu (akorát jsem trochu pozměnil vstupní parametry, namísto objektu dosazuji název třídy, to ale nic nemění).
Funkce:
![[script01.png]](https://image.ibb.co/coeCro/script01.png)
Volání funkce:
![[script04.png]](https://image.ibb.co/fchqBo/script04.png)
*v proměnné $categories je uloženo pole výsledků z DB: Array ( [0] => Array ( [id] => 1 [0] => 1 [name] => Kategorie1 [1] => Kategorie1 ) [1] => Array ( [id] => 2 [0] => 2 [name] => Kategorie2 [1] => Kategorie2 ) )
Po spracovaní jedného prvku z poľa $res voláš unset($obj), takže pri spracovaní každého ďalšieho prvku je $obj nenastavený. Vtedy sa pri nastavení vlastnosti $obj->$var automaticky vytvára nová prázdna inštancia (default object). Riadok $obj = new $class() chceš mať zrejme vnútri cyklu, v ktorom prechádzaš pole $res.
Ano, bylo to tím. Díky moc.
Vzhledem k tomu, že unset() jinak nepoužívám, myslel jsem si že v tomto kontextu jen vynuluje vlastnosti daného objektu.