Одним из нововведений PHP 8.0 являются атрибуты. Атрибуты содержат метадату для классов, полей, функций; которая доступна через Reflection API. Казалось бы, то же самое, что и аннотации, тогда зачем обращать внимание на эту фичу?
PHP *
Скриптовый язык общего назначения
Подождите редактировать
Вы написали тестовое, выложили на гитхаб и обратно спуллили. А оно не работает.
Выходя за рамки ООП. Разработка расширений для PHP на PHP
Какие есть границы в PHP? Синтаксические они или это рантайм, или же просто ограничения языка, которые нельзя обойти. Почему они существуют? Давайте посмотрим как преодолеть границы живого языка и как взломать его изнутри. Это же всегда интересно?
В этом нам поможет Александр Лисаченко. Он автор аспектно-ориентированного фреймворка Go! AOP и вообще гуру в Enterprise архитектуре.
PHPCleanArchitecture — Что нового?
Этот пост является дополнением предыдущего. В нём расскажу о новых возможностях инструмента (с блэкджеком и шлюпками с примерами и картинками).
Миграция Laravel Nova с PostgreSQL на CockroachDB. Наш опыт и решение
Часто бывает, при ближайшем рассмотрении некоторая проблема выявляет более глубокую, погружаясь в решение которой находишь для себя много интересного.
О такой ситуации на одном из наших проектов и пойдет речь.
Вместо квестов по поликлиникам: как мы разработали архитектуру информационной системы для пациента
Привет, я - Алмаз Мустакимов, ведущий разработчик одного из бизнес-центров в компании «БАРС Груп». Мы более года работаем над мобильным приложением, которое фактически позволяет получить любые услуги здравоохранения в режиме единого окна, без многочасовых квестов по поликлиникам.
PHP & Kafka — production sadness
Это короткая история наивного любителя популярных технологий.
Ранее я уже писал почему на моем текущем проекте мы решили использовать — Apache Kafka, если вкратце, то цель — унификация используемых технологий в компании.
Сфера деятельности компании это ставки на спорт, зона ответственности моей команды состоит в том, чтобы принять и оцифровать происходящее на игровом поле, будь то реальное поле з зеленой травкой или серый бетон виртуального CS:GO.
Очень важно чтобы данные инцидент произошедший в игре был передан дальше по системе и коэффициенты были пересчитаны быстрее чем потенциальный Беттер поставит очередную ставку на основании новых вводных. Например, забитый гол в лиге чемпионов на 90+ минуте основного времени.
Итак, вернемся к нашим баранам.
Думаю никому не секрет, что в больших компаниях используется практика использования нескольких типов языков программирования.
Там где можно сэкономить — экономят.
Наша компания не исключение. Для обеспечения организационной части бизнеса — СРМ и интерфейсов первичного ввода данных(интерфейс судьи/статиста) мы используем PHP, для того чтобы производить сложные вычисления, используются иные технологии.
Для обмена данными между системами, наиболее принятым способом, является применение очередей.
Удобные компоненты для Битрикса
В этой статье речь пойдёт о некотором моём предложении для сообщества. Это вдвойне сомнительное предложение из-за того, что мой личный трип на битриксе уже закончился. Две недели безвылазно на учёбе плюс где-то неделя в ритме "пытаюсь себя заставить" и... И вот статья. Держите. Надеюсь, кому-нибудь пригодится.
Joomla-дайджест за 2-й квартал 2022 года
Что в этом дайджесте? 1 млн уников в сутки на сайте-новостнике на Joomla, немного статистики, маркетинговых исследований, обзоры, электронная коммерция. 46 (+66) расширений Joomla, 8 ресурсов для разработки, Joomla 4 REST API и мобильные приложения, 8 статей и переводов, события из жизни Joomla-сообщества.
Встраиваем Lua в PHP через FFI
Foreign Function Interface — это перспективная альтернатива для традиционных PHP-расширений.
Сегодня мы будем разбирать FFI-библиотеку для работы с liblua5 из PHP, которая позволит исполнять скрипты на Lua из нашего приложения.
Исповедь ничтожества
Эта статья - история моей карьеры. Я не уверен, есть ли тут хоть какая-либо ценность для сообщества, но возможно кто-то узнает в какой-либо части истории себя, и, опять же, возможно какие-то моменты помогут ему проанализировать свою карьеру и не повторить моих ошибок. В общем - это история тридцатилетнего разработчика-недоучки с раздутым самомнением, который наконец осознал, что вся та исключительность, про которую ему намекали и в которую он свято верил - это точно не про него.
P.S. Извиняюсь за кликбейтный заголовок, но, мне кажется, он лучше всего описывает содержание этой статьи.
P.P.S. Очень много текста внутри.
Действительно ли генераторы помогают экономить память?
Недавно я обратил внимание на одно заблуждение, связанное с генераторами, а точнее — с тем, как они позволяют экономить память. Такое ощущение, что многие воспринимают генераторы как инструмент, который позволит им получить "большой прирост производительности" из ничего. Или за такую шляпу фокусника, в которую можно засунуть бесконечное количество данных и не тратить память в самом скрипте.
Сначала я удивился — откуда взялись такие идеи? Ведь мы много лет работали с большими объемами данных без всяких генераторов. Лучшая статья про генераторы в РНР, опубликованная ещё десять лет назад, Что генераторы могут для вас сделать Антонио Феррары тоже практически не упоминает экономию памяти. У меня и у самого всегда было чёткое ощущение, что хотя генераторы — это совершенно отличное изобретение, у которого есть множество разнообразных применений, но вот только экономии памяти среди них нет.
В итоге у меня разыгралось любопытство и я решил разобраться с этим вопросом.
Простое REST api для сайта на php хостинге
Иногда бывает необходимо развернуть не большое рест апи для своего сайта, сделанного по технологии СПА (Vue, React или др.) без использования каких-либо фреймворков, CMS или чего-то подобного, и при этом хочется воспользоваться обычным php хостингом с минимальными усилиями на внедрение и разработку. При этом там же желательно разместить и сам сайт СПА (в нашем случае на vue).
Использование php позволяет для построения ендпоинтов апи использовать даже статические php файлы, размещаемые просто в папках на хостинге, которые предоставляют результат при непосредственном обращении к ним. И хотя, видимо в своё время, такой подход послужил широкому распространению php мы рассмотрим далее более программистский подход к созданию апи, который очень похож на используемый в библиотеке Node.js Express и поэтому интуитивно понятен, и прост для освоения.
Аскеза Bitrix
Я изучаю Битрикс где-то пару недель. Зачем?.. Хотелось чего-то новенького, тут подвернулась учёба. Даром, с наставниками, с возможным трудоустройством дальше хотя бы на пару месяцев - на испытательный срок. Я ничего заранее про Битрикс не знала, ну кроме термина "Битрикс" и факта, что в каждой второй вакансии по Laravel (мой обычный фреймворк) я на хедхантере вижу строчку Б_ЭТОНАМ_ТОЖЕНАДО.
Ниже попробую описать, чем Битрикс труден при выраженном любопытстве. Ну и, опять же, пару опций намечу, как это вот всё лечить. Вдруг разработчики Битрикса статью увидят? Они симфонисты. Правда, они старый код не трогают (это не точно), пишут второе ядро D7. Собственно про D7 наружный лифт на картинке.
Telegram для кодера — быстро ищем, что с кодом
Короткая записка о находке для программиста.
Иногда нужно быстренько понять, что происходит в том или ином месте кода или же почему IDE не подсказывает ошибку и в логах пусто, но все равно код не пашет.
Для этого мы вставляем всего одну строку в точку наблюдения, и она отправляет нам через ТГ сообщение о состоянии переменной, ошибке и чем-то еще. Это на порядок удобнее, чем лезть в nano, в браузер, в файл или сидеть, аки в матрице на print_r смотреть.
Строка:
file_get_contents('https://api.telegram.org/botXXX_BOTTOKEN_XXX/sendMessage?chat_id=XXX_YOUR_TG_ID_XXX&text=' . urlencode(print_r($some_var, 1) . " - " . __LINE__));
Строк можно вставлять сразу несколько и смотреть, как код живет. Много, конечно, не отправишь в одном сообщении, но очень хорошо дает понять, где процесс обрывается, что в переменной на промежуточном этапе и т.д. Пример из PHP, думаю в других языках есть что-то аналогичное.
Да, есть жуткий баг: не ставьте внутрь цикла :) иначе бесконечная отправка будет, пока процесс не убьете, и не всякий хостер дает доступ к терминалу. В крайнем случае токен новый в Телеграме сгенерируете.
Если пользуетесь Punto Switcher, то можно забиндить вставку строки по двойному нажатию какой-то клавиши и будет еще удобнее.
Обработка окон и вкладок браузера в Selenium PHP
Один из распространённых сценариев работы с веб-приложениями заключается в открывании нового окна (или вкладки) браузера после выполнения пользователем определённого действия. Многие веб-разработчики используют HTML-тэг
__blank
, приказывающий браузеру при нажатии на ссылку открыть новое окно (или вкладку, это зависит от выбранных пользователем настроек). Работа с окнами в Selenium при помощи PHP может использоваться для автоматизации взаимодействия с окнами, вкладками и даже всплывающими окнами браузера.Всплывающие окна могут иногда раздражать посетителей веб-сайта, однако зачастую у разработчика нет иного выхода, кроме как использовать их. Как Selenium различает окна и вкладки? Как можно использовать автоматизацию для беспроблемного переключения между окнами или вкладками браузера? Как реализовать работу с окнами в Selenium?
В этой статье мы подробно рассмотрим применение Selenium для автоматизации взаимодействия с браузерами, вкладками и всплывающими окнами. Для демонстрации работы с окнами в Selenium PHP мы воспользуемся PHPUnit — фреймворком юнит-тестирования для PHP.
Как происходит рендер пользовательских полей в Joomla?
Эта небольшая статья рассказывает о том, как происходит рендеринг пользовательских полей "под капотом" Joomla. Информация будет Вам полезна для создания переопределений и вёрстки своего вывода полей в Ваших новых проектах. А также упростит поиск и поддержку сайтов на Joomla, пришедших от других разработчиков.
Прагматичная разработка-3: телеграм-бот
Финальная часть разработки простого проекта про specialty-кофейни на Кипре. В первой части я рассказал про API микросервис, во второй - про фронтэнд-сайт и теперь - про телеграм-бота.
Депрекации в грядущем PHP 8.2, о которых вам следует знать
Если вы не читали мою предыдущую статью о нововведениях в php 8.2, вы можете найти ее здесь.
Команда PHP не перестает добавлять новые фичи и исправления с каждым релизом. Но одними фичами и исправлениями дело не обходится. Иногда команде приходится принимать трудное решение отказаться от чего-либо, чтобы стандартизировать язык. Мы называем это депрекацией (deprecation), а про таковые фичи иногда говорим, что они устарели. И PHP 8.2 не станет исключением. В нем есть несколько важных депрекаций.
Прагматичная разработка
Недавно выдалось свободное время и я сделал простой проект про specialty-кофейни на Кипре: сайт и телеграм-бот по всем канонам "большой" разработки. Люблю хороший кофе 😊
Делюсь своим процессом разработки и рекомендациями как сделать всё задуманное без потери времени.
Вклад авторов
-
pronskiy 10649.4 -
SamDark 1466.8 -
AloneCoder 987.8 -
youROCK 823.0 -
AntonShevchuk 815.0 -
spasibo_kep 731.0 -
AlexLeonov 620.0 -
zapimir 559.0 -
alexzfort 558.0 -
olegbunin 557.0