Comments 19
Это типа для тех, кто не осилил мануал?
+3
Вы видимо не читали. Целью автора была не скопировать мануал, а дополнить его примерами не искусственными, которые помогут понять смысл. Я не сомневаюсь в вашей компетенции как разработчика, но все ли смогут привести пример использования метода __invoke()?
И да, новичкам оно тоже подойдет, иначе зачем бы я поставил флаг tutorial?
P.S. Печально видеть осуждение от пользователя, который не потрудился написать ни одного полезного поста или комментария.
И да, новичкам оно тоже подойдет, иначе зачем бы я поставил флаг tutorial?
P.S. Печально видеть осуждение от пользователя, который не потрудился написать ни одного полезного поста или комментария.
-1
«Сначала добейся» — не лучший ответ.
Tuman_2 прав, статья ни о чем. Примеров и так хватает. Я не умаляю вашу работу: перевод большого текста (и я не заметил сильных погрешностей в переводе) — дело не из легких. Но ценность статьи сомнительна.
Tuman_2 прав, статья ни о чем. Примеров и так хватает. Я не умаляю вашу работу: перевод большого текста (и я не заметил сильных погрешностей в переводе) — дело не из легких. Но ценность статьи сомнительна.
+5
Спасибо за наиболее развернутый ответ. И прошу прощенья, вспылил.
Да, согласен, ценность статьи можно поставить под сомнение, но ведь ведь и изначально статья Филиппа Брауна не была расчитана на профессионалов. Скорее на новичков или немного более продвинутых, кому было бы неплохо закрепить свои навыки.
А насчет ценности статьи, то для меня наиболее обьективный показатель ценности — это количество добавления в закладки, а их уже, ни много ни мало, 35 человек, что уже о чем-то да говорит.
Да, согласен, ценность статьи можно поставить под сомнение, но ведь ведь и изначально статья Филиппа Брауна не была расчитана на профессионалов. Скорее на новичков или немного более продвинутых, кому было бы неплохо закрепить свои навыки.
А насчет ценности статьи, то для меня наиболее обьективный показатель ценности — это количество добавления в закладки, а их уже, ни много ни мало, 35 человек, что уже о чем-то да говорит.
0
Скорее на новичков или немного более продвинутых, кому было бы неплохо закрепить свои навыки.
Просто последнее время на хабре куча статей «для новичков» и очень мало глубоких технических статей. Мое личное мнение: статьи «для новичков» допустимы только на те темы, о которых вообще мало материала в рунете и на хабре в частности.
это количество добавления в закладки, а их уже, ни много ни мало, 35 человек, что уже о чем-то да говорит.
Если я не ошибаюсь, то аудитория хабра — больше 5М уникумов в месяц.
+1
Пишу из 2018, внезапно почему-то перестал открываться php.net, захотел освежить память о магических методах, но не смог, если бы не ваша статья. Спасибо.
0
При всем уважении к вашему труду, но вы видимо тоже не читали, т.к. говорите, что
Смысл в том, что нужно прочитать довольно длинную статью, с кучей примеров, чтобы получить пару мыслей (важность которых сомнительна) отличных от мануала. При этом, почерпнуть эти мысли в отдельном виде не получится.
Мне скорее жалко ваш труд, так как текст переведен хорошо, но его значимость сомнительна. Еще мне жалко время, которые вы украли у меня этой статьей =)
P.S. искуственным на искусственным исправьте.
Целью автора была не скопировать мануал, а дополнить его примерами не искусственными, которые помогут понять смысл., а написано:
Согласен, данный пример является немного искуственным, однако я уверен, что вы действительно найдете применение этому методу.(это все о методе __invoke()) Ну это так, ответ на то, что вы считаете, что я не читал. А по делу ниже.
Смысл в том, что нужно прочитать довольно длинную статью, с кучей примеров, чтобы получить пару мыслей (важность которых сомнительна) отличных от мануала. При этом, почерпнуть эти мысли в отдельном виде не получится.
Мне скорее жалко ваш труд, так как текст переведен хорошо, но его значимость сомнительна. Еще мне жалко время, которые вы украли у меня этой статьей =)
P.S. искуственным на искусственным исправьте.
+1
Спасибо, что слили карму за этот коммент!
-1
Тоже в некотором роде магический метод: www.php.net/manual/en/datetimeimmutable.modify.php
+1
Да, как же уже все надоели с этим методом! Twitter, Facebook заполнены такими «шутками», а теперь и на Хабр просочилось… Никакой логической ошибки тут нет и быть не может т.к. возвращается новый объект, а старый остается без изменений, что является обычной практикой для Value Object к коим относится и DateTimeImmutable.
0
Но это же не modify, логика совсем другая. Почему метод не называется create, copyAndModify или cloneWithParameters?
Более того, в документации написано, что этот метод «Alters the timestamp». Поэтому может поведение метода и соответствует семантике типа, но его название и тем более документация абсолютно неверные
Более того, в документации написано, что этот метод «Alters the timestamp». Поэтому может поведение метода и соответствует семантике типа, но его название и тем более документация абсолютно неверные
0
Когда вы создаете копию обьекта в PHP, то сначала она становиться просто ссылкой на оригинальный обьект
А потом? :)
В общем-то и в оригинале не оч. точно написано, кстати.
0
Спасибо, исправлено.
0
Гмм… Вообще нет (и я не про «ться»). Хотя тут, наверное, неточность не у вас, а у автора оригинала.
Тут не создается никакой копии объекта, никто не становится ссылкой на оригинальный объект, никакую копию вы не изменяете.
Просто $sheep1 и $sheep2 содержат идентификаторы, которые указывают на один и тот же объект.
А вот так они были бы ссылками:
Разница наглядно:
Когда вы создаете копию обьекта в PHP, то она становиться просто ссылкой на оригинальный обьект. То есть изменяя оригинальный обьект вы изменяете и его копию
Тут не создается никакой копии объекта, никто не становится ссылкой на оригинальный объект, никакую копию вы не изменяете.
Просто $sheep1 и $sheep2 содержат идентификаторы, которые указывают на один и тот же объект.
А вот так они были бы ссылками:
$sheep1 = &$sheep2
Разница наглядно:
0
Эх… а я надеялся увидеть примеры магии, именно полезные примеры. Proxy-объекты, декораторы/адаптеры и все такое прочее. Если очень хочется увидеть такую магию — рекомендую посмотреть исходники PhpSpec и в частности библиотеки для создания моков — prophecy. Вот там магии хватает.
А использовать магию типа get/set/call я бы вообще не рекомендовал. Во всяком случае не для сущностей.
А использовать магию типа get/set/call я бы вообще не рекомендовал. Во всяком случае не для сущностей.
0
По мне так __toString один из самых полезных magic методов в php. Часто приходится делать что-то типа мелких процессоров для обработки текста и вызовы типа
весьма удобны оказываются
$a = (string) new Processor($b);
весьма удобны оказываются
0
Как раз на днях делал генератор xml отчетов с использованием этого метода. Для генерации отчета нужно было просто насоздавать экземпляров нужных классов и заполнить из свойства. И все. Потом просто передать этот объект в file_put_contents(), а дальше он сам сгенерит необходимую разметку. Очень удобно, что не надо вызывать отдельные методы типа ->toString() и т.п.
0
Весьма сомнительное решение если честно. Если бы класс назывался Report еще ладно…
0
Sign up to leave a comment.
[Перевод] Магические методы в PHP