Yii Database
Yii Database — это независимый от фреймворка пакет для работы с различными типами баз данных, такими как MariaDB , MSSQL , MySQL , Oracle , PostgreSQL и SQLite .
Используя пакет, вы можете выполнять общие задачи базы данных, такие как создание, чтение, обновление и удаление записей в таблице базы данных, а также выполнение необработанных запросов SQL.
Yii Database — это независимый от фреймворка пакет для работы с различными типами баз данных, такими как MariaDB , MSSQL , MySQL , Oracle , PostgreSQL и SQLite .
Используя пакет, вы можете выполнять общие задачи базы данных, такие как создание, чтение, обновление и удаление записей в таблице базы данных, а также выполнение необработанных запросов SQL.
GitHub
GitHub - yiisoft/db: Yii Database Library
Yii Database Library. Contribute to yiisoft/db development by creating an account on GitHub.
👍8😁7🔥4😢2
Каков жизненный цикл запроса в laravel?
Жизненный цикл запроса в Laravel представляет собой последовательность этапов, через которые проходит HTTP-запрос, поступающий в приложение, до того момента, когда генерируется HTTP-ответ. Этот процесс включает в себя несколько шагов:
Инициализация (Bootstrap):
Запрос поступает на веб-сервер (например, Nginx или Apache), который перенаправляет его на index.php файл в корне Laravel приложения.
index.php файл загружает автозагрузчик Composer и инициализирует приложение, вызывая файл bootstrap/app.php.
Создание объекта приложения:
В bootstrap/app.php создается объект приложения, экземпляр класса Illuminate\Foundation\Application.
Конфигурация приложения загружается, а также подключаются различные сервис-провайдеры.
Загрузка сервис-провайдеров:
Сервис-провайдеры, указанные в config/app.php, регистрируются и запускаются.
Эти провайдеры настраивают различные аспекты приложения, такие как маршрутизация, базы данных, очереди и многое другое.
Обработка Middleware:
Laravel начинает обработку глобальных middleware.
Эти middleware могут обрабатывать запросы до и после их обработки контроллерами, занимаясь такими задачами, как аутентификация, сессии и управление CORS.
Маршрутизация:
Запрос передается в маршрутизатор, который определяет, какой контроллер и метод должны обработать запрос, основываясь на URI и HTTP-методе.
Маршрутизация может быть определена в файлах routes/web.php, routes/api.php и других файлах маршрутов.
Обработка контроллером:
Маршрутизатор вызывает соответствующий метод контроллера.
Контроллер может взаимодействовать с моделями, сервисами и другими компонентами для обработки бизнес-логики запроса.
Генерация ответа:
Контроллер возвращает ответ, который может быть представлением (view), JSON-данными или другим типом ответа.
Этот ответ оборачивается в объект Illuminate\Http\Response.
Обработка завершающих Middleware:
Перед отправкой клиенту, ответ проходит через завершающие middleware (например, для управления сессиями или кешем).
Отправка ответа клиенту:
Обработанный ответ отправляется веб-серверу, который передает его обратно клиенту (например, браузеру).
Завершение запроса:
Любые завершающие операции, такие как закрытие соединений с базой данных или очистка сессий, выполняются перед окончанием жизненного цикла запроса.
#вопросы_с_собеседований
Жизненный цикл запроса в Laravel представляет собой последовательность этапов, через которые проходит HTTP-запрос, поступающий в приложение, до того момента, когда генерируется HTTP-ответ. Этот процесс включает в себя несколько шагов:
Инициализация (Bootstrap):
Запрос поступает на веб-сервер (например, Nginx или Apache), который перенаправляет его на index.php файл в корне Laravel приложения.
index.php файл загружает автозагрузчик Composer и инициализирует приложение, вызывая файл bootstrap/app.php.
Создание объекта приложения:
В bootstrap/app.php создается объект приложения, экземпляр класса Illuminate\Foundation\Application.
Конфигурация приложения загружается, а также подключаются различные сервис-провайдеры.
Загрузка сервис-провайдеров:
Сервис-провайдеры, указанные в config/app.php, регистрируются и запускаются.
Эти провайдеры настраивают различные аспекты приложения, такие как маршрутизация, базы данных, очереди и многое другое.
Обработка Middleware:
Laravel начинает обработку глобальных middleware.
Эти middleware могут обрабатывать запросы до и после их обработки контроллерами, занимаясь такими задачами, как аутентификация, сессии и управление CORS.
Маршрутизация:
Запрос передается в маршрутизатор, который определяет, какой контроллер и метод должны обработать запрос, основываясь на URI и HTTP-методе.
Маршрутизация может быть определена в файлах routes/web.php, routes/api.php и других файлах маршрутов.
Обработка контроллером:
Маршрутизатор вызывает соответствующий метод контроллера.
Контроллер может взаимодействовать с моделями, сервисами и другими компонентами для обработки бизнес-логики запроса.
Генерация ответа:
Контроллер возвращает ответ, который может быть представлением (view), JSON-данными или другим типом ответа.
Этот ответ оборачивается в объект Illuminate\Http\Response.
Обработка завершающих Middleware:
Перед отправкой клиенту, ответ проходит через завершающие middleware (например, для управления сессиями или кешем).
Отправка ответа клиенту:
Обработанный ответ отправляется веб-серверу, который передает его обратно клиенту (например, браузеру).
Завершение запроса:
Любые завершающие операции, такие как закрытие соединений с базой данных или очистка сессий, выполняются перед окончанием жизненного цикла запроса.
#вопросы_с_собеседований
🔥21❤1
Запуск одного теста, пропуск тестов и другие советы и рекомендации
Здесь рассматриваются различные способы фильтрации, пропуска и таргетирования тестов в PHP с помощью PHPUnit и PestPHP. В начале статьи рассказывается о возможности, которой поделился Нуно Мадуро, — методе ->only() в PestPHP, который позволяет запускать определенные тесты, фокусируясь на конкретных участках кода.
Здесь рассматриваются различные способы фильтрации, пропуска и таргетирования тестов в PHP с помощью PHPUnit и PestPHP. В начале статьи рассказывается о возможности, которой поделился Нуно Мадуро, — методе ->only() в PestPHP, который позволяет запускать определенные тесты, фокусируясь на конкретных участках кода.
Laravel News
Running a Single Test, Skipping Tests, and Other Tips and Tricks - Laravel News
Inspired by Pest creator Nuno Maduro's post about the ->only() method in PestPHP, I've collected tips and tricks for PHP developers to efficiently isolate, skip, and iterate on tests.
🔥2👍1
Использование Laravel драйвера centrifugo для широковещания
В современных веб-приложениях используют веб-сокеты для обновления пользовательских интерфейсов в реальном времени. При изменении данных на сервере отправляется сообщение через WebSocket для обработки клиентом. Вместо постоянного опроса сервера, соединение WebSocket обеспечивает эффективное обновление данных. Сегодня WebSocket не только альтернатива, но и необходимость для таких задач.
Laravel упрощает передачу событий через WebSocket. Используя Laravel, вы можете транслировать события с сервера на клиент, используя одинаковые имена событий и данные.
Начав интеграцию реального времени в Laravel, обратитесь к документации по широковещанию. Laravel предлагает два серверных драйвера по умолчанию: Pusher Channels и Ably. Основные провайдеры платные, и альтернативы часто зависят от протокола pusher и Laravel Echo. Существуют и другие альтернативы, хотя список их ограничен.
В современных веб-приложениях используют веб-сокеты для обновления пользовательских интерфейсов в реальном времени. При изменении данных на сервере отправляется сообщение через WebSocket для обработки клиентом. Вместо постоянного опроса сервера, соединение WebSocket обеспечивает эффективное обновление данных. Сегодня WebSocket не только альтернатива, но и необходимость для таких задач.
Laravel упрощает передачу событий через WebSocket. Используя Laravel, вы можете транслировать события с сервера на клиент, используя одинаковые имена событий и данные.
Начав интеграцию реального времени в Laravel, обратитесь к документации по широковещанию. Laravel предлагает два серверных драйвера по умолчанию: Pusher Channels и Ably. Основные провайдеры платные, и альтернативы часто зависят от протокола pusher и Laravel Echo. Существуют и другие альтернативы, хотя список их ограничен.
Хабр
Использование Laravel драйвера centrifugo для широковещания
Введение. Популярные драйверы Laravel и их проблемы В современных веб-приложениях используются веб-сокеты, которые служат для создания пользовательских интерфейсов обновляющихся в реальном времени. В...
👍6
🚩🚩🚩 Что для вас красные флаги во время интервью/собеседования? Иными словами, какие вещи могут оттолкнуть вас от работодателя?
👇Пишите в комментариях👇
#интерактив
👇Пишите в комментариях👇
#интерактив
Валидация JSON с помощью JSON Schema и PHP
JSON Schema предоставляет словарь для аннотирования и валидации JSON документов. Он определяет ожидаемую структуру, типы и ограничения данных, что обеспечивает целостность данных и уменьшает вероятность ошибок. Валидация JSON с помощью JSON Schema важна для обеспечения целостности данных, ясной документации, облегчения отладки и повышения безопасности.
PHP версии 8.3 включает функцию json_validate(), которая позволяет проверять синтаксис JSON. Важно отметить, что json_validate() проверяет только синтаксис JSON, но не его структуру.
Для полной валидации структуры данных в JSON можно использовать пакет swaggest/json-schema. Установка этого пакета выполняется через Composer. Затем можно определить JSON Schema, которая описывает ожидаемую структуру данных.
JSON Schema предоставляет словарь для аннотирования и валидации JSON документов. Он определяет ожидаемую структуру, типы и ограничения данных, что обеспечивает целостность данных и уменьшает вероятность ошибок. Валидация JSON с помощью JSON Schema важна для обеспечения целостности данных, ясной документации, облегчения отладки и повышения безопасности.
PHP версии 8.3 включает функцию json_validate(), которая позволяет проверять синтаксис JSON. Важно отметить, что json_validate() проверяет только синтаксис JSON, но не его структуру.
Для полной валидации структуры данных в JSON можно использовать пакет swaggest/json-schema. Установка этого пакета выполняется через Composer. Затем можно определить JSON Schema, которая описывает ожидаемую структуру данных.
DEV Community
Validating JSON with JSON Schema and PHP
JSON Schema provides a powerful way to validate the structure and content of JSON data.
👍2🔥2
Forwarded from Библиотека тестировщика | QA, тестирование, quality assurance, manual testing, autotesting, ручное тестирование, автотесты
🚩 Как понять, что с компанией точно что-то не так: 11 красных флагов на собеседовании
В этой статье мы расскажем о красных флагах, которые могут сигнализировать о серьезных проблемах в компании и помочь вам сделать правильный выбор.
Читать статью
В этой статье мы расскажем о красных флагах, которые могут сигнализировать о серьезных проблемах в компании и помочь вам сделать правильный выбор.
Читать статью
🤔2👍1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
💻⌛ 8 причин участвовать в хакатонах
✉️❌ Как завалить собеседование, даже не начав его: 8 ошибок в сопроводительных письмах
🦅⚡ Делаем нативное мобильное приложение с ИИ и бэкендом
🤖👨💻 Пишем Telegram-бота для подготовки к собеседованию на Frontend-разработчика
💵 ТОП-15 самых востребованных профессий в ИТ: куда все катится в 2024 году
🈺 Как перевести все ваши iOS-приложения на 20 языков за 5 минут
🏆👁️ Топовая задачка на Stack Overflow: как найти k пропущенных чисел в потоке данных
🐍🤖💬 Создаём бота-автоответчика для Telegram на ChatGPT и Aiogram 3: пошаговое руководство
🤖🎙️ S.T.A.R.K. — первый фреймворк для создания голосового ассистента
😌 5 техник для снятия стресса на работе
🐍🎓 5 задач для подготовки к собеседованию по Python
⚛️ 6 самых важных шаблонов проектирования в React
💠 Пишем свою нейросеть: пошаговое руководство
🐍🏗️ Основы архитектуры для джунов: построение масштабируемых и чистых приложений на Python
💡 Кем работать в IT, если ты гуманитарий: 10 альтернативных профессий
🎓 Продвинутый SQL: секреты профессионалов
👶 Новичок в компании: 18 советов, как быстро адаптироваться и освоить новые навыки
🛠️ Set в JavaScript: теперь с новыми суперспособностями
⚒️ 10 незаменимых плагинов для VS Code в 2024 году
🐍🕵 5 лучших Python инструментов для специалистов по кибербезопасности
📧 Отклик на вакансию по email: как сделать так, чтобы ваше письмо выделялось
🐍📦 Ваш код достоин PyPI: как правильно опубликовать Python-пакет
🏃 Самоучитель по Go для начинающих. Часть 13. Работа с датой и временем. Пакет time
👋 Slack уходит из России: чем заменить зарубежный сервис
🗣️ «Иногда решение не в изменении системы, а в изменении отношения заказчика». Интервью с системным аналитиком
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🥱2
Решение проблем с правами доступа к логам в Laravel
Основные ошибки включают:
Ошибка «доступ запрещен» (Permission Denied Error):
Причина: Недостаточные права доступа для записи в файлы журнала.
Решение: Установка правильных прав доступа для пользователя веб-сервера (например, www-data на большинстве дистрибутивов Linux) с помощью команд sudo chown -R www-data:www-data /var/www/html/storage /var/www/html/bootstrap/cache и sudo chmod -R 775 /var/www/html/storage /var/www/html/bootstrap/cache.
Ошибка «файл не найден» (File Not Found Error):
Причина: Некорректный путь к файлу журнала или удаление файла.
Решение: Проверка конфигурационного файла config/logging.php и создание нового файла журнала с правильными правами с помощью команд touch /var/www/html/storage/logs/laravel.log и sudo chown www-data:www-data /var/www/html/storage/logs/laravel.log.
Проблемы с дисковым пространством:
Причина: Логи могут занимать много места на диске.
Решение: Регулярное мониторинг использования дискового пространства и настройка автоматической ротации логов с помощью таких инструментов, как logrotate.
Подробные шаги по устранению ошибок включают проверку прав доступа, настройку конфигурации логов, мониторинг дискового пространства, проверку содержимого логов и обновление Laravel и его зависимостей.
Основные ошибки включают:
Ошибка «доступ запрещен» (Permission Denied Error):
Причина: Недостаточные права доступа для записи в файлы журнала.
Решение: Установка правильных прав доступа для пользователя веб-сервера (например, www-data на большинстве дистрибутивов Linux) с помощью команд sudo chown -R www-data:www-data /var/www/html/storage /var/www/html/bootstrap/cache и sudo chmod -R 775 /var/www/html/storage /var/www/html/bootstrap/cache.
Ошибка «файл не найден» (File Not Found Error):
Причина: Некорректный путь к файлу журнала или удаление файла.
Решение: Проверка конфигурационного файла config/logging.php и создание нового файла журнала с правильными правами с помощью команд touch /var/www/html/storage/logs/laravel.log и sudo chown www-data:www-data /var/www/html/storage/logs/laravel.log.
Проблемы с дисковым пространством:
Причина: Логи могут занимать много места на диске.
Решение: Регулярное мониторинг использования дискового пространства и настройка автоматической ротации логов с помощью таких инструментов, как logrotate.
Подробные шаги по устранению ошибок включают проверку прав доступа, настройку конфигурации логов, мониторинг дискового пространства, проверку содержимого логов и обновление Laravel и его зависимостей.
DEV Community
Resolving Log Permission Issues in Laravel
Introduction Laravel is a powerful PHP framework that simplifies many aspects of web...
🥱3👍2😁1
Библиотека для удобной работы с Telegram Bot API от Сергея Предводителева, одного из разработчиков Yii3.
Полностью поддерживается самая актуальная на текущий момент версия Telegram Bot API 7.7 от 7 июля 2024 года.
Из коробки идёт PSR-клиент, но при желании, можно использовать свой, сделав реализацию интерфейса TelegramClientInterface.
// Telegram bot authentication token
$token = '110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw';
// Dependencies
$streamFactory = new StreamFactory();
$responseFactory = new ResponseFactory();
$requestFactory = new RequestFactory();
$client = new Client($responseFactory, $streamFactory);
// API
$api = new TelegramBotApi(
new PsrTelegramClient(
$token,
$client,
$requestFactory,
$streamFactory,
),
);
Типизированные PHP-классы для всех типов и методов. Результатом вызова методов API будут соответствующие объекты. Например, в результате отправки сообщения получаем объект Message.
$message = $api->sendMessage(
chatId: 22351,
text: 'Hello, world!',
);
Update
можно создать из PSR-запроса или из JSON-строки:$update = Update::fromServerRequest($request);
$update = Update::fromJson($jsonString);
Для логирования запросов к API, результатов ответов и ошибок можно использовать любой PSR-совместимый логгер. Например, Monolog или Yii Log.
/**
* @var TelegramClientInterface $telegramClient
* @var LoggerInterface $logger
*/
$api = new TelegramBotApi(
$telegramClient,
$logger,
);
Пакет одобрен разработчиками Telegram и добавлен на сайт telegram.org.
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - vjik/telegram-bot-api: PHP library to interact with Telegram Bot API
PHP library to interact with Telegram Bot API. Contribute to vjik/telegram-bot-api development by creating an account on GitHub.
👍20🤔5🔥4👏4❤1
В PHP 8.4 появится новая оптимизация компилятора, разработанная совместно с Tideways. Эта оптимизация касается функции sprintf(), которая теперь обрабатывается более эффективно, когда форматная строка содержит только плейсхолдеры %s.
Если форматная строка содержит только плейсхолдеры %s, вызов sprintf() преобразуется в эквивалентную строковую интерполяцию. Это позволяет избежать накладных расходов на вызов функции и парсинг строки формата. Например, код:
преобразуется в:
Поддержка плейсхолдера %d: Вскоре после первой оптимизации была добавлена поддержка плейсхолдера %d. Эти два плейсхолдера ( %s и %d) охватывают более 90% форматных строк, используемых в тестах Symfony Benchmark.
Влияние на производительность: Поскольку функция sprintf() широко используется в PHP коде (например, в кодовой базе Tideways она используется 616 раз), эта оптимизация улучшит общую производительность PHP.
Легкость использования: Оптимизация происходит автоматически во время компиляции скрипта PHP и не требует дополнительных действий со стороны разработчиков. Это также позволяет использовать sprintf() для более читаемого кода без ущерба для производительности.
Если форматная строка содержит только плейсхолдеры %s, вызов sprintf() преобразуется в эквивалентную строковую интерполяцию. Это позволяет избежать накладных расходов на вызов функции и парсинг строки формата. Например, код:
private function key(string $type, int $identifier): string
{
return sprintf('last_ts_%s_%s', $type, $identifier);
}
преобразуется в:
private function key(string $type, int $identifier): string
{
return «last_ts_{$type}_{$identifier}»;
}
Поддержка плейсхолдера %d: Вскоре после первой оптимизации была добавлена поддержка плейсхолдера %d. Эти два плейсхолдера ( %s и %d) охватывают более 90% форматных строк, используемых в тестах Symfony Benchmark.
Влияние на производительность: Поскольку функция sprintf() широко используется в PHP коде (например, в кодовой базе Tideways она используется 616 раз), эта оптимизация улучшит общую производительность PHP.
Легкость использования: Оптимизация происходит автоматически во время компиляции скрипта PHP и не требует дополнительных действий со стороны разработчиков. Это также позволяет использовать sprintf() для более читаемого кода без ущерба для производительности.
🔥16👍10❤🔥1
Что такое простая фабрика?
Простая фабрика (Simple Factory) — это порождающий шаблон проектирования, который предоставляет интерфейс для создания объектов в зависимости от переданного типа или параметра. В контексте PHP, простая фабрика может быть использована для создания экземпляров классов без явного указания конкретного класса в коде.
Простая фабрика обычно содержит метод, который принимает параметр (например, строку или число), определяющий тип создаваемого объекта, и затем возвращает экземпляр соответствующего класса. Это упрощает процесс создания объектов и позволяет легко изменять создаваемый тип объекта без изменения кода, где объект используется.
#вопросы_с_собеседований
Простая фабрика (Simple Factory) — это порождающий шаблон проектирования, который предоставляет интерфейс для создания объектов в зависимости от переданного типа или параметра. В контексте PHP, простая фабрика может быть использована для создания экземпляров классов без явного указания конкретного класса в коде.
Простая фабрика обычно содержит метод, который принимает параметр (например, строку или число), определяющий тип создаваемого объекта, и затем возвращает экземпляр соответствующего класса. Это упрощает процесс создания объектов и позволяет легко изменять создаваемый тип объекта без изменения кода, где объект используется.
#вопросы_с_собеседований
👍12❤1
Разница между self::, static:: и parent:: в PHP
При работе с PHP-кодом вы можете часто сталкиваться с parent::, static:: и self::. Для начинающих разработчиков это может быть запутанным. В этой статье мы рассмотрим, что делает каждая из этих конструкций и в чем их различия.
Что такое parent::?
parent:: используется для вызова методов родительского класса. Это особенно полезно, когда вы хотите добавить новую логику в метод дочернего класса, но при этом сохранить и выполнить логику родительского класса. Вместо вызова метода напрямую, который приведет к рекурсивному вызову, parent:: позволяет вам точно указать, что нужно вызвать метод родительского класса.
Что такое self::?
self:: ссылается на текущий класс, где метод определен. Это означает, что он всегда будет использовать свойства и методы именно этого класса, даже если метод вызывается из дочернего класса. Это полезно для использования внутри класса, чтобы явно указать, что вы имеете в виду текущий класс, а не любой потенциальный подкласс.
Что такое static::?
static:: работает подобно self::, но использует механизм позднего статического связывания. Это означает, что он учитывает класс, из которого вызывается метод, а не класс, где метод определен. Это позволяет дочерним классам переопределять свойства и методы, и при этом быть уверенными, что они будут использоваться при вызове методов из этих классов.
Когда использовать self:: или static::?
Решение о том, что использовать, зависит от конкретного случая. В общем, static:: предпочтительнее, так как позволяет классам быть расширяемыми. Однако, если вы хотите явно указать, что используете методы или свойства текущего класса и предотвращаете возможность их переопределения в дочерних классах, лучше использовать self::.
При работе с PHP-кодом вы можете часто сталкиваться с parent::, static:: и self::. Для начинающих разработчиков это может быть запутанным. В этой статье мы рассмотрим, что делает каждая из этих конструкций и в чем их различия.
Что такое parent::?
parent:: используется для вызова методов родительского класса. Это особенно полезно, когда вы хотите добавить новую логику в метод дочернего класса, но при этом сохранить и выполнить логику родительского класса. Вместо вызова метода напрямую, который приведет к рекурсивному вызову, parent:: позволяет вам точно указать, что нужно вызвать метод родительского класса.
Что такое self::?
self:: ссылается на текущий класс, где метод определен. Это означает, что он всегда будет использовать свойства и методы именно этого класса, даже если метод вызывается из дочернего класса. Это полезно для использования внутри класса, чтобы явно указать, что вы имеете в виду текущий класс, а не любой потенциальный подкласс.
Что такое static::?
static:: работает подобно self::, но использует механизм позднего статического связывания. Это означает, что он учитывает класс, из которого вызывается метод, а не класс, где метод определен. Это позволяет дочерним классам переопределять свойства и методы, и при этом быть уверенными, что они будут использоваться при вызове методов из этих классов.
Когда использовать self:: или static::?
Решение о том, что использовать, зависит от конкретного случая. В общем, static:: предпочтительнее, так как позволяет классам быть расширяемыми. Однако, если вы хотите явно указать, что используете методы или свойства текущего класса и предотвращаете возможность их переопределения в дочерних классах, лучше использовать self::.
👍27🥱4
Статистика версий PHP: июль 2024 г.
Регулярный обзор используемых версий PHP на основе данных, которые клиенты отправляют на packagist.org (например, когда они запускают composer update команду).
Основные моменты, охваченные в статистике, включают:
Статистика использования версий PHP:
🔸Сравнение процентного соотношения использования различных версий PHP за несколько шестимесячных интервалов.
🔸Замечание, что версии PHP 8.* имеют более медленную скорость принятия по сравнению с версиями PHP 7.*.
Скорость принятия версий PHP:
🔸Сравнение шестимесячных показателей принятия различных версий PHP, подчеркивая, что старые версии PHP 7.* имели более высокие показатели принятия, чем последние версии PHP 8.*.
🔸Предположения о будущем показателе принятия PHP 8.4 благодаря его ожидаемым новым функциям.
Минимальные требования к версиям PHP для пакетов Composer:
🔸Анализ минимальных требуемых версий PHP для 1000 самых популярных пакетов Composer.
🔸Призыв к авторам открытого кода чаще повышать минимальные требования к версиям PHP, чтобы способствовать прогрессу экосистемы PHP.
Регулярный обзор используемых версий PHP на основе данных, которые клиенты отправляют на packagist.org (например, когда они запускают composer update команду).
Основные моменты, охваченные в статистике, включают:
Статистика использования версий PHP:
🔸Сравнение процентного соотношения использования различных версий PHP за несколько шестимесячных интервалов.
🔸Замечание, что версии PHP 8.* имеют более медленную скорость принятия по сравнению с версиями PHP 7.*.
Скорость принятия версий PHP:
🔸Сравнение шестимесячных показателей принятия различных версий PHP, подчеркивая, что старые версии PHP 7.* имели более высокие показатели принятия, чем последние версии PHP 8.*.
🔸Предположения о будущем показателе принятия PHP 8.4 благодаря его ожидаемым новым функциям.
Минимальные требования к версиям PHP для пакетов Composer:
🔸Анализ минимальных требуемых версий PHP для 1000 самых популярных пакетов Composer.
🔸Призыв к авторам открытого кода чаще повышать минимальные требования к версиям PHP, чтобы способствовать прогрессу экосистемы PHP.
❤4👍3
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Самые полезные каналы для программистов в одной подборке!
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
Азбука айтишника — здесь мы познаем азы из мира программирования
🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion
#️⃣C#
Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Библиотека разработчика игр | Gamedev, Unity, Unreal Engine
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
Азбука айтишника — здесь мы познаем азы из мира программирования
🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion
#️⃣C#
Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Библиотека разработчика игр | Gamedev, Unity, Unreal Engine
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
Как использовать «when()» в eloquent laravel
Статья объясняет, как использовать метод when в Laravel Eloquent для упрощения и улучшения читаемости условных запросов к базе данных. В процессе фильтрации данных обычно применяются условия if-else, и статья показывает, как переписать их с использованием метода when.
Статья объясняет, как использовать метод when в Laravel Eloquent для упрощения и улучшения читаемости условных запросов к базе данных. В процессе фильтрации данных обычно применяются условия if-else, и статья показывает, как переписать их с использованием метода when.
Devrohit
How To Use Eloquent When In Laravel - DevRohit
In this article, We are implementing laravel eloquent when condition. In the filter-out process, we use the if-else condition on request. Check the code below.
🥱10👾2😁1