login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Namespaces in PHP

Offline Tuinstoel - 01/06/2011 22:06 (laatste wijziging 01/06/2011 22:16)
Avatar van TuinstoelPHP expert Ik ben wat aan het prutsen geslaagd met php en namespaces. Vreemd genoeg pakt hij niet de gewone functies uit de standaardlibrary, iets wat hij mijn inziens gewoon moet doen met een \ er voor.

  1. <?php
  2. namespace Voetbal\Data;
  3.  
  4. require_once '/Utility/DataException.php';
  5.  
  6. abstract class DataBasic {
  7.  
  8. private static $db = null;
  9. private $dsn = "mysql:host=localhost;dbname=mvv_nieuw";
  10. private $user = "root";
  11. private $pass = "";
  12.  
  13. protected function Connection() {
  14. if(self::$db==null) {
  15. try {
  16. $pdo = new \PDO($this->dsn, $this->user, $this->pass);
  17. self::$db = $pdo;
  18. }
  19. catch(\PDOException $e) {
  20. throw new \Voetbal\Utility\DataException($e);
  21. }
  22. }
  23.  
  24. return self::$db;
  25. }
  26.  
  27. protected abstract function Add($data);
  28. protected abstract function Modify($data);
  29. protected abstract function Remove($data);
  30. protected abstract function GetAll();
  31. }
  32. ?>


Door \PDO() te doen i.p.v. PDO() zou hij de juiste functie moeten vinden. Ik krijg nu echter de volgende error:

Citaat:
Fatal error: Class 'VoetbalDataPDO' not found in D:VoetbalDataMenuItems.php on line 24


Inderdaad \PDO() staat niet in die namespace, maar die moet ie ook helemaal niet pakken! Wat doe ik verkeerd? Of kan ik dat namespaces-gebeuren beter laten liggen tot PHP 10.0?

4 antwoorden

Gesponsorde links
Offline marten - 01/06/2011 22:19
Avatar van marten Beheerder Je defined toch geen eigen 'scope' voor PDO? Dus je kan gewoon PDO gebruiken hiervoor. Wil je in de scope van je voetbal/data opnieuw PDO gebruiken zal je pas moeten gaan denken aan de \
Bedankt door: Tuinstoel
Offline Tuinstoel - 01/06/2011 22:31
Avatar van Tuinstoel PHP expert Ik heb even niks gezegd. Fout zat in een ander bestand, maar komt er wel op neer dat namespaces gewoon massive idioot zijn. De \ is wel nodig! Dit refereert naar de 'base'-functies/classes die ingebouwd zijn in php. Ik had in een klasse die hier van erfde dit gedaan $iets = $statement->fetchAll(PDO::FETCH_ASSOC); en daar had ook een \ voor de PDO gemoeten...

Maarja, het is een ontwikkeling met het oog op de toekomst. Namespaces in php, in dit stadium nog een lachertje .
Offline marten - 01/06/2011 22:35 (laatste wijziging 01/06/2011 23:25)
Avatar van marten Beheerder
Citaat:
De is wel nodig! Dit refereert naar de 'base'-functies/classes die ingebouwd zijn in php


Dat klopt. Maar zolang je zelf geen 'overwrite' maakt hoef je die dus niet te gebruiken. In PHP zit namelijk een fallback naar de globale namespace ingebakken 
Offline avdg - 01/06/2011 23:14
Avatar van avdg PHP gevorderde Wat is de inhoud van VoetbalDataMenuItems.php?
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.18s