2012-05-31 32 views
13

Thiếu một cái gì đó khi khai báo một đối tượng DateTime trong PHP 5.3.8PHP Lớp DateTime không tìm thấy

tôi nhận được một chuỗi với một thời gian ngày quyết tâm đó được truyền cho bộ điều khiển php của tôi JSON.

Vì một số lý do, tôi không làm cho nó được ánh xạ dưới dạng đối tượng DateTime trong php. Nhưng kỳ lạ. Xem những hình ảnh sau đây:

  1. Như bạn có thể thấy trong biểu thức Window (phía trên bên phải), TRƯỚC bước, tôi đang kiểm tra rằng DateTime mới (myVariable) được đưa và chuyển một cách chính xác những gì tôi cần. Trong đồng hồ đầu tiên, biến để chuyển đến hàm tạo DateTime. Trong đồng hồ thứ hai, biểu thức newDateTime (myVariable) đã được ánh xạ như một DateTimeObject. Dường như ổn lên đây.

    enter image description here

  2. Nhưng, thật đáng buồn, khi tôi đi về phía trước và nhấn F6, miễn sau (xem thêm hình dưới đây) được ném:

    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 
    

    enter image description here

Vì vậy, kỳ lạ, cửa sổ Xem biểu thức từ Eclipse không hoạt động giống như công cụ thực thi và/hoặc ngược lại.

Tất nhiên, tôi muốn nó ngược lại (Nó hoạt động trong thực thi chứ không phải trong cửa sổ xem :)).

Vì vậy, có ý tưởng nào không?

Trả lời

37

Bạn hiện đang ở trong khoảng cách Acme\StoreBundle\Repository\DateTime. Để giải quyết để không gian tên mặc định trong trường hợp này bạn cần phải đặt hàng đầu \ trước classname của bạn, giống như

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

nên

namespace foo; 
$obj = new class(); 

sẽ cố gắng tìm class định nghĩa trong namespace foo.

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

sẽ cố gắng tìm class định nghĩa trong namespace toàn cầu.

Là một thay thế bạn có thể nhập khẩu các lớp sử dụng

use \DateTime; 

hoặc tạo bí danh (trong trường hợp nếu bạn đã có lớp có cùng tên trong NS hiện hành):

use \DateTime as NewDT; 
+0

Câu trả lời hay như vậy (và nhanh). Nó đã làm nó! :) Cảm ơn rất nhiều. – ElPiter

+3

bạn cũng có thể đặt một 'sử dụng DateTime;' trên đầu trang, và sau đó nó bạn có thể sử dụng nó mà không có dấu gạch chéo hàng đầu. –

+0

@Dan Lee: lưu ý tuyệt vời! – zerkms

2

Tôi đoán Bạn đang sử dụng không gian tên và cố gắng sử dụng DateTime (so với không gian tên hiện tại) thay vì \ DateTime (tên lớp đầy đủ)

Các vấn đề liên quan