Web Мастерская»Блог

Сообщество Web Мастеров. Тут собрано всё, чтобы написать свой первый сайт, запустить его в Интернет и поддерживать его в течении всей его работы.

PHP: Ошибка "Creation of dynamic property"

Начиная с версии PHP 8.2, появилась новая ошибка "Creation of dynamic property", которая предупреждает разработчиков о недопустимом создании динамических свойств в классах. Эта ошибка сигнализирует о переходе PHP к более строгим стандартам объектно-ориентированного программирования и подготовке к отказу от старых практик.

Что такое ошибка "Creation of dynamic property"?


Ошибка "Creation of dynamic property" возникает, когда программа пытается создать новое свойство класса во время выполнения, не объявляя его предварительно в определении класса. Ранее такое поведение разрешалось, но начиная с PHP 8.2, оно объявлено устаревшим и в будущем будет полностью запрещено.

Пример кода, вызывающего ошибку:
class ExampleClass {}
$obj = new ExampleClass();
$obj->newProperty = 'value'; // Создание динамического свойства

Почему это считается проблемой?


Ранее PHP позволял динамически создавать свойства, что приводило к следующим проблемам:
  • Низкая читаемость кода: Невозможно было сразу
...

MySQLi: Использование функции bind_param()

При разработке веб-приложений на PHP одна из важнейших задач — защита от SQL-инъекций, позволяющих злоумышленникам внедрить вредоносный код в запросы к базе данных. Одним из эффективных решений этой проблемы являются подготовленные выражения (prepared statements) в комбинации с функцией bind_param(), доступной в библиотеке MySQLi.

Эта статья объясняет, как правильно использовать функцию bind_param() для безопасной передачи данных в SQL-запросы, избавляясь от риска SQL-инъекций и улучшая производительность приложений.

Что такое bind_param()?


Функция bind_param() — это встроенный метод библиотеки MySQLi, предназначенный для связывания переменных с плейсхолдерами в подготовленных выражениях. Она позволяет надёжно передавать данные в SQL-запросы, предотвращая возможность внесения опасных команд злоумышленниками.

Принцип работы:
  1. Создать подготовленный запрос с плейсхолдерами (?).
  2. Привязать переменные к плейсхолдерам с указанием их типов.
  3. Выполнить запрос.

Как использовать bind_param()?



Шаг 1: Под...

Безопасность и производительность запросов в PHP с использованием PDO Prepared Statements

Использование PDO (PHP Data Objects) и подготовленных выражений (prepared statements) — это важный аспект разработки веб-приложений на PHP. Эти инструменты обеспечивают защиту от SQL-инъекций, повышают производительность приложений и делают код более удобным для чтения и сопровождения.

Почему важны подготовленные выражения?


Современные веб-приложения часто взаимодействуют с базами данных, отправляя запросы для получения или изменения данных. Прямая вставка переменных в SQL-запросы представляет собой серьезную угрозу безопасности, известную как SQL-инъекции. Используя подготовленные выражения, разработчики могут значительно снизить риск таких угроз.

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

Как работают подготовленные выражения?


Подготовленные выражения используют плейсхолдеры (placeholders) вместо непосредственных значений в SQL-запросах. Эти плейсхолдеры позже замещаются реальными значениями при...

PHP: Как получить расширение файла по его номеру

PHP
В PHP номер формата изображения (константы типа IMAGETYPE_*) можно преобразовать в соответствующее расширение файла с помощью массива, связывающего номера с расширениями. Приведу простой и удобный способ, как это сделать.

Пример:
// Массив, связывающий номера форматов с соответствующими расширениями
$extensions = [
    IMAGETYPE_GIF   => 'gif',
    IMAGETYPE_JPEG  => 'jpg',
    IMAGETYPE_PNG   => 'png',
    IMAGETYPE_SWF   => 'swf',
    IMAGETYPE_PSD   => 'psd',
    IMAGETYPE_BMP   => 'bmp',
    IMAGETYPE_TIFF_II => 'tif',
    IMAGETYPE_TIFF_MM => 'tif',
    IMAGETYPE_JPC   => 'jpc',
    IMAGETYPE_JP2   => 'jp2',
    IMAGETYPE_JPX   => 'jpx',
    IMAGETYPE_JB2   => 'jb2',
    IMAGETYPE_SWC   => 'swc',
    IMAGETYPE_IFF   => 'iff',
    IMAGETYPE_WBMP  => 'wbmp',
    IMAGETYPE_XBM   => 'xbm',
    IMAGETYPE_ICO   => 'ico',
    IMAGETYPE_WEBP  => 'webp'
];

// Пример использования
$imageInfo = getimagesize('image.png');
$extension =
...

PHP: Преобразование изображений GIF, JPG, JPEG и PNG в формат WEBP

WEBP — это формат изображений, разработанный компанией Google, который отличается небольшим размером файлов и качественным сохранением исходных данных. Переход на WEBP позволяет ускорить загрузку веб-страниц и сэкономить трафик. В этой статье мы рассмотрим, как с помощью PHP реализовать конвертацию изображений из популярных форматов (GIF, JPG, JPEG, PNG) в формат WEBP.



Почему стоит использовать WEBP?


Преимуществом формата WEBP является значительное уменьшение объёма изображений без существенной потери качества. Благодаря этому сайты загружаются быстрее, а мобильные пользователи экономят трафик. WEBP поддерживается большинством современных браузеров, включая Chrome, Opera, Firefox и Edge.

Требования и подготовка среды


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