W Symfony 2, co to znaczy linia:W Symfony2, co oznacza DateTime?
$task->setDueDate(new \DateTime('tomorrow'));
co robi \DateTime
oznaczać? Czy można uzyskać do niego dostęp z dowolnego miejsca?
W Symfony 2, co to znaczy linia:W Symfony2, co oznacza DateTime?
$task->setDueDate(new \DateTime('tomorrow'));
co robi \DateTime
oznaczać? Czy można uzyskać do niego dostęp z dowolnego miejsca?
Mały FYI, po pierwsze, nie ma to nic wspólnego z Symfony - tak się składa, że Symfony2 używa namespaces.
Jeśli nie używasz przestrzeni nazw, datetime class jest zawsze dostępny przez new DateTime()
- dzieje się tak, ponieważ jesteś już w obszarze nazw "root". Jednak, gdy używasz przestrzeni nazw, po prostu używanie new DateTime()
nie będzie działać tak, jak będzie szukać tej klasy w bieżącym obszarze nazw. Przykład:
<?php
namespace MyApp\Component;
class Something
{
function __construct()
{
$dt = new DateTime();
}
}
Spowoduje błąd (na przykład Class 'MyApp\Component\DateTime' not found in ...
), ponieważ nie jest klasa w MyApp\Component
nazw nazwie DateTime.
Dlatego właśnie znalazłeś \DateTime()
, który nakazał interpreterowi, aby zajrzał do przestrzeni nazw "root" (?) Dla klasy DateTime
.
Można również użyć słowa kluczowego use
zaimportować klasę DateTime
- górna część skryptu będzie wyglądać - pozwala to wystarczy zadzwonić new DateTime()
:
<?php
namespace MyApp\Component;
use \DateTime;
\ DateTime to klasa DateTime o podanej nazwie. Prawdopodobnie znajduje się gdzieś na górze pliku, na który patrzysz, ma opóźnienie \ X \ X. \ DateTime powinny być dostępne wszędzie można zadeklarować użycie \ X \ X
Zobacz http://www.php.net/manual/en/language.namespaces.global.php
Należy również zobaczyć namespace X\Y;
na początku pliku, \DateTime
oznacza, że klasa DateTime
należy przyjmować z globalnym przestrzeń nazw, zamiast X\Y
.
tj. this DateTime.
Jako inny powiedział, że odwołuje się do globalnej przestrzeni nazw i DateTime jest zintegrowany z php, spójrz tutaj: http://www.php.net/manual/en/class.datetime.php , dzięki czemu można go używać nie tylko w symfony;)
Awesome! dzięki .. –
Możesz także dodać "use DateTime" do swojej klasy, a następnie po prostu "new DateTime()", w ten sposób importujesz klasy z predefiniowanymi znakami do innych, gotowych do użycia. – catchamonkey
@catchamonkey true. Dodam to do odpowiedzi. – Prisoner