Внимание! Дистрибутив RK-CMS распространяется исключительно через сайт rk-cms.ru. Загрузка копий со сторонних ресурсов может привести к потере данных или установке вредоносного ПО.

Меню
    300 140

    Многие разработчики наивно приводят данные к типам. При этом получают неизвестный результат и отсутствие контроля.

    К примеру, (array):

    $ab = (array)$data;

    Если $data – это строка или объект, мы получим нечто неконтролируемое.
    Мы же считаем, что должно быть соответствие, но не приравнивание. И вместо

    $ab = (array)$data;

    лучше писать контролируемо:

    if (!is_array($data)) { $data = array(); }

    Когда вы пишете (array)$data, вы говорите PHP: "Сделай из этой переменной массив, как хочешь". Но PHP не знает, что именно вам нужно. В результате:

    Если $data была строкой "hello", вы получите array("hello") – массив с одним элементом.

    Если $data была числом 123, вы получите array(123).

    Если $data был объектом, вы получите массив его свойств, но с особыми правилами (приватные свойства получают странные имена, вложенные объекты не преобразуются рекурсивно и т.д.).

    Если $data была null, получите пустой массив.

    Если $data уже была массивом, то она останется как есть.

    Вроде бы удобно – одна строчка и готово. Но проблема в том, что вы не контролируете результат. Вы думаете: "Теперь у меня массив, всё хорошо". А на самом деле внутри может быть совсем не то, что вы ожидали.

    Это приводит к скрытым ошибкам: где-то дальше по коду вы обращаетесь к элементам массива, которых нет, или их структура не та.

    Приведение типов через (array), (int) и подобные конструкции – это быстрый, но опасный способ.

    Он скрывает реальное содержимое переменной и создаёт иллюзию контроля. Гораздо надёжнее писать код, который явно проверяет тип и обрабатывает каждый случай. Да, это чуть больше строк, но зато ваш код будет понятным, предсказуемым и без сюрпризов.

    Для улучшения работы сайта и его взаимодействия с пользователями мы используем файлы cookie (узнать подробнее).

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