Как стать автором
Обновить
73.13

PHP *

Скриптовый язык общего назначения

Сначала показывать
Порог рейтинга
Уровень сложности

Как разминировать свой код на PHP (и не только)?

Уровень сложности Простой
Время на прочтение 10 мин
Количество просмотров 1.1K
Блог компании Конференции Олега Бунина (Онтико) Информационная безопасность *PHP *

«Мины» в исходном коде — это не только уязвимости, но и прочие дефекты безопасности, которые так или иначе ухудшают качество софта. Какими путями «минируется» ваш код и какие типы «мин» наиболее актуальные? Поговорим об этом в контексте веб-программирования и PHP.

О «минах» в коде расскажет Илья Поляков, руководитель отдела анализа кода Angara Security. Илья поделится какими инструментами разминировать код и какие уязвимости и дефекты безопасности можно найти максимально быстро и дешево.

Читать далее
Всего голосов 2: ↑1 и ↓1 0
Комментарии 2

Новости

«Давайте перепишем всё с нуля». Почему такой подход интереснее программистам, а не бизнесу

Уровень сложности Простой
Время на прочтение 11 мин
Количество просмотров 3.3K
PHP *Проектирование и рефакторинг *Управление разработкой *

Привет! Меня зовут Дмитрий Панькин, я основатель компании, которая создает сложные ИТ-продукты для клиентов: сайты маркетплейсов, B2B-порталы, личные кабинеты, приложения, кастомные CRM- и ERP-системы.

Очень частый запрос от наших заказчиков — переписать существующую в их компании ИТ-систему, потому что она устарела. В этом случае есть два пути: написать ее с нуля или модернизировать то, что есть. Обычно программисты советуют выкинуть весь старый код и написать всё по-новому, но это может стать критической ошибкой для бизнеса.

В этой статье я расскажу, почему чаще всего не стоит строить ИТ-систему с нуля и лучше поэтапно модернизировать то, что есть. А также объясню, из-за чего большинство разработчиков будут доказывать вам обратное 😈

Надеюсь, мой гайд поможет менеджерам и руководителям компаний понять, что делать с проектом, который нужно обновить.

Читать далее
Всего голосов 17: ↑12 и ↓5 +7
Комментарии 18

Компилируем быстрые консольные .exe приложения на PHP 8.1 в 2023 году, а почему бы и нет?

Уровень сложности Средний
Время на прочтение 3 мин
Количество просмотров 3.3K
Блог компании Timeweb Cloud PHP *C++ *Разработка под Windows *
Туториал
С каждым релизом PHP становится всё быстрее, а при включении JIT (Just-In-Time) компиляции, достигает почти отметок того же C.

image

У многих в своё время, наверное, было желание легкого написание консольных и оконных приложений. Ребята рунета иногда писали незаменимые приложения для решения мелких задач и делились на форумах, хотя некоторые из них и содержали костыли.

Однако времена меняются, и люди начали осознавать свои ошибки, переходя, скажем, на ООП.

Чтобы поностальгировать и продемонстрировать нового Франкенштейна, мы соберем полноценное консольное exe-приложение на PHP.
Читать дальше →
Всего голосов 33: ↑30 и ↓3 +27
Комментарии 11

Статический анализ. PHPStan

Уровень сложности Простой
Время на прочтение 4 мин
Количество просмотров 1.6K
PHP *

Цель статьи - помочь разработчикам которые много слышали про статический анализ, но пока что так и не поняли что это такое и с чем его едят.

Статический анализ

Анализ программного обеспечения, производимый без реального выполнения исследуемых программ, процесс выявления ошибок и недочетов в исходном коде программ. Список языков для которых существуют статические анализаторы кода достаточно велик - Си, Си++, C#, Java, Ada, Fortran, Perl, Ruby и т.д.  Компиляторы различных языков программирования во время своей работы так же запускают статические анализаторы (как правило усеченные версии) которые находят ошибки. Т.о. использование статичского анализа, в поисках ошибок, приравнивает (а может даже и превосходит, все зависит от используемого анализатора и стиле написания приложения) PHP к компилируемым языкам программирования.

Сообщество PHP прикладывает значительные усилия в сторону развития статического анализа, так типы mixed и never были добавлены для лучшего анализа программами статического анализа.

Необходимость статического анализа

Статический анализ позволяет найти уйму различных проблем в коде, начиная от неправильного использования конструкций языка, заканчивая опечатками.  При проведении code review позволяет сосредоточиться на просмотре реализации логики программы, а не на поиске синтаксических ошибок, опечаток, ошибок в данных, мертвый код и т.п.

Читать далее
Всего голосов 8: ↑6 и ↓2 +4
Комментарии 8

Истории

DTO в языке PHP: примеры для начинающих

Уровень сложности Простой
Время на прочтение 12 мин
Количество просмотров 5.1K
PHP *
Туториал

DISCLAIMER


Друзья, читая этот текст, вы мало того, что общаетесь со вселенским разумом, но и принимаете участие в социальном эксперименте. ChatGPT пытается рассуждать о DTO в языке PHP. Пока ему сложно, с каждым вашим комментарием, замечанием, он пытается улучшить свой ответ, получается не всегда хорошо. Мы со своей стороны его почти не редактируем. Просто просим переформулировать какие-то фрагменты, дополнить свой ответ. Скоро опубликуем статью в ВАКовском журнале об этом эксперименте. Ссылку приложим в комментариях.

DTO (Data Transfer Object) — это шаблон проектирования, который используется для передачи данных между слоями приложения. DTO представляет собой объект, который содержит данные, необходимые для выполнения операции или запроса в приложении.
Читать дальше →
Всего голосов 13: ↑5 и ↓8 -3
Комментарии 30

Проектируем реактивное — Message-Driven системы на PHP

Время на прочтение 19 мин
Количество просмотров 2.2K
Блог компании OTUS PHP *Laravel *
Перевод

Цель этой статьи — показать не только зачем, но и как мы можем создавать приложения на PHP, которые будут устойчивыми, масштабируемыми и податливыми для  изменений. Статья концентрируется на разработке  бизнес-ориентированных приложений, в которых можно четко выделить бизнес-логику, процессы и потоки работ (workflows). Это квинтэссенция моего опыта, накопленного за годы работы над бизнес-ориентированным программным обеспечением в целом и в процессе создания фреймворка для обмена сообщениями Ecotone в частности.

Читать далее
Всего голосов 10: ↑9 и ↓1 +8
Комментарии 8

Samoyed CMG — пользовательские генераторы кодовой базы

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 452
Разработка веб-сайтов *PHP *
Туториал

В прошлой статье был описан процесс установки и запуска Samoyed CMG (Content Management Generator). Основная идея — генерация кода сайта на основе настроек заданных кодом. Т.е. фактически кэширование всех настроек в коде при генерации, а не при развертывании на хостинге.


В ней упоминались генераторы для генерации кода, которые служат для расширения базового функционала сайта. В примере представлены два из них:



Рассмотрим генераторы более подробно для понимания их работы.

Читать дальше →
Всего голосов 3: ↑1 и ↓2 -1
Комментарии 0

Взаимодействие между процессами на С++ и PHP. Сокеты, семафоры и разделяемая память

Уровень сложности Средний
Время на прочтение 9 мин
Количество просмотров 3.4K
PHP *C++ *Системное программирование *
Кейс

Доброго всем дня!

Хочу рассказать о своём практическом опыте реализации взаимодействия между процессами в среде Linux в условиях, когда вычислительных ресурсов существенно не хватает. По условию, один из процессов написан на C++, второй на PHP, потому дополнительно мы рассмотрим доступность соответствующих API из PHP а также варианты действий в случае, когда для нужного API PHP-обёртка отсутствует.

Читать далее
Всего голосов 22: ↑22 и ↓0 +22
Комментарии 15

SEO для разработчика и верстальщика: основные SEO-требования к разработке сайтов

Уровень сложности Простой
Время на прочтение 8 мин
Количество просмотров 2.7K
PHP *JavaScript *Поисковая оптимизация *
Из песочницы

Подготовил подробную инструкцию, как сделать SEO-friendly сайт и учесть все основные SEO-требования на этапе разработки сайта.

Это статья очень важна, так как соблюдение SEO-требований на этапе создания нового сайта позволяет сэкономить много денег и времени на внесении дополнительных правок.

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

Посмотреть Чек-лист
Всего голосов 7: ↑2 и ↓5 -3
Комментарии 8

Samoyed CMG — установка и генерация сайта

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 862
Разработка веб-сайтов *PHP *
Туториал

В прошлой статье была описана теория CMG (Content Management Generator). Основная идея — генерация кода сайта на основе настроек заданных кодом. Т.е. фактически кэширование всех настроек в коде при генерации, а не при развертывании на хостинге.


В данной статье описан процесс установки и генерации тестового сайта. Итоговый сайт и код примера прилагается. Также сайт содержит страницу с технической информаций (картинка именно оттуда).


Читать дальше →
Всего голосов 5: ↑4 и ↓1 +3
Комментарии 0

Clean Architecture, DDD, гексагональная архитектура. Разбираем на практике blog на Symfony

Уровень сложности Средний
Время на прочтение 91 мин
Количество просмотров 12K
PHP *Анализ и проектирование систем *Symfony *
Из песочницы

Всем привет! Давайте знакомиться ;) Я Аня, и я php разработчик. Основной стек - Magento. С недавних пор начала посматривать налево на Symfony и писать свои Pet Projects на этом фреймворке.

Мне всегда нравилось писать решения которые легко бы расширялись / адаптировались под требования бизнеса (заказчика). И мне всегда хотелось сделать это более 'правильно' и красиво. Так я и познакомилась с понятиями чистой архитектурой.

Мой пост ни в коем случае не претендует на самый правильный. Но позвольте мне здесь донести свои идеи. В комментариях буду рада услышать конструктивную критику к данному посту.

Для нетерпеливых, вот прямая ссылка на гитхаб

Читать далее
Всего голосов 29: ↑26 и ↓3 +23
Комментарии 27

Простой автодеплой средствами Bitbucket Webhooks и PHP

Уровень сложности Простой
Время на прочтение 3 мин
Количество просмотров 1.7K
PHP *Nginx *Git *
Из песочницы

В этой статье я покажу, как организовать простейший автодеплой на сервере. Для автодеплоя через Bitbucket Webhooks и PHP не нужно использовать какие-то сложные решения.

Для начала можно подумать, что git pull выполняется через PHP с помощью этого куска кода:

Читать далее
Всего голосов 6: ↑4 и ↓2 +2
Комментарии 20

Yii Validator — простой и мощный

Уровень сложности Простой
Время на прочтение 14 мин
Количество просмотров 4.2K
PHP *Yii *

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

Путь валидатора в Yii3 к релизу был долог. После множества мозговых штурмов, жарких обсуждений, а также нескольких глобальных рефакторингов (были даже публичные с Валентином Удальцовым и Леонидом Корсаковым), наконец, 22 февраля 2023 года состоялся релиз пакета Yii Validator.

На мой взгляд получилась крайне удачная библиотека: с одной стороны использование на практике очень простое и интуитивно понятное, с другой — мощный функционал, который покрывает множество кейсов, и наличие нескольких точек расширения.

Читать далее
Всего голосов 26: ↑26 и ↓0 +26
Комментарии 15

Готовим версионирование API в PHP-фреймворках: разбор способов и работа с организацией кода

Уровень сложности Простой
Время на прочтение 13 мин
Количество просмотров 4.1K
Блог компании Skyeng Разработка веб-сайтов *PHP *Symfony *
Обзор

Привет! Меня зовут Олег Мифле. В Skyeng работаю над проектом Skypro. В IT я уже больше десяти лет, семь из которых пишу на PHP. За плечами десятки разных проектов: e-commerce, финтех, CRM, а недавно добавился и EdTech. Были и классические фуллстек-проекты, и проекты, где фронтенд и бэкенд «живут» отдельно и коммуницируют друг с другом по API. Боль от отсутствия версионирования я испытал на себе. Хочу поделиться, как избежать проблем, как всё структурировать и организовать.

Обсудим:

• Что такое API.

• Зачем версионировать API и нужно ли вообще.

• Какие способы версионирования существуют и как его организовать — и с точки зрения подходов, и с точки зрения кода.

• Разберёмся, когда избавляться от старой версии или как жить с легаси до конца существования проекта.

Читать далее
Всего голосов 17: ↑17 и ↓0 +17
Комментарии 9

Об универсализации кода при написании чат-ботов

Время на прочтение 8 мин
Количество просмотров 2.7K
Мессенджеры *PHP *

Размышления о создании универсального кода чат бота для различных мессенжеров

Читать далее
Всего голосов 5: ↑3 и ↓2 +1
Комментарии 10

CMS, CMF … CMG (Content management generator)

Уровень сложности Простой
Время на прочтение 27 мин
Количество просмотров 1.3K
Разработка веб-сайтов *PHP *
Recovery mode

Основная идея CMG (Content management generator) — не выполнять в Runtime то, что можно сгенерировать в виде статического PHP кода. Т.е. мы кэшируем все данные в генерируемом коде. Это происходит во всех современных фреймворках, но в данном случае это происходит не при развертывании на хостинге, а при кодогенерации. Код сайта генерируется с помощью конфига в виде кода. На мой взгляд для программиста это удобнее + больше гибкости чем при работе с конфигом.

Читать дальше →
Всего голосов 6: ↑3 и ↓3 0
Комментарии 7

HTTP MITMProxy — помощник в разработке и тестировании

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 2.3K
Тестирование IT-систем *PHP *Тестирование веб-сервисов *Тестирование мобильных приложений *
Туториал

Наверное каждый разработчик и QA-инженер, в рабочем процессе сталкивался с необходимостью подмены отправляемых/принимаемых данных. Когда эта задача касается данных, гуляющих между клиентом и сервером, особых проблем она не приносит. Запрос можно модифицировать и отправить ручками, к примеру через Postman, а для модификации ответа можно использовать инструменты вроде Burp Suite, Charles и т.д., но что делать если целевой запрос отправляется с сервера?

Читать далее
Всего голосов 1: ↑1 и ↓0 +1
Комментарии 13

Итоги третьего ежегодного опроса PHP-сообщества (и по традиции — слон)

Время на прочтение 7 мин
Количество просмотров 6.1K
Блог компании Skyeng PHP *Управление сообществом *Исследования и прогнозы в IT *

Привет! В декабре вновь прошел опрос русскоязычного PHP-сообщества. Помогали составлять его и распространять ребята, которые развивают городские и региональные PHP-комьюнити, а также руководят каналами и подкастами про PHP.

Удалось собрать 1215 ответов. Расспросили сообщество, на какой версии PHP сидят в командах, какой фреймворк выбирают для рабочих, а какой для личных проектов, многие ли посматривают на Go. И не только.

- Итоги 2021

- Итоги 2020

Читать далее
Всего голосов 43: ↑43 и ↓0 +43
Комментарии 3

Основы библиотеки cURL PHP

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 3.7K
PHP *
Туториал
Из песочницы

cURL — библиотека, используемая для отправки HTTP-запросов с различных языков программирования, включая C, PHP и другие.

В статье проведено знакомство с библиотекой, описаны основные функции и предопределённые константы. Представлены способы настройки сеанса, совершения GET- и POST-запросов, обработка исключений, проверки SSL-сертификата и аутентификации на сервере.

Читать далее
Всего голосов 15: ↑12 и ↓3 +9
Комментарии 19

Оптимизация OneToMany коллекций Doctrine

Время на прочтение 13 мин
Количество просмотров 2.6K
PHP *Программирование *Symfony *Doctrine ORM *

В этой статье будет показан пример того, как уменьшить количество запросов к базе данных до одного при работе с коллекциями сущностей иерархической структуры в контексте PHP и Doctrine ORM. Полный пример решения вы можете посмотреть в специальном репозитории. Статья основана на решении проблемы из обсуждения на StackOverflow.

Поехали!
Всего голосов 12: ↑12 и ↓0 +12
Комментарии 9

Вклад авторов

Работа

PHP программист
154 вакансии