Обновить
34.32

PHP *

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

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

Как встроить систему приглашений в свое приложение с помощью Laravel и GraphQL

Время на прочтение4 мин
Количество просмотров2.4K

Привет, Хабр! Меня зовут Екатерина Саяпина, я Product Owner личного кабинета платформы МТС Exolve. В этом посте расскажу, как встроить систему приглашений в приложение с помощью Laravel и GraphQL. Эту задачу можно выполнить не только по привычным каналам вроде email, но и через SMS API. Мы разберем процесс интеграции от создания модели на Laravel и работы с GraphQL до отправки сообщений через API Exolve. Все подробности — под катом.

Читать далее

PHP и Laravel дайджест новостей за август 2024 года

Время на прочтение7 мин
Количество просмотров3.7K

Дайджест новостей от CutCode с Сергеем Пантелеевым и Данилом Щуцким. Давайте посмотрим, что произошло в августе в мире PHP и Laravel.

Читать далее

За кулисами разработки: 5 практических советов по созданию плагина для СДО Moodle

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров1.9K

Привет! Меня зовут Андрей, я работаю в iSpring более четырёх лет — развиваю десктопные продукты. Более двух лет пишу на PHP. Летом 2023 года мы решили интегрировать Moodle с нашим конструктором курсов iSpring Suite, чтобы пользователи могли загружать курсы в систему всего за пару кликов. После двух недель изучения гайдлайнов по разработке плагина и написания прототипа мы приняли решение создать собственный плагин для Moodle.

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

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

Читать далее

Как настроить регистрацию и аутентификацию на Drupal с помощью SMS API

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров808

Подтверждение регистрации и аутентификация через SMS API — эффективный инструмент на множестве сайтов. Такая функция помогает уменьшить количество спам‑аккаунтов, улучшить взаимодействие с пользователями и предоставить ценные данные для целевых кампаний. Разберёмся, как реализовать такое подтверждение через МТС Exolve на сайтах с Drupal.

Читать далее

PHP и работа с базами данных: как выбрать и использовать ORM для максимальной производительности

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров5.7K

ORM (Object-Relational Mapping, рус. Объектно-реляционное отображение) — это технология, которая связывает базы данных с концепциями объектно-ориентированных языков программирования, создавая «виртуальную объектную базу данных». С помощью ORM упрощается процесс сохранения объектов в реляционной базе данных и их последующего извлечения, так как она автоматизирует преобразования данных между двумя различными форматами.

По своей сути, ORM обеспечивает работу с базой данных на уровне объектов, что подразумевает соответствие структуры и данных в БД объектам кода. В ходе работы с этими объектами происходят изменения как в базе данных, так и в коде. Основные принципы функционирования ORM включают следующие тезисы:

Читать далее

Немного курочим стандартный валидатор Laravel или первый опыт с фасадами и сервис провайдерами

Время на прочтение4 мин
Количество просмотров4.1K

Статья про то, как я изменил стандартное поведение нормализации ввода и решил проблемы валидации, возникшие из-за этого. В статье упоминаются слова ООП, наследование, фабрики, сервис-провайдеры и другие.

Читать далее

Подключение оплаты Тинькофф к Telegram-боту на чистом php

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров12K

Недавно добавил оплату в свой Телеграм‑бот. После некоторых изысканий выбор пал на Тинькофф (ныне Т‑банк). Сам бот работает на php без вспомогательных библиотек. Возможно, кому‑то пригодится мой опыт и код. И бот.

Читать далее

Схематично, простыми словами о внутреннем устройстве PHP (Zend Engine, OPCache, JIT)

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров18K

Данный пост нацелен на неопытных PHP-специалистов. От этой информации лучше программировать вы не станете. Ожидаемая польза:

Мне когнитивно и морально легче, когда уменьшается «магия» того, с чем работаешь. Может тебе тоже

Возможно чуть-чуть реже статьи на хабре будут тебя отпугивать

Объясню на 4 примерах — каждый лишь немного сложнее предыдущего.

Пример 1: запуск программы, написанном на компилируемом языке (Go): в полной статье

Пример 2: Запуск скрипта PHP без OPCache и JIT

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

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

Вот схематично представил всю последовательность работы PHP скрипта без включенных OPCache и JIT (каждый из них по отдельности рассмотрим в следующих двух примерах).

У нас привычный «исходный код» PHP (файл hello-world.php):

<?php echo "Hello world";

Опять идем по порядку, рассмотрим какие процессы происходят запустив команду:

php hello-world.php

Процесс №1 — Компиляция в байт-код
Сначала исходный код обрабатывается Zend Compiler — это PHP компилятор. Первый из двух основных компонентов Zend Virtual Machine.

В отличие от рассмотренного выше компилятора Go:

задача PHP компилятора — преобразовать исходный код не в машинный код, а в код-посредник - байт-код;

процесс компиляции происходит при каждом запуске программы (вместо лишь единоразового - до запуска программы, как в примере с Go)

В случае PHP этот байт-код назвали PHP OPCode.

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

Чтобы посмотреть результат работы компилятора — сам байт-код — выполним команду:

php -d opcache.opt_debug_level=0x20000 -d opcache.enable_cli=1 hello-world.php

Получим:

$_main: ; (lines=3, args=0, vars=0, tmps=1) ; (after optimizer) ; /hello-world.php:1-2 0000 EXT_STMT 0001 ECHO string("Hello World") 0002 RETURN int(1)

Вначале видим $_main: — обозначает, что следующие строки относятся к функции main. Появление такой функции в байт-коде для глобальной области видимости PHP — занятная историческая особенность, дошедшая из других языков;

Следующие 3 строки начинаются на ; — так обозначаются комментарии. Одна из целей — для дебаг-информации;

Последние 3 строки — непосредственно код нашего приложения, который будет выполняться виртуальной машиной в следующем шаге.

Процесс №2 — Выполнение байт-кода

Читать далее

Как починить пагинацию в своих расширениях для Joomla 5.1.3+. Backwards breaking changes

Время на прочтение2 мин
Количество просмотров497

Это информация о возможном сломе обратной совместимости в классе Pagination Joomla 5.1.3+. Релиз 5.1.3 был связан с закрытием уязвимостей (см. Joomla 5.1.3 and 4.4.7 Security and Bug Fix Release), в нём был изменён подход к генерации ссылок для страниц пагинации. Из‑за этого могут перестать работать ссылки страниц пагинации в сторонних компонентах Joomla. В компонентах ядра ошибки работы пагинации были исправлены в релизе 5.1.4.

Читать далее

Свой первый модуль для админки битрикс, первое субъективное впечатление

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров5.5K

Итак после первых плагинов для ВордПресс и джумла пришла пора сделать что-то похожее в Битрикс.

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

И вот так получилось, что свежие мозги прошлись по ВордПрессу, Джумла и теперь взялись за Битрикс.

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

Главное отличие отечественной CMS - оплата вперед

Итак не нужные проблемы у Битрикс начинаются уже на этапе установки, разработчики как бы говорят вам - нафига ты сюда лезешь (это наша корова и доить ее будем сами).

Имеется ввиду, что так называемая демо версия (на месяц) виснет при установке и до конца ну никак не доходит.

Мы сначала подумали, что это потому, что мы устанавливаем на локалхост или потому, что это демо версия, но оказалось впоследствие, что так и должно быть. То есть и при установке демо и при установке нового сайта в рабочем Битриксе установка зависала на разных этапах по непонятным причинам.

Читать далее

Как поднять на VDS свой веб-сервер. Пошаговое руководство для новичков

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров8.5K

Содержание статьи полностью соответствует заголовку: данный материал написан с целью помочь тем, кто никогда еще не устанавливал и не тюнинговал веб-сервер для своего корпоративного сайта или личного блога, передоверяя эту работу техническому специалисту либо используя шаред-хостинг. Автор step-by-step проведет вас через все перипетии данного действа, в результате чего, даже если подобное в новинку, вы без особых проблем (ну, я надеюсь) получите в итоге готовое и безопасное решение.

Читать далее

Проект «Статистика дрифта». Часть 2. Базовые сущности

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров942

Первая часть серии - Проект «Статистика дрифта». Часть 1. Настройка
Паблик во ВКонтакте с новыми сериями без задержек выпуска на habr - Пихта DEV

Читать далее

Генерация диаграммы «Сущность-Связь/ Entity-Relationship» с помощью Laravel

Уровень сложностиПростой
Время на прочтение1 мин
Количество просмотров2.1K

Laravel ERD (Схема сущность/связь)

Автоматическая генерация диаграмм базы данных под ваши сущности в Laravel

Читать далее

Ближайшие события

Решение задачи от Оборот.ру: Создаем прототип сборщика фруктов в саду на PHP

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров3K

Привет, Хабр! Меня зовут Ник, мне 25, и я уже несколько лет работаю в сфере разработки. Недавно я столкнулся с интересной задачей, которую хотел бы обсудить с вами. Я получил её как тестовое задание — компании Оборот.ру, которая специализируется на автоматизации процессов. Задача заключалась в том, чтобы написать прототип сборщика фруктов в саду, реализовав его в парадигме объектно-ориентированного программирования (ООП) на PHP. В этой статье я расскажу, как я подошел к её решению.

Читать далее

Основные моменты выступления Laracon в США 2024 года по Laravel 11

Уровень сложностиСредний
Время на прочтение2 мин
Количество просмотров2.5K

Основные анонсы из ключевой речи на Laracon US 2024

Ключевая речь Тейлора Отвелла на конференции Laracon US 2024 принесла в мир Laravel целый ряд волнующих обновлений. Вот основные моменты:

Го дальше

Проект «Статистика дрифта». Часть 1. Настройка

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров1.7K

Разработка PHP/VueJS пет-проекта "Статистика дрифта" в формате лайф-тайм блога.
Первая часть лфай-тайм блога написана про базовую настройку будущего приложения.

Читать далее

Книга: «Рецепты PHP. Для профессиональных разработчиков»

Время на прочтение12 мин
Количество просмотров8.5K
image Привет, Хаброжители!

Важнейшая книга на кухне разработчиков на PHP!
В ней нет ни слова о том, как разделывать фазана, зачем солить воду и сколько в минутах будет «до готовности». Лишь практическое руководство, как использовать современную версию PHP для задач, встречающихся в современной практике программистов.

В этом сборнике рецептов разработчики на PHP найдут надежные и проверенные решения распространенных задач. PHP — удивительно простой язык программирования, что объясняет, почему на нем написано более 75% веб-сайтов в Интернете. Но он также невероятно терпим к ошибкам программирования, что может привести к тиражированию сомнительного кода.
Читать дальше →

Как читать код

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров17K

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

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

Я совсем не разработчик. Как быстро изучить новый язык программирования?

Читать далее

Анатомия умного поиска в Joomla 5. Создание плагина

Время на прочтение29 мин
Количество просмотров1.4K

Исторически в ядре Joomla существовало 2 компонента поиска: просто "поиск" и "умный поиск" (smart search). Простой поиск был в составе ещё Joomla 1.x и с тех пор существенно не менялся, а начиная с Joomla 4 был исключен из состава ядра. Начиная с Joomla 2.5 в число штатных был включен компонент Умного поиска (smart search) - com_finder, главным отличием которого от простого поиска стала индексация контента. Как создать плагин для умного поиска Joomla расскажет эта статья.

Читать далее

FAQ по WooCommerce для разработчиков часть 1

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

Всем привет! В этой статье я решил собрать наиболее часто задаваемые вопросы о работе с WooCommerce для разработчиков. Это первая часть моего FAQ, где рассматриваются ключевые аспекты, которые помогут вам лучше ориентироваться в этом популярном инструменте. Давайте приступим!

Читать далее