Loading...
jumparo avatar jumparo 26 Точки

[Exam Problem] 01.Problem -Date Sorter

Здравейте,

Много ми е интересно ето това какво прави :

/**
 * @var DateTime[] $dates
 */

и без това judj-a дава 100 точки, но ми дава "Method"format is not found in class"", когато посоча с мишката върху format .

Решената задача на Иван Йонков визирам от подготовката за изпит на 29.04.2015,

Благодаря

 

Тагове:
0
PHP Web Development Basics
Filkolev avatar Filkolev 4482 Точки

Това, което си копирал, е документация на кода и то не просто коментар за който е попаднал на програмата, а нещо, което IDE-то разпознава. В случая това е сложено над метод и с него казваме, че методът ще връща масив от дати. По този начин при достъпване на елементи от масива PHP Storm например ще ти дава предложения за методите, които може да ползваш върху обекта (понеже знае, че е дата). В противен случай просто няма да имаш интелисенс.

За методи, които връщат една стойност това не е необходимо да се прави, но явно при масиви няма как иначе. По подразбиране в PHP в един масив може да слагаш всякакви типове данни, за разлика от силно типизираните езици като C#, Java. 

2
jumparo avatar jumparo 26 Точки

Балгодаря ти за отговора! Разбрах идеята

0
RoYaL avatar RoYaL Trainer 6849 Точки

Да, Фил го каза много точно, това работи за връщащите стойности на методи, само че тогава се използва анотацията @return.

В конкретния случай, това съм го използвал директно над локална (глобална) променлива, която искам да е масив от дати. Тогава анотацията е @var.

Кодът би трябвало да изглежда нещо от сорта на

/** @var DateTime[] $dates */

$dates = []; // празен масив

foreach ($array as $value) {

    $dates[] = date_create($value); // вкарване обект от тип DateTime в масива

}

Ако я няма анотацията, IDE-то не знае, че това е масив от дати, а че е просто празен масив :)

В секцията Tags на PHPDoc са описани и останалите анотации, които биха могли да бъдат полезни: http://en.wikipedia.org/wiki/PHPDoc

 

 

 

 

2
jumparo avatar jumparo 26 Точки

Добре, още един бърз въпрос <<<KUF ..... KUF or <<<EOL какво помагат при взимането на някакъв input ?

0
RoYaL avatar RoYaL Trainer 6849 Точки

Това е така наречения Heredoc syntax. Има го споменат на 40ти слайд в презентацията по масиви, стрингове и обекти. Едно бързо търсене на "php heredoc" след това в гугъл води до https://php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc където е обяснено какво е :) Общо взето е нещто като "@"-а в C# при принтиране - няма нужда след това да ескепваш единични, двойни и прочие кавички.

Горещо препоръчвам все пак като се учи език да се минава поне през слайдовете и да се търси в гугъл :)

1
jumparo avatar jumparo 26 Точки

Аз търсих в Googlе разбира се, а през слайдовете бях минавал преди време и не си спомням за <<<KUF , и в гугъл нищо нямаше за <<<KUF .
Благодаря ти за отговора!

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.