Namespaces en fetch_object()
Quote:
namespace Blog;
class Blog extends \Resources{
}
class Blog extends \Resources{
}
Maar nu krijg ik een fatal error als ik via fetch_object() de blog class wil laden:
Quote:
fetch_object($sClassName)
Error:
Quote:
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.
Gewijzigd op 23/11/2015 22:27:38 door Sander V
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?
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)
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");
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:
Quote:
while ($oRow = $oResult->fetch_object($sClassName)) {
$aArr[] = $oRow;
}
$aArr[] = $oRow;
}
welke slash gebruik je? / of \ ?
Ik gebruik /
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;
}
}
Gewijzigd op 24/11/2015 09:23:00 door Sander V
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?
Toevoeging op 24/11/2015 09:27:28:
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 )
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.