Ik maak gebruik van een (kleine) MySQL klasse om queries uit te voeren en meteen error handling toe te passen mocht het nodig zijn.
Nu is dit mijn code:
Notice: Undefined property: aCfg in /home/rensjuh/domains/rensjuh.nl/public_html/kemkens/KemkensLijstjes/classes/MySQL/class.MySQL.inc.php on line 35
(regel 35 is ook hier regel 35)
Het ligt dus aan het gebeuren met $this->aCfg.
Ik heb het ook al geprobeerd met self::-$aCfg(-teken niet meegerekend, anders komt er en smilie).
Als ik PHP.net: var_dump doe, krijg ik 3 keer de juiste output, mét 3 keer de error.
Ik weet het, het kan met global, maar het zou ook zo moeten kunnen.
Kan iemand me vertellen waarom het niet werkt?
Ik maak gebruik van PHP4.
waarschijnlijk werkt dit . Je moet namelijk ook de waarde van $aCfg ook doormiddel van de statische aanroeping doen, alleen dan kan je die waarde ook weer statisch oproepen.
Parse error: syntax error, unexpected '=', expecting '(' in /home/rensjuh/domains/rensjuh.nl/public_html/.
kemkens/KemkensLijstjes/classes/MySQL/class.MySQL.inc.php on line 9
Weet je zeker dat je self:: $aCfg hebt staan en niet self::aCfg ??? Want dan zou het logisch zijn, omdat hij dan een methode verwacht in plaats van een variable.
Het probleem ligt in regel 15 (MySQL::error(...)).
Die statische benadering is niet correct want $this-> in een statische functie kan niet (eg. Zend_Loader::loadClass() zal geen instantie van de class Zend_Loader gebruiken). Dus hij kent $this-> niet want hij kent geen statische functie. Moest je nu je instantie als parameter meeleveren en de functie wat aanpassen zou het wel werken. Maar verander gewoon MySQL::error in $this->error(...);
Als ik MySQL::error verander in $this->error krijg ik daar juist een error bij...
Citaat:
Fatal error: Call to undefined function: error() in /home/rensjuh/domains/rensjuh.nl/public_html/
kemkens/KemkensLijstjes/classes/MySQL/class.MySQL.inc.php on line 14
Maar daardoor is het andere probleem nog niet opgelost...
Ik heb dat nu met global opgelost.
Het werkt nu wel, maar het zou eigenlijk ook zonder global moeten kunnen werke...
stijn ik begrijp je denkwijze volledig, en geef je gelijk met de logica dat je een andere instantie van de klasse zou bekomen.
Maar, Rens zegt dat als hij een print_r van $this->$aCfg doet, dat hij wel 3x de correcte waardes krijgt, maar ook 3x de foutmelding.
Als het een andere instantie zou zijn, zou hij de waardes uit $aCfg van de niet-gebruikte instantie toch niet bekomen?
Parse error: syntax error, unexpected '.', expecting '(' in /home/rensjuh/domains/rensjuh.nl/public_html/kemkens/KemkensLijstjes/classes/MySQL/class.MySQL.inc.php on line 34
@Grayen: hij zal er een instantie van maken, dat kan niet anders
Hoezo zou hij persee een instantie er van moeten aanmaken :S. Ik bedoel roept hij de methodes zo aan (statisch dus) MySQL::query(); of $oMysql = new MySQL; $oMysql->query.
Dat is in dit geval heel belangrijk. Want als hij hem niet statisch oproept zal "self::" niet werken. Als hij er een instantie van maakt dan zal hij overal met $this-> moeten werken (ook dus bij het aanroepen van error) en anders overal self:: (ook bij error). Als dat niet werkt probeer het dan te vervangen voor MySQL::, waarschijnlijk zal het dan wel opgelost zijn.