ik heb van mijn Blog class een namespace gemaakt.


namespace Blog;
class Blog extends \Resources{
}


Maar nu krijg ik een fatal error als ik via fetch_object() de blog class wil laden:


fetch_object($sClassName)


Error:


Fatal error: Class 'Blog' not found in ..... on line 99


Nu kan ik niet achterhalen wat probleem is. Als ik de namespace weg haal gaat alles prima.
Gebruik je wel use Blog\Blog in je code (of roep je de class aan als Blog\Blog) zoals noodzakelijk is bij gebruik van namespaces?
Gebruik helemaal geen use.

Waar het op stuk gaat is het volgende:

ik roep een andere class aan BlogManager::getAllBlogItems() En in die functie (getAllBlogItems())

haal ik alle blog data op op basis van het object: $aBlogItems = $dbc->query($sQuery, QRY_OBJECT, "Blog");

En dan kom je bij mijn Database connection class die dus volgende functie uitvoert: fetch_object($sClassName)

en kom je dan via fetch_object() op een plek waar die regel 99 in de buurt staat?

Ik vermoed dat daar iets staat als

new $sClassName();

en dat je script daar niet door heeft dat er een namespace bij hoort die niet meegegeven wordt.

probeer het eens met

$aBlogItems = $dbc->query($sQuery, QRY_OBJECT, "Blog\Blog");
Ivo P op 23/11/2015 23:12:34


probeer het eens met

$aBlogItems = $dbc->query($sQuery, QRY_OBJECT, "Blog\Blog");


dan krijg ik volgende error:

Fatal error: Class 'Blog/Blog' not found in /..../DatabaseCon.class.php on line 51

Op line 51 staat:


while ($oRow = $oResult->fetch_object($sClassName)) {
$aArr[] = $oRow;
}
welke slash gebruik je? / of \ ?
Ik gebruik /
Nee dan ook niet. Dan kan hij het bestand niet vinden.

Ik heb het idee dat het hierom fout gaat: Ik roep namelijk deze functie aan:

BlogManager::getAllBlogItems();

en dat is deze functie binnen de BlogManager class:

class BlogManager {

public static function getAllBlogItems() {

$sQuery = "QUERYSTRING";

$dbc = new DatabaseCon();
$aBlogItems = $dbc->query($sQuery, QRY_OBJECT, "Blog/Blog");

return $aBlogItems;
}

}
Het scheidingsteken voor de verschillende niveau's van namespaces is de \

Heb jij ergens een autoloader die op zoek gaat naar de file met de de class Blog?
Is de map waarin de genamespacede class staat anders dan als het gewoon om de hoofd namespace gaat?

Hoe zoekt je script de file op?


Welk script geeft (op regel 99) nu eigenlijk de foutmelding?

[size=xsmall]Toevoeging op 24/11/2015 09:27:28:[/size]

ah niet regel 99
zie dat het 51 is geworden.

Maar dat is wat vreemd want op die regel is geen sprake van het aanroepen van een class.
hooguit van de naam van een class in een string, maar daar hoeft nog niet direct de class zelf te staan.

Wat is de complete foutmelding? (evt met path wat geanonimiseerd )
Het is me gelukt! Het was inderdaad de back- en forward slash.

Kwam door mijn autoloader. Maar die vervangt nu de backslash voor een forward slash en dan gaat het goed.
Dan haalt hij de juiste bestand op en kan de class geladen worden.

Thanks voor jullie hulp.

Reageren