Вышел PHP 5.4 beta1

Absinthe

жожо
Dovg для каждого класса делать статический инициализатор - некрасиво :)
Вижу дикий вариант - добавлять всем примесь :)
 

Absinthe

жожо
Духовность™ я про то же. Если одиночка не подходит, придется прользоваться статическими методами или примесями, их добавляющими. Это не карсиво.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
кто не в курсе про статическую типизацию, патч в -dev включали, а из альфы его убрали,
они там не могут договориться о том, как приводить к int - у каждого своя реализация, и чужая не подходит

суть в том, что одни хотят, чтобы в foo(int $i) при вызове foo(1.5) аргумент приводился к int, другие - чтобы кидался type warning,
третьи против типизации вообще, а 4е - доработать синтаксис и указывать что делать
и так уже лет 5 кто-нибудь накладывает вето и выкидывает очередной патч из транка
 

Вурдалак

Продвинутый новичок
какие-то странные у вас объекты. либо делайте статические методы, либо одиночку.
PHP:
/**
 * @return \DateTime
 */
public function getDate()
{
    $dt = new \DateTime();
    $dt->setTimestamp($this->attributes['created_at']);
    return $dt;
}
PHP:
/**
 * @return \DateTime
 */
public function getDate()
{
    return new \DateTime()->setTimestamp($this->attributes['created_at']);
}
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
охренеть разница :)
ну создайте уже
PHP:
class MyDate extends \DateTime{
function setTimestamp($date){
    if ( isset($this)) return parent::setTimestamp($date);
    $dt = new self;
    return $dt->setTimestamp($date);
}
}
и пишите везде по второму варианту return MyDate::setTimestamp($this->attributes['created_at'])!
или вы хотите сказать, что у вас десятки таких классов?

не, я понимаю, что задалбывает писать отдельно shuffle($data); и иначе никак,
но с классами-то не пофиг ли?
 

Redjik

Джедай-мастер
нубский вопрос, увидел незнакомую штуку...
что значит \ в инициализации - в первом посте и в обьявлении класса - во втором?
 

Вурдалак

Продвинутый новичок
grigori, ради такой мелочи наследовать класс? Сахару хочется. Собственно, неужели есть противники подобной фишки? Пишите в три строки вместо одной, никто вам не мешает.

что значит \ в инициализации - в первом посте и в обьявлении класса - во втором?
http://php.net/manual/en/language.namespaces.php
 

Духовность™

Продвинутый новичок
PHP:
/**
 * @return \DateTime
 */
public function getDate()
{
    $dt = new \DateTime();
    $dt->setTimestamp($this->attributes['created_at']);
    return $dt;
}
PHP:
/**
 * @return \DateTime
 */
public function getDate()
{
    return new \DateTime()->setTimestamp($this->attributes['created_at']);
}
это все в каком контексте используется? В контексте какой-то модели, где есть свойство $this->attributes['created_at']? Я не вижу ни одной причины, что бы иметь дату и не иметь объект модели. Это не ООП, а черте что.
 

Вурдалак

Продвинутый новичок
Духовность™, ты не поверишь в каком это контексте, так что спи.
 

Духовность™

Продвинутый новичок
Вурдалак
ну расскажи, если такой умный. $this->attributes['created_at'] откуда в объекте берется? наверняка из СУБД, наверняка объект модели уже инстанцировался.

Ну раз уж на то пошло, то getDate() можноо вообще заменить на
PHP:
new Datetime('@'.time())
и не надо для этого целый класс городить.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
- неужели есть противники подобной фишки?
да, это усложнение и общее, хоть и незначительное, замедление парсера и интерпретатора
для проектов типа фейсбука, баду и яху разница может быть

и да, ради такой мелочи я могу создавать класс, просто для личного маленького удовольствия, drawback точно меньше

вот кто бы доработал SPL и добавил обработку ArrayAccess в функции работы с массивами?
а то смотрю на джаву, питон, js и как-то стыдно даже за php :)
 

Духовность™

Продвинутый новичок
вот кто бы доработал SPL и добавил обработку ArrayAccess в функции работы с массивами?
а то смотрю на джаву, питон, js и как-то стыдно даже за php :)
во-во. я уже давно сделал для себя свой объектный массив - http://phpclub.ru/talk/threads/Обёртка-для-масива-в-стиле-dom.67072/#post-597993
 

Вурдалак

Продвинутый новичок
$this->attributes['created_at'] откуда в объекте берется?
С удалённого сервера. Это эксплойт. Мне с тобой скучно разговаривать. Очень много умных слов, на которые ты, по-моему, мастурбируешь. Да и что мне с тобой говорить, если ты даже namespaces не признаёшь?

да, это усложнение и общее, хоть и незначительное, замедление парсера и интерпретатора
Проводил замеры? Я считаю, что это чушь (небольшое расширение матрицы состояний на скорость в принципе не должно влиять). Акселераторами не пользуешься?

для проектов типа фейсбука, баду и яху разница может быть
Акселераторы. А у facebook вообще hiphop, им это должно быть по барабану.

Ребята, не высасывайте из пальца причины.
 

Духовность™

Продвинутый новичок
Мне с тобой скучно разговаривать. Очень много умных слов, на которые ты, по-моему, мастурбируешь.
Умерь своё ЧСВ, дружок.

Да и что мне с тобой говорить, если ты даже namespaces не признаёшь?
Понятно. Слился.
 

Redjik

Джедай-мастер
Да и что мне с тобой говорить, если ты даже namespaces не признаёшь?
Я вот внимательно на два раза покурил мануал по Пространствам Имен, и придумал 2 причины по которой их можно применять.
1) Если ты пишешь экстеншен для какого-нибудь зубодробильного движка аля Зенд и боишься что твой код будет конфликтовать с чужим расширением.
Ибо все расширения для Зенда не проверить.

2)Если запутался в своих классах и начал дублировать названия... что вроде не есть хорошо...

Или я не прав?

ЗЫ. сейчас работаю в студии падаваном, посмотрел классы Зенда, используемые в движке ... - не похоже что папы пхп, пишущие Зенд сами в восторге от namespaces.
 

Вурдалак

Продвинутый новичок
Не нужно далеко ходить: http://www.pagination.ru/ — если ты присмотришься к коду, то все классы имеют префикс «Krugozor_». Я ему уже об этом упоминал, но он просто не хочет ничего слушать. Проще всё пихнуть в одно пространство имён «Krugozor» и не трахать никому мозги. Ты ничего не теряешь, когда используешь их, но появляются преимущества: в рамках одного namespace имена будут короче, а имена классов из других ты можешь импортировать с помощью use.

Да, можно обойтись и без namespaces, но занимать позицию «namespaces — говно» просто глупо.
 

Духовность™

Продвинутый новичок
Я работал с namespaces и мне не понравилось.

в рамках одного namespace имена будут короче
Это НЕ ПЛЮС, это - минус! Очень не удобно, т.к. глядя на код
PHP:
$userAnswer = new UserAnswer();
очень тяжело понять, что это за класс и где его корни. Приходится постоянно возвращаться в use секцию.
 

Вурдалак

Продвинутый новичок
Духовность™, а, я забыл, ты же ещё и IDE вроде не используешь и Ctrl + Click не для тебя. Тяжело тебе, что тут скажешь...
 
  • Like
Реакции: atv
Сверху