Pull to refresh

Comments 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 очень кстати.
UFO just landed and posted this here

Дженерики можно описать в аннотациях и валедировать 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", а со стороны композиции — то, что в конструктор объект исходного класса передают и присваивают его приватному свойству

Именно так. У нас в проекте очень интенсивно используется декораторы, и к сожалению, полезный код теряется среди бойлерплейта из методов для проксирования запроса декорируемому объекту.
UFO just landed and posted this here
Можно где-нибудь найти хотя бы оглавление книги «Symfony 5. Быстрый старт»?
Самое забавное что язык активно развивается и продолжает обрастать инструментарием, а хейтеры клана js его хоронят который год.
Самое забавное что язык активно развивается и продолжает обрастать инструментарием, а хейтеры клана js его хоронят который год.

То что язык развивается не отличает его от других популярных и не очень языков. Странный аргумент.
С учетом количества проблем в PHP он слишком медленно развивается. Вот не понятно зачем сейчас было JIT делать, лучше бы акцент на сам язык сделали.
UFO just landed and posted this here

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

Sign up to leave a comment.

Articles