Dames, Heren,

class database extends bootstrap
class kenteken extends bootstrap

Vrij logisch dat ik vanuit kenteken niet $this->db->query($sql); kan doen.

MAAR, als ik in bootstrap het volgende doe in mijn constructor:

if(!class_exists('Database')){
                include_once('/var/www/KosLib/config/database.php');
                $this->db = new Database();


Waarom werkt het dan alsnog niet?
Geen idee, wat is je foutmelding? Het kan zijn dat je database.php ergens anders al geinclude hebt. Probeer het anders zo te doen

if(!class_exists('Database')){
                include_once('/var/www/KosLib/config/database.php');
}
$this->db = new Database();


Je doet alleen maar new Database op het moment dat class_exists false geeft, maar volgens mij wil je dat altijd doen
2 Dingen die me opvallen...

1) class database extends bootstrap en class kenteken extends bootstrap. Hiermee zeg je dus dat de database en het kenteken een bootstrap zijn. Dat lijkt me absoluut niet te kloppen.

2) if(!class_exists('Database')).... Waarom gebruik je geen autoloader? Dan heb je dit soort constructies helemaal niet nodig. Als een class dan niet is geladen, gebeurt dit automatisch.
Ozzie,
1) dat klopt waarschijnlijk ook niet, echter ik zie niet in hoe ik het anders moet doen. Zit de hele middag al op dit probleem te staren en dan raak je het overzicht kwijt. Vandaar ook de titel van mijn topic :)
2) Autoloader klinkt goed, welke richting moet ik op?

NOLot-, bedankt, redeclaren van een class geeft me zowieso een foutmelding dus lijkt me onhandig om buiten de if te halen.
1) Dit moet je dus eerst op orde zien te krijgen, want hoe ik het nu zie ben je even compleet de weg kwijt en doe je dingen die echt niet kloppen.

2) Hier wat info betreffende autoloading: http://php.net/manual/en/language.oop5.autoload.php

Als je even duidelijke uitlegt wat je bedoeling is en waar je dan op vastloopt, is er vast wel iemand die je inderdaad in de juiste richting kan helpen. Tot die tijd zou ik even een pauze nemen... :)
Ik wil eigenlijk gewoon een klein frameworkje maken voor intern. Ik wil daarbij altijd de beschikking hebben over de database class en wil classes die ik niet altijd gebruik niet autoloaden maar enkel loaden als ik ze nodig ben.

Eigenlijk is dat alles! :)
Autoloaden = lazy loaded. Oftewel ze worden alleen maar geinclude zodra je ze nodig hebt
En waarom laat je ze beiden bootstrap extenden?
Omdat ik dan de functies van de bootstrap ook allemaal heb en ik dus vanuit de code die ik gebruik gewoon de class die ik nodig ben kan includen.

En, dat is dus een super bad practice, vandaar dat ik hier kom :)
Chi Lion op 04/10/2013 16:19:28

Ik wil daarbij altijd de beschikking hebben over de database class en wil classes die ik niet altijd gebruik niet autoloaden maar enkel loaden als ik ze nodig ben.

Zoals NOLot zegt: dáárvoor is de autoloader uitgevonden. Die laadt automatisch wat je nodig hebt, wanneer je het nodig hebt.
Ja, dat begrijp ik. Moet ik dan dus altijd de bootstrap laden en functies van daaruit loaden?
Stel dat ik vanuit een los bestand van de class kenteken dan functie checkNumbers wil gebruiken, hoe gaat dat dan?

include bootstrap
$bt = new bootstrap();
$bt ->kenteken->checkNumbers();

Zoiets?

Neem aan dat bootstrap dan kenteken zelf laadt?

Reageren