PHP:检查变量是否为某个类的实例

20

每次我通过$_GET获取一个变量,我想要验证它确实是User类的对象。

因此:

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

有没有内置函数可以代替这个所谓的 "isUser"?

非常感谢!

5个回答

49

您可以验证某个类的任何变量:

if ($my_var instanceof classname)

然而,在您的情况下,那永远不会生效,因为 $_GET["valid_user"] 来自请求且永远不会是一个对象。

isUser() 可能是来自用户管理库的自定义函数,用于验证当前会话。如果您想替换它,需要查看它的工作方式。


1
对于其他人:请注意,classname 不是字符串 - 它是类标识符(可以使用 use 关键字导入)。 - robsch

5
在PHP语言中有一个函数可能会对您有所帮助:
bool is_a ( object $object , string $class_name )

根据文档:检查对象是否属于该类或将该类作为其父类之一。


2
你可以尝试这个方法:
if (is_object($_GET['valid_user']))
{
     // more code here
}

0

$_GET[]变量更像常量而不是变量,它们是只读的..但可以像访问任何其他$variable一样进行访问。

在您的示例中:

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

我希望它会这样读:

if (isUser($some_sanatized_variable))

除非isUser()是在做这件事情。PHP设置的“变量”不属于任何类,这说明我担心isUser()可能不知道它正在处理什么。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接