Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
11.3K subscribers
1.34K photos
20 videos
26 files
4.03K links
Все самое полезное для пхпшника в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/bca892d6

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b
Download Telegram
Возможности метода цепочки

Метод цепочки (Method chaining) — это техника программирования, которая позволяет вызывать несколько методов объекта в одном операторе. В PHP это достигается путем возврата объекта ($this) из методов, что позволяет последующие вызовы. Метод цепочки улучшает читаемость и эффективность кода. Преимущества включают краткость, читаемость, создание плавных интерфейсов и уменьшение временных переменных. Практические применения включают конфигурацию, построение запросов к базе данных и создание Fluent API. Необходимо избегать чрезмерного использования и комплексности. Использование метода цепочки может значительно улучшить читаемость и поддерживаемость кода на PHP, делая его более выразительным и понятным
🥱8👍31👾1
#дайджест #phpdevjob

Вакансии PHP разработчиков уровня Junior

▪️PHP-программист
Москва. Флюид-Лайн — изготовление и поставка промышленного оборудования
Подробнее

▪️Junior - программист
Казань, SMART-SHOP — поставки электротехнической продукции и оборудования
Подробнее

Вакансии PHP разработчиков уровня Middle

▪️Web-программист
Тула. Contactgroup — продвижение и разработка сайтов
Подробнее

▪️PHP разработчик
Самара, Avenue Media — разработка цифровых продуктов
Подробнее

Вакансии PHP разработчиков уровня Senior

▪️Full Stack PHP Developer
Удаленка. (Офис в Нью-Йорке). Rx2Go — логистическая компания
Подробнее

▪️PHP-разработчик
Удаленка. (Офис в Москве). MODESTO FLOWERS — разработка ПО
Подробнее

Понравились вакансии?
❤️ — да
🤔 — нет
🥱93
Keycode Event Helper

Вспомогательный инструмент, который позволяет легко просматривать информацию о нажатиях клавиш внутри событий JavaScript.
👍2🎉1
Что делает функция «unlink»?

В PHP функция unlink() используется для удаления файла из файловой системы. Она принимает единственный параметр — путь к файлу, который вы хотите удалить. После вызова unlink() попытается удалить указанный файл из файловой системы. В случае успешного выполнения файл будет удален безвозвратно.

Код из примера проверяет, существует ли файл, и если да, то пытается удалить его с помощью unlink(). В случае успешного удаления выводится «Файл успешно удален.»; в противном случае выводится «Ошибка при удалении файла.». Если файл не существует, выводится «Файл не существует.».

#вопросы_с_собеседований
6😁3👍2
Сегодня мы рассмотрим использование буферизации вывода (Output Buffering, OB) в PHP и её нюансы. Буферизация вывода предоставляет удобные инструменты для работы с выводом данных, но может быть сложной для отладки.

Основные моменты:

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

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

Ошибка «Headers already sent»: Объясняется, как обработка вывода с помощью буферов может предотвратить ошибки с отправкой заголовков до начала вывода данных.

Неявная и явная буферизация: Объясняется, что буферизация вывода включена по умолчанию, но может быть отключена в конфигурации сервера. Также разъясняется, как работает вложенная буферизация.

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

Ограничения буфера: Объясняется, что размер буфера ограничен, и его переполнение может привести к потере управления над выводом.

Ошибки при использовании обработчиков буфера: Предостережение о том, что использование функции ob_start() внутри обработчиков буфера может вызвать ошибки.
👍3
Logstash, Manticore, Nginx и Symfony: сбор, агрегация и быстрый поиск логов

Идея централизованного мониторинга логов долгое время витала в воздухе, и автору удалось воплотить её в жизнь. Хотя информации о Logstash с Elasticsearch достаточно, настройка с Manticore представляет собой вызов, о котором не так уж много говорят. Здесь рассказывается о настройке и потенциальных подводных камнях пакета Logstash + Manticore + Nginx + Symfony.

Установка и настройка Manticore:
Установка Manticore проста. Скачайте пакет с официального веб-сайта, установите его и настройте с помощью nano /etc/manticoresearch/manticore.conf. Обеспечьте конфигурацию Manticore так, чтобы он слушал соответствующий IP-адрес для подключения с других хостов.

Подготовка логов Nginx:
Настройте Nginx для регистрации в формате JSON для удобного парсинга. Измените формат журнала в /etc/nginx/nginx.conf и обновите блок сервера, чтобы использовать новый формат. Перезапустите Nginx, чтобы начать ведение логов в указанном формате.

Подготовка логов Symfony:
Для Symfony настройте ведение журналов через Monolog Bundle. Настройте формат логов в config/packages/monolog.yaml и создайте пользовательский сервис форматирования. Обеспечьте соответствие типов данных для совместимости с Manticore и Logstash.

Настройка Logstash:
Скачайте соответствующую версию Logstash, совместимую с Manticore. Создайте файл конфигурации Logstash (dev.conf), указав входы для логов Nginx и Symfony, фильтры для обработки логов и выходы для отправки обработанных журналов в Manticore.

Запуск Logstash:
Запустите Logstash с настроенным файлом dev.conf. Устраните любые ошибки, возникающие при запуске, обеспечивая согласованность данных и устраняя любые проблемы с соединением между Logstash и Manticore.

Вся описанная настройка успешно протестирована и развернута, предоставляя возможности централизованного мониторинга журналов. Хотя существуют готовые решения, такие как Kibana и Grafana, настраиваемые решения могут быть разработаны на основе индивидуальных потребностей и предпочтений.
👍3
🤔 Сложно ли поменять технологический стек?

Выйти на тот же уровень производительности в другом стеке в том же направлении (бэкенд/фронтенд) может занять от нескольких месяцев до полугода. Конечно, у каждого это время различается, но в любом случае оно включает:

✔️ Изучение нового языка
✔️ Ознакомление с экосистемой языка
✔️ Понимание инфраструктуры (сборка, доставка и т. д.)

💬 А вы меняли стек? Сколько времени это заняло?
👍2
Создание инструмента командной строки с помощью PHP и консоли Symfony

🛠️ Здесь рассматривается, как создать простой командный инструмент в PHP с использованием пакета Symfony Console (symfony/console).

🤔 Почему Symfony Console?

🔄 Консольные приложения — универсальный способ автоматизации и взаимодействия с системами.
📦 Symfony Console предоставляет структурированную и богатую функциональность среду разработки.

⚙️ Возможности Symfony Console:

📑 Автоматическая генерация справки: Symfony Console может автоматически создавать понятную и полезную справку для ваших команд.
🎛️ Управление вводом с опциями и аргументами: Простое определение ожидаемых вводов делает команды интуитивно понятными.
🔄 Соблюдение конвенции docopt: Гарантирует согласованный и интуитивный интерфейс для описания функциональности программы.
📝 Значения по умолчанию и валидация ввода: Помогают поддерживать гибкость и предсказуемость поведения команд.
🖥️ Удобные вспомогательные функции: Улучшают взаимодействие с пользователем и оптимизируют процесс разработки.
📂 Структурированные и основанные на классах команды: Облегчают поддержку и расширение командных приложений.

🔧 Установка и создание первой команды:

💻 Установите Symfony Console через Composer.
📂 Создайте первую команду, определив класс и методы для конфигурации и выполнения действий.

Symfony Console значительно упрощает создание командных приложений в PHP, предоставляя эффективные инструменты для автоматизации процессов и управления задачами. 🌟
👍8🥱53
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🏔 Эпикфейл: карьера катится к чертям

🤦‍♂️ У всех нас случались провалы в карьере, о которых не хочется распространяться. Неловкий момент на собеседовании, провал проекта из-за глупой ошибки, конфликт с начальством — такие ситуации хочется поскорее забыть. Однако часто именно они дают нам самые ценные уроки и закаляют как профессионалов.

📝 Поделитесь своей историей карьерного провала в нашем новом опросе и расскажите, к чему он привел в итоге. Быть может, эта ошибка позволила вам пересмотреть свой путь и выбрать более подходящую профессию? А может, вы сделали правильные выводы и сейчас добились успеха?

👉 Поделиться историей
😁31
Хостинг статичных Laravel-приложений

Недавно компания Spatie выпустила новый пакет под названием laravel-export, который упаковывает ваше приложение Laravel в статический сайт, который можно хостить. Это отличное дополнение к экосистеме Laravel, поскольку это открывает целый новый способ размещения приложений Laravel.

Этот метод размещения идеально подходит для веб-сайтов, таких как:

🟠блоги
🟠портфолио
🟠посадочные страницы

Которые не зависят от запросов к серверу бэкенда, а отображают статическую информацию.

Здесь показано, как использовать laravel-export для развертывания блога на Cloudflare Pages, Netlify и Vercel.
👍4🤔3
Laravel трюки: автоматическое подключение каналов логирования

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

Далее предложен способ автоматического подключения каналов логирования через DI, включая создание интерфейса-маркера и его связывание с каналом логирования с помощью провайдера. Описано использование трейта LoggerAwareTrait и логирование данных в соответствующих классах.

Также представлен альтернативный вариант с использованием автопровязывания (Autowiring), где логгер передается в метод класса как аргумент, и определяется правило для сервис-контейнера в AppServiceProvider.
😁8👍2
😺🐙💡 Как сделать креативный профиль на GitHub

Расскажем, как представить свои навыки, опыт и пет-проекты так, чтобы на профиль обращали внимание потенциальные работодатели и единомышленники.

👉 Читать статью
👉 Зеркало
😁8👍1
Что такое Zend Engine?

Zend Engine — это механизм выполнения на языке C с открытым исходным кодом, который интерпретирует язык программирования PHP. Он был изначально разработан Анди Гутмансом и Зеевом Сураcки, когда они были студентами Технического университета Израиля.

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

Одним из важных вкладов Zend Engine в эволюцию PHP стало внедрение Zend Extension API (ZE), позволяющего разработчикам создавать собственные расширения на C или C++, чтобы расширить функциональность PHP. Эти расширения могут использоваться для интеграции PHP с внешними библиотеками, добавления новых возможностей или оптимизации производительности.

#вопросы_с_собеседований
👍21🥰1🥱1
Создание поддерживаемых PHP-приложений: чрезмерное или недостаточное проектирование

Здесь обсуждается концепция «over-engineering» (чрезмерное проектирование) и «under-engineering» (недостаточная инженерия) в контексте программирования.

В первом примере (over-engineered) показано создание класса для обработки запроса на регистрацию нового пользователя. Код включает в себя использование различных зависимостей, типизацию и применение различных паттернов и принципов проектирования. Автор утверждает, что такой код, хотя и может показаться избыточным на первый взгляд, на самом деле написан для облегчения поддержки и изменений в будущем, когда бизнес-правила и процессы станут более сложными.

Во втором примере (under-engineered) показано простое создание нового пользователя без использования отдельного класса для обработки этой задачи. Код написан прямо в контроллере и не использует никаких паттернов или принципов проектирования. Автор указывает, что такой подход может быть приемлемым для небольших проектов, но в больших и сложных приложениях он может привести к проблемам с поддержкой и изменениями в будущем.
👍6
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🍋 Подборка лучших статей «Библиотеки программиста» за январь: сохраняй в заметки, чтобы не пропустить #самыйсок

🏖️ Чек лист идеального отдыха: 5 психологических техник расслабления
👨‍💻 Особенности работы в ИТ: информация из первых рук
🎉 Python и неопытные программисты: наши лучшие статьи за 2023 год
🏖️ Синдром упущенного отпуска: почему так опасно игнорировать заслуженный отдых
😺🐙📄 Как разместить резюме на GitHub Pages
💣 Кем вы видите себя через 5 лет: как отвечать на странные и неудобные вопросы на собеседовании
🏖️ Синдром упущенного отпуска: почему так опасно игнорировать заслуженный отдых
🤖 Итоги недели в мире ИИ и обзоры новых сервисов: новые модели для генерации впечатляющих видео
🏅 Решаем 5 олимпиадных задач на Python
📈 9 главных трендов в разработке фронтенда в 2024 году
🔤 Азбука SQL в примерах. Часть 3. Обрабатываем результаты и делаем сложные запросы
🐍 Создаем игру «Виселица» на Python:
👉 Часть 1. Командная строка
👉 Часть 2. Графический интерфейс на PySimpleGUI
💰⬆️ 10 факторов, влияющих на зарплату программиста
🐻‍❄️ Быстрее Pandas в 10 раз: Polars — высокопроизводительная библиотека для анализа больших данных на Python
👨‍💻🧩 Психология и ИТ: 17 личностных качеств, необходимых для успешной карьеры
🏃 Самоучитель по Go для начинающих:
👉 Часть 5. Условные конструкции if-else и switch-case. Цикл for. Вложенные и бесконечные циклы
👉 Часть 6. Функции и аргументы. Области видимости. Рекурсия. Defer
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
2
«Как я сделал невозможным написание спагетти-кода»

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

Автор представляет проект под названием Phanalist, статический анализатор для PHP, который предназначен для расчета цикломатической сложности PHP-кода. Его мы уже упоминали.

Также объясняется, как Phanalist реализует формулу для расчета цикломатической сложности, используя структуру с именем Graph, которая содержит переменные для количества узлов, рёбер и выходных узлов. Далее предоставлены фрагменты кода, демонстрирующие, как Phanalist рассчитывает цикломатическую сложность для заданной области метода.
👍2