Return By Reference Notice
Üdv!
Az alábbi kóddal van problémám:
PHP 4.4.0-nál előjön a sokat emlegetett Notice:
Utánna olvastam, de nem lettem okosabb. A SitePoint-on csak annyit írnak, hogy új objektum készítésekor bír ez előjönni, ha referenciaként akarok visszadni egy épp példányosított osztályt:
Elolvastam az ott emlegetett "workaround"-ot és a saját kódomat imígyen egészítettem ki:
De ez sem tetszik neki. Akkor mi a teendőm?
■ Az alábbi kóddal van problémám:
function &Validator(){
if ( isset($GLOBALS['_VALIDATOR_POOL']) ) {
return $GLOBALS['_VALIDATOR_POOL'];
}
}
if ( isset($GLOBALS['_VALIDATOR_POOL']) ) {
return $GLOBALS['_VALIDATOR_POOL'];
}
}
PHP 4.4.0-nál előjön a sokat emlegetett Notice:
Notice: Only variable references should be returned by reference in d:\phpIncludes\includes\validator.class.php on line 58
Utánna olvastam, de nem lettem okosabb. A SitePoint-on csak annyit írnak, hogy új objektum készítésekor bír ez előjönni, ha referenciaként akarok visszadni egy épp példányosított osztályt:
function &getnodecontrol($objecttype)
{
require_once(RESOURCE_DIR . "nodecontrols/$objecttype.inc.php");
return new $objecttype($this->db);
}
{
require_once(RESOURCE_DIR . "nodecontrols/$objecttype.inc.php");
return new $objecttype($this->db);
}
Elolvastam az ott emlegetett "workaround"-ot és a saját kódomat imígyen egészítettem ki:
function &Validator(){
if ( isset($GLOBALS['_VALIDATOR_POOL']) ) {
$ref = & $GLOBALS['_VALIDATOR_POOL'];
return $ref;
}
}
if ( isset($GLOBALS['_VALIDATOR_POOL']) ) {
$ref = & $GLOBALS['_VALIDATOR_POOL'];
return $ref;
}
}
De ez sem tetszik neki. Akkor mi a teendőm?
<Nincs cím>
Nem nézel el valamit? Erre nem kéne ezt a notice-t adnia. A lenti például nálam nem okoz gondot.
Felhő
Mi a kérdés?
Akkor előtte példányosítani kellene:
return $ref;
szerintem :-)
Üdvözlettel: Webappz
Mielőtt a másikat hülyének nézzük...
Ami meg a kódodat illet, hát nem ez a módja a hibák kezelésének. Egy ilyen felesleges @-cal komoly dubug sessiont generálhatsz magadnak, vagy kollégádnak.
Felhő
Bocsánat
Bocsánat, hogy merészeltem válaszolni egy kérdésre :-)
Üdvözlettel: Webappz