Fatal error: Cannot redeclare class
SFSDatabase.php
SFSConnection.php
SFSBuildQuery.php implements SFSDatabase
SFSFunctions.php
Ik heb op dit moment een 'Fatal error: Cannot redeclare class' en kan niet op internet vinden hoe ik dit kan oplossen.
Wat is het probleem:
SFSDatabase zorgt voor de connectie en de query.
De connectie word gemaakt in SFSConnection en de Query word aangeleverd vanuit SFSBuildQuery
Doordat ik in SFSBuildQuery ook moet werken met een escape functie heb ik de SFSConnection nodig.
(voorbeeld: $this->OBJECT-NAAR-SFSConnection->escape_string($VARIABLE)).
Nu heb ik er voor gezorgt dat ik maar 1 object van SFSConnection gemaakt. Deze staat in SFSDatabase.
SFSBuildQuery implements SFSDatabase waardoor ik in via een functie bij het object kan.
Ik heb in SFSFunctions, SFSDatabase geincluded en nu ook in SFSBuildQuery. Ik denk dat deze melding hier vandaan komt.
Ik hoop dat het niet te vaag is.
In dit geval denk ik dat de oplossing zal liggen in include te vervangen door include_once.
Gewijzigd op 18/08/2014 17:53:07 door Erwin H
Wat is jou gedachten over de structuur? ik ben eigenlijk wel benieuwt
Over mijn vraag:
Zowel SFSBuildQuery en SFSDatabase hebben beide SFSConnection vaker nodig... Dus als ik een include_once er opgooi, dan krijg ik een error:
Fatal error: Maximum function nesting level of '100' reached, aborting!
Dit is als ik SFSConnection één keer include.
Als ik zeg van "include_once 'SFSDatabase.php';" (aangezien hier het object word gemaakt) dan komt de error:
Fatal error: SFSBuildQuery cannot implement SFSDatabase - it is not an interface
Volgens mij is de primaire taak van een SFSBuildQuery class (als ik naar de naam kijk) om queries op te zetten. Niet om die uit te voeren en al helemaal niet om een connectie met een database te leggen. Je SFSConnection heeft de connectie, je SFSDatabase class voert dingen uit op de database.
Dit betekent dat je SFSBuildQuery class helemaal geen relatie heeft met de SFSConnection class (geen "is een" en geen "heeft een") en die dus zeker niet een child class moet zijn van de SFSConnection class.
De foutmeldingen die je geeft, beide, kunnen helemaal niet voorkomen. Een include kan nooit tot gevolg hebben dat je het maximaal aantal geneste functies bereikt en ook die 'cannot implement' fout kan daar nooit een gevolg van zijn. Er gaan dus hele andere dingen fout, ik gok dat je gewoon die include compleet verkeerd hebt staan. Maar zonder code wordt dat verder moeilijk te zien. Geef dus even wat relevante code (alleen class declaraties en de stukken waar je de includes hebt staan zou genoeg moeten zijn, niet de hele class implementatie svp).
Hier heb ik zeker wat aan!
De reden dat ik in SFSBuildQuery naar SFSConnection refereer is dat ik gebruik maak van real_escape_string. hiervoor heb ik een verbinding nodig...
Ik ga in iedergeval weer even verder puzzelen met je tips! SUPER!
Toevoeging op 16/09/2014 14:01:55:
---
Toevoeging op 16/09/2014 14:02:04:
---