Как стать автором
Поиск
Написать публикацию
Обновить

Комментарии 39

таке впечатление что над php никто кроме Никиты не работает, это конечно хорошо, что у него столько запала и энтузиазма, но что будет с языком если он надумает оставить проект(
если он надумает оставить проект
Одна надежда на Поцтеринга.
>>> Предлагается добавить функцию str_contains
ну наконец то!!! и за Clean Code тоже спасибо большое!

Ну было бы куда чище вынести это все в статические методы класса String

Ну было бы куда чище вынести это все в статические методы класса String

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

Интереснее, возможно, было бы, если у конкретной строки можно было методы вызывать, вроде:
a = "Hello, world!
if(a.contains("world")) {
// Some meaningful stuff
}

Есть сторонние реализации типа такого


$a = new String("Hello, world!");
if($a->contains("world")) {
// Some meaningful stuff
}

Можно, наверное, сделать это же как часть стандартной библиотеке, с нативными реализациями на Си. Но смысла особого лично я не вижу, если не реализовать фичу типа как JS: при вызове методов/свойств на скалярных типах, происходит неявное преобразование скаляра в соотвествующий объект, метод вызывается и значение преобразуется в исходный тип, если надо.


Проще говоря на уровне языка осуществляется неявное преобразование $a->contains("world") в (new String($a))->contains("world"), а $b = $a->concat(" and other worlds ")->trim() в $b = (new String((new String($a))->concat(" and other worlds")->__toString())->trim()->__toString();


Ну вот у меня очень сильные сомнения о необходимости ещё одного типа неявных преобразований в PHP.

Ну… Мы снова, видимо, упираемся в то что преобразования/проверки лягут на рантайм.

Без преобразований в реальном (после опкэша и jit) рантайме: отказаться от скалярных типов и сделать всё объектами, изменить реализацию операторов на вызов методов (под шумок перегрузку операторов можно сделать :) ) и т. п. Вот тут как раз jit может очень пригодиться.

Спасибо за дайджейст! Сейчас читаю книгу «Чистый код» Роберта Мартина и адаптированные листинги для PHP очень кстати.
НЛО прилетело и опубликовало эту надпись здесь

Дженерики можно описать в аннотациях и валедировать psalm или PHPStan. Это конечно не тоже самое, что натив, но лучше чем ничего.

Ещё бы PhpStorm их читал...

Слишком много Никиты Попова.
Сразу отмечу, конечно профи своего дела и я его уважаю.
Но, это как то сужает нашу выборку, вместо обзора. включаем узкий прожектор.
Я бы в будущих подборках всё же вносил специальные ограничения на упоминания материалов/идей и тп от одного человека/компании, чтобы специально нас заставлять смотреть шире.
А так, спасибо за труд.

Вы не в ФАС работаете?


А если серьёзно, не упоминать важные (принятые или с высокой вероятностью принимаемые RFC) и интересные материалы только потому, что от одного человека наоборот заставляет смотреть уже.

эм… я не это имел ввиду.
Я просто не хочу, чтобы автор не попадал в классическую ловушку. Когда как бы темы многие закрыты, но слишком много одного взгляда (пусть и хорошего).
Поэтому профи специально выбирают самое важное у этих людей, а так по другим новостям пытатся разбавить и другими источниками новостей/полезностей.
Ну а на звезд всегда можно сделать ссылку. где конкретно на него можно подписать и следить.
И уж точно я ничего не имею против Никиты Попова, он признаный профи, делает много важных и интересных штук.
С интересом прочитал виденье Никиты Попова по развитию php без слома обратной совместимости. Интересно, есть ли что-нибудь подобное от основных разработчиков ядра php по вопросам асинхронности? Вроде бы тема очень актуальная и дискуссионная, но вот взгляд на эту проблему основных разработчиков php сходу найти не получилось.
Интересно, есть ли что-нибудь подобное от основных разработчиков ядра php по вопросам асинхронности? Вроде бы тема очень актуальная и дискуссионная, но вот взгляд на эту проблему основных разработчиков php сходу найти не получилось.

А чего не хватает?
Синт. сахара в виде async/await?

Основная проблема то не в самом php, а в экосистеме.
Поправьте, если ошибаюьс. Но php ведь не позволяет из коробки использовать асинхронность? Этого и не хватает. Также хотелось бы услышать размышления об этой проблематике в общем от разработчиков ядра и план продвижения в этом направлении. Когда в php появятся стандартные инструменты и подходы работы с асинхронностью, тогда уже и можно будет говорить об экосистеме.

Ну, socket-select и компании уже лет 20. Так, что сказать, что совсем не поддерживает нельзя. Но єто вс' на уровне биндингов к низкоуровневым функциям libc и т. п.

ReactPHP/Amp в общем-то из коробки можно использовать благодаря упомянутому socket-select.
Поправьте, если ошибаюьс. Но php ведь не позволяет из коробки использовать асинхронность? Этого и не хватает.

Асинхронность = возможность приостанавливать и возобновлять поток выполнения программы, для того чтобы не блокировать основной поток выполнения на IO-bound операциях.

В большинстве случаев, при взаимодействии с файлами/сетевыми запросами/пр.(см. блокирующие опепрации) PHP простаивает в ожидании ответа.

Выполнять эти дела в неблокирующем режиме уже можно используя event-loop из amphp/reactphp/swoole и их адаптеры для хранилищ/файлов и пр. вместо существующих блокирующих.

Для приостановки потока выполнения на время IO-операций сейчас используются корутины, которые реализуются через генераторы — nikic.github.io/2012/12/22/Cooperative-multitasking-using-coroutines-in-PHP.html, и неблокирующая поток запись/чтение из сокетов, т.е.:

Сделали запрос в БД -> Делаем дела -> при удобном моменте читаем ответ от БД(в php используется кооперативная многозадачность, и если кто-то таки заблокирует поток выполнения будет нехорошо) -> продолжаем поток выполнения который ожидал ответа от базы ($generator->send($data))
Обновил ссылку.

Увидел про декораторы и обрадовался, подумалось про аннотации говорится (в тайпскрипте они декораторами называются). Но нет, какая-то очередная магия, честно даже понять не смог, что там происходит.


Будем дальше в симфони страдать с phpdoc.

Я так понял что это работает как что-то среднее между наследованием и композицией. Со стороны наследования взяли поведение, но при этом не используют "extends", а со стороны композиции — то, что в конструктор объект исходного класса передают и присваивают его приватному свойству

Именно так. У нас в проекте очень интенсивно используется декораторы, и к сожалению, полезный код теряется среди бойлерплейта из методов для проксирования запроса декорируемому объекту.
НЛО прилетело и опубликовало эту надпись здесь
Можно где-нибудь найти хотя бы оглавление книги «Symfony 5. Быстрый старт»?
Самое забавное что язык активно развивается и продолжает обрастать инструментарием, а хейтеры клана js его хоронят который год.
Самое забавное что язык активно развивается и продолжает обрастать инструментарием, а хейтеры клана js его хоронят который год.

То что язык развивается не отличает его от других популярных и не очень языков. Странный аргумент.
С учетом количества проблем в PHP он слишком медленно развивается. Вот не понятно зачем сейчас было JIT делать, лучше бы акцент на сам язык сделали.
НЛО прилетело и опубликовало эту надпись здесь

Митап SymCode вынужденно перенесен на 13 марта да и то пока еще не 100% что получится
Увы, сложно с докладчиками пока что ...

Обновил пост.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации