Подтвердить что ты не робот

PHP: проверьте, является ли переменная экземпляром определенного класса

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

Итак:

if (isUser($_GET['valid_user']))
{
...
}

есть ли встроенная функция для использования вместо этого так называемого "isUser"?

Спасибо большое!

4b9b3361

Ответ 1

Вы можете проверить любую переменную для определенного класса:

if ($my_var instanceof classname)

однако в вашем случае это никогда не будет работать, поскольку $_GET [ "valid_user" ] приходит из запроса и никогда не будет объектом.

isUser(), вероятно, является настраиваемой функцией из пользовательской библиотеки управления, которая аутентифицирует текущий сеанс. Вам нужно взглянуть, как это работает, если вы хотите его заменить.

Ответ 2

В языке PHP есть функция, которая может вам помочь:

bool is_a ( object $object , string $class_name )

Из documentation: Проверяет, является ли объект этого класса или этот класс является одним из его родителей.

Ответ 3

вы можете попробовать следующее:

if (is_object($_GET['valid_user']))
{
     // more code here
}

Ответ 5

$_ GET [] переменные больше констант, чем переменные, они доступны только для чтения.. но к ним обращаются, как и любой другой $variable.

В вашем примере:

if (isUser($_GET['valid_user']))
{
...
}

Я надеюсь, что он будет читать:

if (isUser($some_sanatized_variable))

.. если isUser() - это то, что делает это. "Переменные", которые устанавливают PHP, не принадлежат ни к одному классу, что иллюстрирует мою обеспокоенность тем, что isUser() не может адекватно знать, с чем это связано.