PHP: проверьте, является ли переменная экземпляром определенного класса
Каждый раз, когда я получаю переменную через $_GET, я хочу проверить, что она действительно является объектом класса User.
Итак:
if (isUser($_GET['valid_user']))
{
...
}
есть ли встроенная функция для использования вместо этого так называемого "isUser"?
Спасибо большое!
Ответы
Ответ 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
}
Ответ 4
is_object, чтобы проверить, является ли это объектом и ссылкой ниже, объясняет, как проверить, какой класс
http://hr.php.net/manual/en/reflectionclass.isinstance.php
Ответ 5
$_ GET [] переменные больше констант, чем переменные, они доступны только для чтения.. но к ним обращаются, как и любой другой $variable
.
В вашем примере:
if (isUser($_GET['valid_user']))
{
...
}
Я надеюсь, что он будет читать:
if (isUser($some_sanatized_variable))
.. если isUser() - это то, что делает это. "Переменные", которые устанавливают PHP, не принадлежат ни к одному классу, что иллюстрирует мою обеспокоенность тем, что isUser() не может адекватно знать, с чем это связано.