PHP-Klasse DateTime nicht gefunden

Lesezeit: 2 Minuten

Benutzer-Avatar
ElPiter

Beim Deklarieren eines DateTime-Objekts fehlt etwas PHP5.3.8

Ich erhalte eine JSON-Zeichenfolge mit einer bestimmten Datumszeit, die an meinen PHP-Controller übergeben wird.

Aus irgendeinem Grund bekomme ich es nicht als DateTime-Objekt in PHP abgebildet. Aber irgendwie seltsam. Siehe folgende Bilder:

  1. Wie Sie im Ausdrucksfenster (oben rechts) sehen können, überprüfe ich VOR dem Schritt, ob die neue DateTime(myVariable) das bringt und korrekt transformiert, was ich brauche. In der ersten Überwachung die Variable, die an den DateTime-Konstruktor übergeben werden soll. In der zweiten Überwachung ist der Ausdruck newDateTime(myVariable) bereits als DateTimeObject zugeordnet. Anscheinend in Ordnung bis hierher.

    Geben Sie hier die Bildbeschreibung ein

  2. Aber leider, wenn ich vorwärts gehe und F6 drücke, wird die folgende Ausnahme (siehe auch das Bild unten) geworfen:

    Fatal error: Class 'Acme\StoreBundle\Repository\DateTime' not found in /Users/pgbonino/Sites/Symfony/src/Acme/StoreBundle/Repository/HistoryRepository.php on line 19
    
    Call Stack:
        0.0201     693568   1. {main}() /Users/pgbonino/Sites/Symfony/web/app_dev.php:0
        0.0267    2106576   2. Symfony\Component\HttpKernel\Kernel->handle(???, ???, ???) /Users/pgbonino/Sites/Symfony/web/app_dev.php:24
        0.0377    2649176   3. Symfony\Bundle\FrameworkBundle\HttpKernel->handle(???, ???, ???) /Users/pgbonino/Sites/Symfony/app/bootstrap.php.cache:547
        0.0378    2650832   4. Symfony\Component\HttpKernel\HttpKernel->handle(???, ???, ???) /Users/pgbonino/Sites/Symfony/app/cache/dev/classes.php:4879
        0.0378    2650832   5. Symfony\Component\HttpKernel\HttpKernel->handleRaw(???, ???) /Users/pgbonino/Sites/Symfony/app/cache/dev/classes.php:3875
        0.1574    5562232   6. call_user_func_array(???, ???) /Users/pgbonino/Sites/Symfony/app/cache/dev/classes.php:3905
        0.1574    5562600   7. Acme\StoreBundle\Controller\HistoryController->saveTestAction() /Users/pgbonino/Sites/Symfony/app/cache/dev/classes.php:3905
        0.1694    5739032   8. Acme\StoreBundle\Repository\HistoryRepository->saveTestInHistory(???, ???) /Users/pgbonino/Sites/Symfony/src/Acme/StoreBundle/Controller/HistoryController.php:33
    

    Geben Sie hier die Bildbeschreibung ein

Seltsamerweise funktioniert das Watch Expressions-Fenster von Eclipse also nicht wie die Ausführungs-Engine und/oder umgekehrt.

Natürlich wäre mir das Gegenteil lieber (es funktionierte in der Ausführung und nicht im Watch-Fenster 🙂 ).

Also, irgendeine Idee?

Benutzer-Avatar
zerkms

Sie befinden sich derzeit in der Acme\StoreBundle\Repository\DateTime Nackenbereich. Um in diesem Fall den Standardnamensraum zu adressieren, müssen Sie voranstellen \ vor Ihrem Klassennamen, wie

$dt = new \DateTime(...);

Also

namespace foo;
$obj = new class();

werde versuchen zu finden class Definition innerhalb foo Namensraum.

Und

namespace foo;
$obj = new \class();

werde versuchen zu finden class Definition im globalen Namensraum.

Alternativ können Sie die Klasse auch mit importieren

use \DateTime;

oder Alias ​​erstellen (falls Sie bereits die Klasse mit demselben Namen im aktuellen NS haben):

use \DateTime as NewDT;

  • man könnte auch a setzen use DateTime; oben, und dann können Sie es ohne führenden Schrägstrich verwenden.

    – dan-lee

    31. Mai 2012 um 22:16 Uhr

  • Wunderbare Lösung bei der Verwendung von PSR-4. Vielen Dank.

    – Andreas

    25. Juli 2019 um 12:15 Uhr

Ich denke, Sie verwenden Namespaces und versuchen, DateTime (relativ zum aktuellen Namespace) anstelle von \DateTime (dem vollständig qualifizierten Klassennamen) zu verwenden.

1180190cookie-checkPHP-Klasse DateTime nicht gefunden

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy