PHP Academy

Description
@workakkk - с вопросами
Advertising
We recommend to visit

Тут вся грязь 18+
Связь - https://t.me/moderatorstroy

Last updated 4 months, 1 week ago

Предложка: @negativegrowth_bot

Реклама: @paprikamedia

Папка КБ: https://t.me/addlist/5f0hGQbvYaJlNWZi

https://knd.gov.ru/license?id=674c4491340096358bf0956d&registryType=bloggersPermission

Last updated 3 days, 6 hours ago

Фан проект, без конкретики.
Описание сайта: telegra.ph/ARBUZ-Fest-Obnovlenie-sajta-01-13
Как купить: t.me/tonarbuz/480
Чат: t.me/xrocket?start=sb_N6agBQgchvxHpQI
Чат китов (от 2000 арбузов): t.me/tonarbuz/1410
Сайт: https://tonarbuz.fun

Last updated 3 weeks, 6 days ago

1 week, 3 days ago

**Laravel под капотом — расширение стандартных возможностей фреймворка

Проблема**
FakerPHP поддерживает модификаторы valid() и unique(), но их нельзя использовать одновременно (например, fake()\->unique()\->valid()). Появилась необходимость добавить такую функциональность, не нарушая работы Laravel и не создавая сложностей при обновлении фреймворка.

Изучение механизма
Функция fake() в Laravel возвращает объект \Faker\Generator, который создаётся через фабрику и привязывается к контейнеру как синглтон. Это усложняет задачу: нельзя просто заменить объект через наследование, так как это потребует повторной реализации логики фабрики.

Решение
Автор предлагает использовать шаблон декоратора, который позволяет добавлять новые возможности к существующему объекту, не изменяя его напрямую.

🔸Создание класса-декоратора
Был создан класс FakerGenerator, принимающий базовый объект \Faker\Generator и добавляющий метод uniqueAndValid(). Этот класс также использует трейт Laravel ForwardsCalls, чтобы проксировать вызовы отсутствующих методов к оригинальному объекту.

🔸Интеграция в Laravel
Класс FakerGenerator был зарегистрирован в контейнере через метод extend() в провайдере AppServiceProvider. Это позволяет Laravel использовать новый декоратор вместо стандартного генератора при вызове fake()

Результат
Теперь вызовы fake()\->uniqueAndValid()\->randomElement() работают корректно, а все остальные методы генератора по-прежнему доступны благодаря механизму проксирования.

1 week, 3 days ago

⚡️Легкий способ получать свежие обновления и следить за трендами в разработке на вашем языке. Находите свой стек и подписывайтесь:

МАШИННОЕ ОБУЧЕНИЕ:t.me/ai_machinelearning_big_data
C++ t.me/cpluspluc
Python:t.me/pythonl
Linux:t.me/linuxacademiya
Хакинг: t.me/linuxkalii
Devops: t.me/DevOPSitsec
АНАЛИЗ Данных: t.me/data_analysis_ml
Javascript:t.me/javascriptv
C#: t.me/csharp_ci
Java:t.me/javatg
Базы данных: t.me/sqlhub
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Docker: t.me/DevopsDocker
Golang: t.me/golang_interview
React:t.me/react_tg
Rust: t.me/rust_code
ИИ: t.me/vistehno
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
Собеседования МЛ: t.me/machinelearning_interview
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc
Разработка игр: https://t.me/gamedev
Haskell: t.me/haskell_tg

💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://t.me/addlist/mzMMG3RPZhY2M2Iy

😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno

🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: https://t.me/addlist/BkskQciUW_FhNjEy

1 month ago

🎊🎊🎊 Релиз языка программирования PHP 8.4

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

Ключевые изменения в PHP 8.4:

Предложена новая реализация JIT-компилятора, построенная на базе IR Framework. Ключевое отличие в том, что старый JIT напрямую генерировал машинные инструкции на основе байткода и с использованием разных бэкендов для архитектур x86_64 и AArch64, а новый JIT использует единый для всех архитектур бэкенд и генерирует промежуточное представление (IR), которое затем дополнительно оптимизируется и преобразуется в машинные инструкции.

Добавлена поддержка прикрепления обработчиков свойств (property hook), позволяющих добавить дополнительную логику, выполняемую при изменении или доступе к свойствам объекта, реализуемую без перехвата операций чтения и записи при помощи общих функций __get и __set, и без создания дополнительных методов-обвязок. Применение обработчиков свойств даёт возможность существенно сократить объём кода и упростить переопределение поведения работы со свойствами, благодаря привязке собственного обработчика к каждому свойству.

Добавлены методы DateTime::getMicrosecond(), DateTimeImmutable::setMicrosecond($microsecond) для получения и установки времени с микросекундной точностью, а также метод DateTime::createFromTimestamp().
В PDO (PHP Data Objects), абстрактный интерфейс для работы с базами данных, добавлена возможность создания парсеров SQL и субклассов, специфичных для определённых драйверов СУБД. Добавлены новые субклассы Pdo\Dblib, Pdo\Firebird, Pdo\MySql, Pdo\Odbc и Pdo\Sqlite.
Добавлены новые функции mb_trim(), mb_ltrim(), mb_rtrim(), mb_ucfirst(), mb_lcfirst(), bcceil(), bcdivmod(), bcfloor() и bcround(), pcntl_getcpu(), pcntl_getcpuaffinity(), pcntl_getqos_class(), pcntl_setns(), pcntl_waitid(), http_get_last_response_headers(), http_clear_last_response_headers(), fpow()
Операции exit и die теперь можно вызывать в форме полноценных функций, которые можно передавать в качестве аргумента в другие функции. Ранее возможности функций exit() и die() были сильно ограничены, так как они представляли собой обвязки над ключевыми словами exit и die.
Добавлены изменения, усложняющие эксплуатацию уязвимостей, вызванных выходом за границы буфера, а также улучшающих рандомизацию имён файлов, создаваемых через функцию tempnam().
Объявлено устаревшим поведение, при котором для параметров функций с присвоенным по умолчанию значением null автоматически разрешалось присвоение значений null. Для того, чтобы подобные параметры могли принимать значения null теперь требуется явное указание префикса "?". Например, вместо "function save(Book $book = null) {}" следует указывать "function save(?Book $book = null) {}".
Объявлены устаревшими константы E_STRICT, MYSQLI_REFRESH_*, функции mysqli_ping(), mysqli_kill(), mysqli_refresh(), методы mysqli::ping(), mysqli::kill(), mysqli::refresh(), возможность использования "_" в качестве имени класса, некоторые свойства DOMDocument и DOMEntity. Запрещено переопределение констант класса GMP, для которого теперь выставлено ключевое слово "final".

Все обновления

@phpshka

3 months, 2 weeks ago

Советы по моделям в Laravel

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

*1. Избегайте проблемы N+1 запросов*
N+1 запросы возникают, когда для каждого элемента в коллекции данных выполняется отдельный запрос к базе данных, что замедляет приложение. Чтобы избежать этого, используйте eager loading для подгрузки связанных данных заранее.

*2. Предотвращение доступа к несуществующим атрибутам*
Если вы случайно попытаетесь получить доступ к несуществующему атрибуту модели, Laravel может вернуть null, что может вызвать неожиданные ошибки. Включите функцию, которая будет выбрасывать исключение при попытке доступа к несуществующему полю.

*3. Защита от молчаливого игнорирования атрибутов*
При попытке обновить модель с использованием полей, которые не указаны в списке fillable, Laravel просто проигнорирует эти данные. Включите функцию, которая будет выбрасывать исключение в таких случаях, чтобы избежать ошибок.

*4. Включение строгого режима*
Если хотите активировать сразу все перечисленные выше проверки, используйте строгий режим моделей. Он включает предотвращение ленивой загрузки, доступ к несуществующим атрибутам и молчаливое игнорирование атрибутов.

*5. Использование UUID вместо автонумерации*
Для повышения безопасности можно использовать UUID (уникальные идентификаторы) в качестве первичных ключей или для публичных идентификаторов. Это затрудняет предсказание ID и может защитить приложение от атак.

*6. Использование кастомных коллекций*
Laravel позволяет создавать собственные коллекции моделей с дополнительными методами для удобства работы с ними.

3 months, 2 weeks ago

⚡️Легкий способ получать свежие обновления и следить за трендами в разработке на вашем языке. Находите свой стек и подписывайтесь:

МАШИННОЕ ОБУЧЕНИЕ:t.me/ai_machinelearning_big_data
C++ t.me/cpluspluc
Python: t.me/pro_python_code
Хакинг: t.me/linuxkalii
Devops: t.me/devOPSitsec
АНАЛИЗ Данных: t.me/data_analysis_ml
Javascript:t.me/javascriptv
C#: t.me/csharp_ci
Java:t.me/javatg
Базы данных: t.me/sqlhub
Linux:t.me/linuxacademiya
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Docker: t.me/DevopsDocker
Golang: t.me/golang_interview
React:t.me/react_tg
Rust: t.me/rust_code
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
Собеседования МЛ: t.me/machinelearning_interview
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc

? Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://t.me/addlist/mzMMG3RPZhY2M2Iy

?ИТ-Мемы: t.me/memes_prog
??Английский: t.me/english_forprogrammers
?ИИ: t.me/vistehno

?954ГБ ОПЕНСОРС КУРСОВ: @courses
?Ит-книги бесплатно: https://t.me/addlist/BkskQciUW_FhNjEy

3 months, 3 weeks ago

CSV и PHP8.4+

Здесь обсуждаются изменения в PHP 8.4, касающиеся обработки CSV-файлов, и их влияние на разработчиков и библиотеку league/csv, которая является популярным инструментом для работы с CSV в PHP.

В новой версии PHP 8.4 будут введены новые функции, такие как асимметричная видимость и хуки для свойств, но также будут изменения в старых функциональностях, в частности, в обработке CSV.

Разработчикам рекомендуется обновить свой код, чтобы использовать пустую строку для параметра экранирования и избежать предупреждений о депрекации. В статье приводятся примеры кода с пояснениями, как это сделать.

6 months ago

Что такое «PHP Extension Community Library» (PECL), и как её использовать для расширения функциональности PHP?

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

Цель PECL заключается в предоставлении централизованного места для разработчиков, где они могут делиться и распространять PHP-расширения. Это гарантирует, что разработчики PHP могут легко находить, устанавливать и использовать расширения для расширения возможностей PHP.

Чтобы использовать PECL для расширения функциональности PHP, обычно следуют следующим шагам:

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

Поиск расширений: Просмотрите веб-сайт PECL или используйте команду pecl search, чтобы найти расширения, предоставляющие необходимую функциональность.

Установка расширений: После того как вы нашли нужное расширение, вы можете установить его с помощью команды pecl install, за которой следует имя расширения.

Включение расширения: После установки расширения вам нужно включить его в файле конфигурации PHP (php.ini). Вы можете сделать это вручную, добавив строку вроде extension=имя_расширения.so в файл php.ini, или с помощью команды phpenmod, если вы используете систему с хранилищем расширений и приложений PHP (PEAR)

Перезапуск веб-сервера: После включения расширения необходимо перезапустить веб-сервер (например, Apache или Nginx), чтобы изменения вступили в силу.

Тестирование расширения: Наконец, вы можете протестировать функциональность, предоставляемую расширением, в ваших PHP-скриптах. Вы можете использовать функции или классы расширения, как это указано в его документации.

#вопросы_с_собеседований

We recommend to visit

Тут вся грязь 18+
Связь - https://t.me/moderatorstroy

Last updated 4 months, 1 week ago

Предложка: @negativegrowth_bot

Реклама: @paprikamedia

Папка КБ: https://t.me/addlist/5f0hGQbvYaJlNWZi

https://knd.gov.ru/license?id=674c4491340096358bf0956d&registryType=bloggersPermission

Last updated 3 days, 6 hours ago

Фан проект, без конкретики.
Описание сайта: telegra.ph/ARBUZ-Fest-Obnovlenie-sajta-01-13
Как купить: t.me/tonarbuz/480
Чат: t.me/xrocket?start=sb_N6agBQgchvxHpQI
Чат китов (от 2000 арбузов): t.me/tonarbuz/1410
Сайт: https://tonarbuz.fun

Last updated 3 weeks, 6 days ago