Media is too big
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Полный курс PHP для начинающих и продвинутых
Full PHP 8 Tutorial
How To Install PHP & What Are Web Servers
Basic PHP Syntax
What Are Constants & Variable Variables In PHP
PHP Data Types - Typecasting Overview & How It Works
PHP Boolean Data Type
PHP Integer Data type
PHP Float Data Type
PHP String Data Type - Heredoc & Nowdoc Syntax
PHP Null Data Type
На данный момент доступно 139 видео
👉 @php_lib
Full PHP 8 Tutorial
How To Install PHP & What Are Web Servers
Basic PHP Syntax
What Are Constants & Variable Variables In PHP
PHP Data Types - Typecasting Overview & How It Works
PHP Boolean Data Type
PHP Integer Data type
PHP Float Data Type
PHP String Data Type - Heredoc & Nowdoc Syntax
PHP Null Data Type
На данный момент доступно 139 видео
👉 @php_lib
👍6
Genealogy
Бесплатное приложение с открытым исходным кодом (семейное дерево) для записи членов семьи и их взаимоотношений, созданное на PHP (Laravel 10).
https://github.com/MGeurts/genealogy
👉 @php_lib
Бесплатное приложение с открытым исходным кодом (семейное дерево) для записи членов семьи и их взаимоотношений, созданное на PHP (Laravel 10).
https://github.com/MGeurts/genealogy
👉 @php_lib
👍5🤮2
This media is not supported in your browser
VIEW IN TELEGRAM
Совет по Laravel 💡
Один из моих любимых недокументированных советов, который я регулярно использую. Используйте "
👉 @php_lib
Один из моих любимых недокументированных советов, который я регулярно использую. Используйте "
wasRecentlyCreated", чтобы проверить, была ли модель создана или найдена в базе данных.👉 @php_lib
🔥5👍2
🛠️Использование Laravel Tinker в Chrome DevTools
Статья о том, как интегрировать Laravel Tinker с Chrome DevTools для более удобной отладки и тестирования кода прямо в браузере.
Это позволяет быстрее проверять и экспериментировать с кодом Laravel, используя привычные инструменты Chrome.
https://www.amitmerchant.com/laravel-tinker-chrome-devtools/
👉 @php_lib
Статья о том, как интегрировать Laravel Tinker с Chrome DevTools для более удобной отладки и тестирования кода прямо в браузере.
Это позволяет быстрее проверять и экспериментировать с кодом Laravel, используя привычные инструменты Chrome.
https://www.amitmerchant.com/laravel-tinker-chrome-devtools/
👉 @php_lib
👍5
Кэширование аутентифицированных пользователей в Laravel
Для ещё более высокой производительности в Laravel-приложениях с большим трафиком можно кэшировать аутентифицированных пользователей, чтобы избежать обращения к базе данных.
В этой статье я покажу, как это сделать — но это не быстрое исправление: нам нужно будет учесть, что происходит, когда пользователь обновляется или удаляется.
https://codecourse.com/articles/caching-authenticated-users-in-laravel
👉 @php_lib
Для ещё более высокой производительности в Laravel-приложениях с большим трафиком можно кэшировать аутентифицированных пользователей, чтобы избежать обращения к базе данных.
В этой статье я покажу, как это сделать — но это не быстрое исправление: нам нужно будет учесть, что происходит, когда пользователь обновляется или удаляется.
https://codecourse.com/articles/caching-authenticated-users-in-laravel
👉 @php_lib
👍2
Совет по Laravel 💡
Знаете ли вы, что... вы можете временно отключить
👉 @php_lib
Знаете ли вы, что... вы можете временно отключить
timestamps при сохранении модели?👉 @php_lib
👍4
🔥 Совет по Laravel: wherePivot.
В отношениях "многие-ко-многим" можно добавить операторы
👉 @php_lib
В отношениях "многие-ко-многим" можно добавить операторы
where в таблицу pivot, используя метод `wherePivot`.👉 @php_lib
👍6❤1
Представляем Rich Text в Laravel
Когда мы создаем формы для приложения, часто возникает необходимость в поле, где обычное текстовое поле (textarea) недостаточно. Как же поступить? Мы могли бы обработать данные на стороне сервера и рассматривать ввод как Markdown, но это требует ручной настройки и часто может быть ограничивающим. Более удачной альтернативой является использование rich text редактора, который предоставляет максимум возможностей для настройки.
https://tighten.com/insights/rich-text-laravel/
👉 @php_lib
Когда мы создаем формы для приложения, часто возникает необходимость в поле, где обычное текстовое поле (textarea) недостаточно. Как же поступить? Мы могли бы обработать данные на стороне сервера и рассматривать ввод как Markdown, но это требует ручной настройки и часто может быть ограничивающим. Более удачной альтернативой является использование rich text редактора, который предоставляет максимум возможностей для настройки.
https://tighten.com/insights/rich-text-laravel/
👉 @php_lib
👍6
История создания идеального Docker для Laravel
Казалось бы, упаковать PHP в контейнер и настроить GitHub Actions - дело пяти минут. Но как часто бывает, реальность оказалась сложнее. Это история о том, как я вернулся к разработке на PHP и решал накопившиеся проблемы с деплоем Laravel-проекта. О том, как готовил Docker-образ, несколько раз переписывал процесс деплоя, находил компромиссы там, где это было возможно, и полностью перестраивал архитектуру там, где компромиссы были неприемлемы.
https://habr.com/ru/articles/883300/
👉 @php_lib
Казалось бы, упаковать PHP в контейнер и настроить GitHub Actions - дело пяти минут. Но как часто бывает, реальность оказалась сложнее. Это история о том, как я вернулся к разработке на PHP и решал накопившиеся проблемы с деплоем Laravel-проекта. О том, как готовил Docker-образ, несколько раз переписывал процесс деплоя, находил компромиссы там, где это было возможно, и полностью перестраивал архитектуру там, где компромиссы были неприемлемы.
https://habr.com/ru/articles/883300/
👉 @php_lib
👍4😢1
Вот отсортированная база с тонной материала (постепенно пополняется):
БАЗА (4687 видео/книг):
(363 видео, 87 книги) — Python
(415 видео, 68 книги) — Frontend
(143 видео, 33 книги) — ИБ/Хакинг
(352 видео, 89 книги) — С/С++
(343 видео, 87 книги) — Java
(176 видео, 32 книги) — Git
(293 видео, 63 книги) — C#
(174 видео, 91 книги) — DevOps
(167 видео, 53 книги) — PHP
(227 видео, 83 книги) — SQL/БД
(163 видео, 29 книги) — Linux
(114 видео, 77 книги) — Сисадмин
(107 видео, 43 книги) — BA/SA
(181 видео, 32 книги) — Go
(167 видео, 43 книги) — Kotlin/Swift
(112 видео, 24 книги) — Flutter
(137 видео, 93 книги) — DS/ML
(113 видео, 82 книги) — GameDev
(183 видео, 37 книги) — Дизайн
(129 видео, 73 книги) — QA
(213 видео, 63 книги) — Rust
(121 видео, 24 книги) — 1С
(136 видео, 33 книги) — PM/HR
Скачивать ничего не нужно — все выложили в Telegram
Please open Telegram to view this post
VIEW IN TELEGRAM
💩6🤮3👎2
Оптимизация скорости работы PHP кода 🏎️
Сегодня я покажу вам несколько простых, но эффективных способов ускорить выполнение PHP-скриптов. Оптимизация кода – важная часть работы разработчика, ведь никто не любит медленные сайты. 🚀
🔥 1. Избегайте лишних запросов к БД
Частая ошибка – несколько одинаковых запросов к базе данных в одном запросе. Используйте кэширование (
🔥 2. Используйте
Функция
🔥 3. Не злоупотребляйте
Если у вас массив с десятками тысяч элементов, попробуйте
🔥 4. Подключайте файлы правильно
Разница между
🔥 5. Включите OPCache
OPCache кэширует байт-код PHP и ускоряет его выполнение в разы. Включите его в
🔥 6. Используйте
Функция
✅ Оптимизация PHP кода — это не магия, а грамотный подход к написанию скриптов. Используйте эти советы, и ваши проекты станут быстрее!
Какой из этих способов уже применяете в своих проектах? Делитесь в комментариях! 👇
👉 @php_lib
Сегодня я покажу вам несколько простых, но эффективных способов ускорить выполнение PHP-скриптов. Оптимизация кода – важная часть работы разработчика, ведь никто не любит медленные сайты. 🚀
🔥 1. Избегайте лишних запросов к БД
Частая ошибка – несколько одинаковых запросов к базе данных в одном запросе. Используйте кэширование (
Redis, Memcached), а если данные редко меняются – сохраняйте их в файл. 🔥 2. Используйте
isset() вместо array_key_exists() Функция
isset() работает быстрее, чем array_key_exists(), потому что она не только проверяет наличие ключа, но и сразу его значение.
// Медленный вариант
if (array_key_exists('key', $array)) { }
// Быстрый вариант
if (isset($array['key'])) { }
🔥 3. Не злоупотребляйте
foreach при больших объемах данных Если у вас массив с десятками тысяч элементов, попробуйте
array_map() или array_walk() – они работают быстрее за счет встроенной оптимизации в C. 🔥 4. Подключайте файлы правильно
Разница между
require, include, require_once и include_once может сильно повлиять на производительность. require_once проверяет, был ли уже подключен файл, что замедляет выполнение. Если точно знаете, что файл не дублируется – используйте require. 🔥 5. Включите OPCache
OPCache кэширует байт-код PHP и ускоряет его выполнение в разы. Включите его в
php.ini:
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.validate_timestamps=1
🔥 6. Используйте
json_encode() вместо serialize() Функция
json_encode() работает быстрее, чем serialize(), и при этом генерирует более компактные данные.
$data = ['name' => 'John', 'age' => 25];
// Медленный вариант
$serialized = serialize($data);
// Быстрый вариант
$json = json_encode($data);
✅ Оптимизация PHP кода — это не магия, а грамотный подход к написанию скриптов. Используйте эти советы, и ваши проекты станут быстрее!
Какой из этих способов уже применяете в своих проектах? Делитесь в комментариях! 👇
👉 @php_lib
🔥10❤4👍1
🔥 Как избежать проблем с
Сегодня разберём две часто используемые функции в PHP —
📌
Функция
❗ Пример подвоха:
Если переменной вообще нет в коде — тоже будет
📌
Функция
❗ Пустыми считаются:
-
-
-
-
-
-
Пример:
⚠️ Ошибка: проверка
🔥 Лучший подход?
Используйте строгие проверки:
Если проверяете массивы, то:
Вывод: не злоупотребляйте
👉 @php_lib
isset() и empty() в PHP? Сегодня разберём две часто используемые функции в PHP —
isset() и empty(), которые могут вести себя не так, как вы ожидаете. 📌
isset() Функция
isset($var) проверяет, была ли переменная установлена и не равна ли она null. ❗ Пример подвоха:
$var = null;
var_dump(isset($var)); // false
Если переменной вообще нет в коде — тоже будет
false. 📌
empty() Функция
empty($var) проверяет, считается ли переменная "пустой". ❗ Пустыми считаются:
-
"" (пустая строка)-
0 (число)-
"0" (строка с нулём)-
null-
false-
[] (пустой массив)Пример:
$var = "0";
var_dump(empty($var)); // true, хотя строка не null
⚠️ Ошибка: проверка
if (!isset($var) || empty($var)) может привести к неожиданному результату. 🔥 Лучший подход?
Используйте строгие проверки:
if ($var === null) { /* Переменная null */ }
if ($var === '') { /* Пустая строка */ }
if ($var === 0) { /* Число 0 */ }
Если проверяете массивы, то:
if (count($var) === 0) { /* Массив пуст */ }
Вывод: не злоупотребляйте
isset() и empty(), а проверяйте переменные строго! 👉 @php_lib
👍8
Оптимизация SQL-запросов в PHP: избавляемся от тормозов! 🚀
Сегодня я покажу вам, как улучшить производительность SQL-запросов в PHP и избавиться от лишней нагрузки на базу данных.
1. Используйте подготовленные запросы
Не только защита от SQL-инъекций, но и кеширование запросов внутри СУБД!
Пример с PDO:
2. Выбирайте только нужные данные
Зачем вам
3. Индексы – ваши друзья
Проверяйте, есть ли индексы на полях, которые часто используются в
4. Избегайте N+1 запроса
Вместо 100 мелких запросов – один с
❌ Плохо (100 запросов в цикле!):
✅ Хорошо (один запрос):
5. Используйте кеширование
Храните частые запросы в Redis или Memcached, чтобы снизить нагрузку на базу.
Эти советы помогут вам ускорить ваш PHP-код, снизить нагрузку на базу данных и сделать сайт более отзывчивым.
👉 @php_lib
Сегодня я покажу вам, как улучшить производительность SQL-запросов в PHP и избавиться от лишней нагрузки на базу данных.
1. Используйте подготовленные запросы
Не только защита от SQL-инъекций, но и кеширование запросов внутри СУБД!
Пример с PDO:
$stmt = $pdo->prepare("SELECT * FROM users WHERE email = :email");
$stmt->execute(['email' => $email]);
$user = $stmt->fetch();
2. Выбирайте только нужные данные
Зачем вам
SELECT *, если нужно только id и name? Выбирайте только нужные колонки!
$stmt = $pdo->query("SELECT id, name FROM users");
3. Индексы – ваши друзья
Проверяйте, есть ли индексы на полях, которые часто используются в
WHERE и JOIN. Без индексов база будет делать полный перебор строк!
CREATE INDEX idx_email ON users(email);
4. Избегайте N+1 запроса
Вместо 100 мелких запросов – один с
JOIN. ❌ Плохо (100 запросов в цикле!):
foreach ($users as $user) {
$stmt = $pdo->prepare("SELECT * FROM orders WHERE user_id = ?");
$stmt->execute([$user['id']]);
$orders[$user['id']] = $stmt->fetchAll();
}
✅ Хорошо (один запрос):
$query = "SELECT users.id, users.name, orders.id as order_id
FROM users
LEFT JOIN orders ON users.id = orders.user_id";
$stmt = $pdo->query($query);
$result = $stmt->fetchAll();
5. Используйте кеширование
Храните частые запросы в Redis или Memcached, чтобы снизить нагрузку на базу.
$cacheKey = "users_list";
$users = $redis->get($cacheKey);
if (!$users) {
$users = $pdo->query("SELECT id, name FROM users")->fetchAll();
$redis->setex($cacheKey, 3600, json_encode($users));
}
Эти советы помогут вам ускорить ваш PHP-код, снизить нагрузку на базу данных и сделать сайт более отзывчивым.
👉 @php_lib
👍8
Как бороться с «загадочными» багами в PHP? 🤔
Сегодня хочу поговорить про одну из самых неприятных проблем в программировании — «загадочные» баги. Это те ошибки, которые возникают только в продакшене, исчезают при попытке дебага и доводят до нервного тика 😬.
🔍 Почему это происходит?
- Разные окружения — локально у вас PHP 8.2, а на сервере 7.4 (и вдруг
- Необработанные ошибки — ошибки скрыты
- Состояние кэша — в OpCache или APCu залипла старая версия кода.
- Гонки потоков — скрипты выполняются параллельно и вмешиваются друг в друга.
🛠 Как с этим бороться?
1️⃣ Выключить OpCache на тестовом сервере
Это позволит быстрее проверять изменения и исключить залипание кода.
2️⃣ Настроить логирование
Включите
3️⃣ Сравнить окружения
Используйте
4️⃣ Включить трассировку ошибок
Xdebug поможет отследить стек вызовов, а Laravel Telescope покажет внутренности запроса.
5️⃣ Повторить проблему на копии продакшена
Запустите код в Docker с конфигом продакшена или создайте staging-сервер.
6️⃣ Подключить мониторинг и алерты
Инструменты типа Sentry, Bugsnag или New Relic помогут ловить ошибки раньше, чем их заметят пользователи.
👉 @php_lib
Сегодня хочу поговорить про одну из самых неприятных проблем в программировании — «загадочные» баги. Это те ошибки, которые возникают только в продакшене, исчезают при попытке дебага и доводят до нервного тика 😬.
🔍 Почему это происходит?
- Разные окружения — локально у вас PHP 8.2, а на сервере 7.4 (и вдруг
match ломает весь код). - Необработанные ошибки — ошибки скрыты
@, а логи молчат. - Состояние кэша — в OpCache или APCu залипла старая версия кода.
- Гонки потоков — скрипты выполняются параллельно и вмешиваются друг в друга.
🛠 Как с этим бороться?
1️⃣ Выключить OpCache на тестовом сервере
Это позволит быстрее проверять изменения и исключить залипание кода.
2️⃣ Настроить логирование
Включите
error_reporting(E_ALL) и убедитесь, что display_errors=Off, а log_errors=On с путём к файлу логов. 3️⃣ Сравнить окружения
Используйте
phpinfo() или php -m для проверки версий PHP и установленных модулей. 4️⃣ Включить трассировку ошибок
Xdebug поможет отследить стек вызовов, а Laravel Telescope покажет внутренности запроса.
5️⃣ Повторить проблему на копии продакшена
Запустите код в Docker с конфигом продакшена или создайте staging-сервер.
6️⃣ Подключить мониторинг и алерты
Инструменты типа Sentry, Bugsnag или New Relic помогут ловить ошибки раньше, чем их заметят пользователи.
👉 @php_lib
👍5
Сегодня покажу вам простую, но мощную технику, которая может прокачать ваш PHP-код — Value Object вместо простых типов.
Мы часто передаём параметры как
Допустим, у вас есть метод:
А теперь скажите честно — сколько раз вы ловили себя на том, что
Вот тут и приходят на помощь Value Object'ы:
Теперь ваш метод будет выглядеть так:
Что мы получаем:
- Валидность данных гарантируется на этапе создания объекта.
- Код становится самодокументируемым — не нужно читать описание, чтобы понять, что именно сюда передаётся.
- IDE и статическая проверка типа не дадут случайно передать
Да, это чуть больше кода. Но это тот случай, когда "больше" — значит надёжнее.
👉 @php_lib
Мы часто передаём параметры как
string, int, array. Всё просто и понятно. Но как только бизнес-логика усложняется — типы начинают нас подводить.Допустим, у вас есть метод:
function sendSms(string $phoneNumber, string $message): void
А теперь скажите честно — сколько раз вы ловили себя на том, что
phoneNumber передаётся в неправильном формате? Или вовсе пустым? Или из другой страны, а вы это не предусмотрели?Вот тут и приходят на помощь Value Object'ы:
final class PhoneNumber
{
public function __construct(private string $number)
{
if (!preg_match('/^\+7\d{10}$/', $number)) {
throw new InvalidArgumentException('Invalid phone number');
}
}
public function value(): string
{
return $this->number;
}
}
Теперь ваш метод будет выглядеть так:
function sendSms(PhoneNumber $phoneNumber, Message $message): void
Что мы получаем:
- Валидность данных гарантируется на этапе создания объекта.
- Код становится самодокументируемым — не нужно читать описание, чтобы понять, что именно сюда передаётся.
- IDE и статическая проверка типа не дадут случайно передать
email вместо phone.Да, это чуть больше кода. Но это тот случай, когда "больше" — значит надёжнее.
👉 @php_lib
👍17
Подборка Telegram каналов для программистов
https://xn--r1a.website/bash_srv Bash Советы
https://xn--r1a.website/win_sysadmin Системный Администратор Windows
https://xn--r1a.website/lifeproger Жизнь программиста. Авторский канал.
https://xn--r1a.website/devopslib Библиотека девопса | DevOps, SRE, Sysadmin
https://xn--r1a.website/rabota1C_rus Вакансии для программистов 1С
Системное администрирование 📌
https://xn--r1a.website/sysadmin_girl Девочка Сисадмин
https://xn--r1a.website/srv_admin_linux Админские угодья
https://xn--r1a.website/linux_srv Типичный Сисадмин
https://xn--r1a.website/linux_odmin Linux: Системный администратор
https://xn--r1a.website/devops_star DevOps Star (Звезда Девопса)
https://xn--r1a.website/i_linux Системный администратор
https://xn--r1a.website/linuxchmod Linux
https://xn--r1a.website/sys_adminos Системный Администратор
https://xn--r1a.website/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://xn--r1a.website/sysadminof Книги для админов, полезные материалы
https://xn--r1a.website/i_odmin Все для системного администратора
https://xn--r1a.website/i_odmin_book Библиотека Системного Администратора
https://xn--r1a.website/i_odmin_chat Чат системных администраторов
https://xn--r1a.website/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://xn--r1a.website/sysadminoff Новости Линукс Linux
1C разработка 📌
https://xn--r1a.website/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
https://xn--r1a.website/DevLab1C 1С:Предприятие 8
Программирование C++📌
https://xn--r1a.website/cpp_lib Библиотека C/C++ разработчика
https://xn--r1a.website/cpp_knigi Книги для программистов C/C++
https://xn--r1a.website/cpp_geek Учим C/C++ на примерах
Программирование Python 📌
https://xn--r1a.website/pythonofff Python академия. Учи Python быстро и легко🐍
https://xn--r1a.website/BookPython Библиотека Python разработчика
https://xn--r1a.website/python_real Python подборки на русском и английском
https://xn--r1a.website/python_360 Книги по Python Rus
Java разработка 📌
https://xn--r1a.website/BookJava Библиотека Java разработчика
https://xn--r1a.website/java_360 Книги по Java Rus
https://xn--r1a.website/java_geek Учим Java на примерах
GitHub Сообщество 📌
https://xn--r1a.website/Githublib Интересное из GitHub
Базы данных (Data Base) 📌
https://xn--r1a.website/database_info Все про базы данных
Мобильная разработка: iOS, Android 📌
https://xn--r1a.website/developer_mobila Мобильная разработка
https://xn--r1a.website/kotlin_lib Подборки полезного материала по Kotlin
Фронтенд разработка 📌
https://xn--r1a.website/frontend_1 Подборки для frontend разработчиков
https://xn--r1a.website/frontend_sovet Frontend советы, примеры и практика!
https://xn--r1a.website/React_lib Подборки по React js и все что с ним связано
Разработка игр 📌
https://xn--r1a.website/game_devv Все о разработке игр
Библиотеки 📌
https://xn--r1a.website/book_for_dev Книги для программистов Rus
https://xn--r1a.website/programmist_of Книги по программированию
https://xn--r1a.website/proglb Библиотека программиста
https://xn--r1a.website/bfbook Книги для программистов
https://xn--r1a.website/books_reserv Книги для программистов
БигДата, машинное обучение 📌
https://xn--r1a.website/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning
Программирование 📌
https://xn--r1a.website/bookflow Лекции, видеоуроки, доклады с IT конференций
https://xn--r1a.website/coddy_academy Полезные советы по программированию
https://xn--r1a.website/rust_lib Полезный контент по программированию на Rust
https://xn--r1a.website/golang_lib Библиотека Go (Golang) разработчика
https://xn--r1a.website/itmozg Программисты, дизайнеры, новости из мира IT
https://xn--r1a.website/php_lib Библиотека PHP программиста 👨🏼💻👩💻
https://xn--r1a.website/nodejs_lib Подборки по Node js и все что с ним связано
https://xn--r1a.website/ruby_lib Библиотека Ruby программиста
QA, тестирование 📌
https://xn--r1a.website/testlab_qa Библиотека тестировщика
Шутки программистов 📌
https://xn--r1a.website/itumor Шутки программистов
Защита, взлом, безопасность 📌
https://xn--r1a.website/thehaking Канал о кибербезопасности
https://xn--r1a.website/xakep_2 Хакер Free
Книги, статьи для дизайнеров 📌
https://xn--r1a.website/ux_web Статьи, книги для дизайнеров
Математика 📌
https://xn--r1a.website/Pomatematike Канал по математике
https://xn--r1a.website/phis_mat Обучающие видео, книги по Физике и Математике
Excel лайфхак📌
https://xn--r1a.website/Excel_lifehack
https://xn--r1a.website/tikon_1 Новости высоких технологий, науки и техники💡
https://xn--r1a.website/mir_teh Мир технологий (Technology World)
Вакансии 📌
https://xn--r1a.website/sysadmin_rabota Системный Администратор
https://xn--r1a.website/progjob Вакансии в IT
https://xn--r1a.website/bash_srv Bash Советы
https://xn--r1a.website/win_sysadmin Системный Администратор Windows
https://xn--r1a.website/lifeproger Жизнь программиста. Авторский канал.
https://xn--r1a.website/devopslib Библиотека девопса | DevOps, SRE, Sysadmin
https://xn--r1a.website/rabota1C_rus Вакансии для программистов 1С
Системное администрирование 📌
https://xn--r1a.website/sysadmin_girl Девочка Сисадмин
https://xn--r1a.website/srv_admin_linux Админские угодья
https://xn--r1a.website/linux_srv Типичный Сисадмин
https://xn--r1a.website/linux_odmin Linux: Системный администратор
https://xn--r1a.website/devops_star DevOps Star (Звезда Девопса)
https://xn--r1a.website/i_linux Системный администратор
https://xn--r1a.website/linuxchmod Linux
https://xn--r1a.website/sys_adminos Системный Администратор
https://xn--r1a.website/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://xn--r1a.website/sysadminof Книги для админов, полезные материалы
https://xn--r1a.website/i_odmin Все для системного администратора
https://xn--r1a.website/i_odmin_book Библиотека Системного Администратора
https://xn--r1a.website/i_odmin_chat Чат системных администраторов
https://xn--r1a.website/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://xn--r1a.website/sysadminoff Новости Линукс Linux
1C разработка 📌
https://xn--r1a.website/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
https://xn--r1a.website/DevLab1C 1С:Предприятие 8
Программирование C++📌
https://xn--r1a.website/cpp_lib Библиотека C/C++ разработчика
https://xn--r1a.website/cpp_knigi Книги для программистов C/C++
https://xn--r1a.website/cpp_geek Учим C/C++ на примерах
Программирование Python 📌
https://xn--r1a.website/pythonofff Python академия. Учи Python быстро и легко🐍
https://xn--r1a.website/BookPython Библиотека Python разработчика
https://xn--r1a.website/python_real Python подборки на русском и английском
https://xn--r1a.website/python_360 Книги по Python Rus
Java разработка 📌
https://xn--r1a.website/BookJava Библиотека Java разработчика
https://xn--r1a.website/java_360 Книги по Java Rus
https://xn--r1a.website/java_geek Учим Java на примерах
GitHub Сообщество 📌
https://xn--r1a.website/Githublib Интересное из GitHub
Базы данных (Data Base) 📌
https://xn--r1a.website/database_info Все про базы данных
Мобильная разработка: iOS, Android 📌
https://xn--r1a.website/developer_mobila Мобильная разработка
https://xn--r1a.website/kotlin_lib Подборки полезного материала по Kotlin
Фронтенд разработка 📌
https://xn--r1a.website/frontend_1 Подборки для frontend разработчиков
https://xn--r1a.website/frontend_sovet Frontend советы, примеры и практика!
https://xn--r1a.website/React_lib Подборки по React js и все что с ним связано
Разработка игр 📌
https://xn--r1a.website/game_devv Все о разработке игр
Библиотеки 📌
https://xn--r1a.website/book_for_dev Книги для программистов Rus
https://xn--r1a.website/programmist_of Книги по программированию
https://xn--r1a.website/proglb Библиотека программиста
https://xn--r1a.website/bfbook Книги для программистов
https://xn--r1a.website/books_reserv Книги для программистов
БигДата, машинное обучение 📌
https://xn--r1a.website/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning
Программирование 📌
https://xn--r1a.website/bookflow Лекции, видеоуроки, доклады с IT конференций
https://xn--r1a.website/coddy_academy Полезные советы по программированию
https://xn--r1a.website/rust_lib Полезный контент по программированию на Rust
https://xn--r1a.website/golang_lib Библиотека Go (Golang) разработчика
https://xn--r1a.website/itmozg Программисты, дизайнеры, новости из мира IT
https://xn--r1a.website/php_lib Библиотека PHP программиста 👨🏼💻👩💻
https://xn--r1a.website/nodejs_lib Подборки по Node js и все что с ним связано
https://xn--r1a.website/ruby_lib Библиотека Ruby программиста
QA, тестирование 📌
https://xn--r1a.website/testlab_qa Библиотека тестировщика
Шутки программистов 📌
https://xn--r1a.website/itumor Шутки программистов
Защита, взлом, безопасность 📌
https://xn--r1a.website/thehaking Канал о кибербезопасности
https://xn--r1a.website/xakep_2 Хакер Free
Книги, статьи для дизайнеров 📌
https://xn--r1a.website/ux_web Статьи, книги для дизайнеров
Математика 📌
https://xn--r1a.website/Pomatematike Канал по математике
https://xn--r1a.website/phis_mat Обучающие видео, книги по Физике и Математике
Excel лайфхак📌
https://xn--r1a.website/Excel_lifehack
https://xn--r1a.website/tikon_1 Новости высоких технологий, науки и техники💡
https://xn--r1a.website/mir_teh Мир технологий (Technology World)
Вакансии 📌
https://xn--r1a.website/sysadmin_rabota Системный Администратор
https://xn--r1a.website/progjob Вакансии в IT
Telegram
Bash Советы
🚀 Секреты и советы по Bash
🔹 Полезные трюки, хитрые однострочники и лайфхаки для работы в терминале.
🔹 Автоматизация, скрипты и оптимизация работы в Linux.
🔹 Стать мастером Bash легко – просто подпишись!
По всем вопросам @evgenycarter
🔹 Полезные трюки, хитрые однострочники и лайфхаки для работы в терминале.
🔹 Автоматизация, скрипты и оптимизация работы в Linux.
🔹 Стать мастером Bash легко – просто подпишись!
По всем вопросам @evgenycarter
❤1
Сегодня я покажу вам, как удобно работать с
На Laravel всё просто — встроенная поддержка через
Что делаю я
1. Ставим библиотеку:
2. Создаем
3. Загружаем переменные в PHP:
> Важно:
💡 Совет: не забывай добавлять
А вы как храните конфиги? Может, кто-то уже ушёл в сторону
Поделитесь в комментах 👇
👉 @php_lib
.env файлами в PHP проектах, особенно если вы используете не Laravel.На Laravel всё просто — встроенная поддержка через
vlucas/phpdotenv. Но если у вас кастомный фреймворк или "самопис", тоже можно легко организовать работу с переменными окружения.Что делаю я
1. Ставим библиотеку:
composer require vlucas/phpdotenv
2. Создаем
.env файл в корне проекта:
APP_ENV=local
DB_HOST=localhost
DB_NAME=test
3. Загружаем переменные в PHP:
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();
// теперь можно использовать $_ENV['DB_HOST'] или getenv('DB_HOST')
> Важно:
createImmutable с PHP 7.1+ — безопасный вариант, не перезаписывает уже установленные переменные окружения.💡 Совет: не забывай добавлять
.env в .gitignore и создавать .env.example с шаблоном. Это поможет команде и тебе в будущем.А вы как храните конфиги? Может, кто-то уже ушёл в сторону
symfony/dotenv или вообще в Docker secrets?Поделитесь в комментах 👇
👉 @php_lib
👍4
Сегодня покажу вам простой, но очень удобный приём, который помогает наводить порядок в больших PHP-проектах — использование кастомных коллекций вместо массивов.
Если вы когда-нибудь передавали в методы или возвращали из них массивы с объектами, то наверняка сталкивались с ситуацией, когда непонятно, что в массиве лежит. А потом кто-нибудь передал туда строку или
Я стал использовать свои классы коллекций. Простой пример:
Теперь везде, где раньше был
- типизацию (и защиту от мусора),
- автодополнение в IDE,
- методы прямо в коллекции (например,
- чище и понятнее сигнатуры методов.
Это похоже на коллекции из Laravel, но я использую это везде, даже в маленьких проектах без фреймворков. Такие объекты делают код чище, устойчивее и легче читаемым.
Попробуйте в одном из ваших проектов заменить массивы объектов на такие коллекции — и вы удивитесь, как стало лучше.
👉 @php_lib
Если вы когда-нибудь передавали в методы или возвращали из них массивы с объектами, то наверняка сталкивались с ситуацией, когда непонятно, что в массиве лежит. А потом кто-нибудь передал туда строку или
null — и привет, баги.Я стал использовать свои классы коллекций. Простой пример:
class UserCollection
{
/** @var User[] */
private array $users = [];
public function __construct(array $users = [])
{
foreach ($users as $user) {
$this->add($user);
}
}
public function add(User $user): void
{
$this->users[] = $user;
}
public function all(): array
{
return $this->users;
}
public function filterByActive(): self
{
return new self(array_filter($this->users, fn(User $u) => $u->isActive()));
}
// и так далее
}
Теперь везде, где раньше был
User[], я работаю с UserCollection. Это сразу даёт:- типизацию (и защиту от мусора),
- автодополнение в IDE,
- методы прямо в коллекции (например,
filterByActive, sortByName, first() и т.д.),- чище и понятнее сигнатуры методов.
Это похоже на коллекции из Laravel, но я использую это везде, даже в маленьких проектах без фреймворков. Такие объекты делают код чище, устойчивее и легче читаемым.
Попробуйте в одном из ваших проектов заменить массивы объектов на такие коллекции — и вы удивитесь, как стало лучше.
👉 @php_lib
👍13