2009-11-19 124 views
16

每当我通过$ _GET得到一个变量时,我想验证它确实是User类的一个对象。PHP:检查一个变量是否是某个类的实例

所以:

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

有一个内置的功能,而不是使用这种所谓的“isUser”的?

非常感谢!

回答

44

您可以验证任何变量对于某一类:

if ($my_var instanceof classname) 

然而,你的情况是不会有任何效果,因为$ _GET [“valid_user”]来自请求是永远不会成为一个目的。

isUser()可能是一个来自对当前会话进行身份验证的用户管理库的自定义函数。如果你想替换它,你需要看看它是如何工作的。检查

+1

对于其他人:请注意,'classname'不是字符串 - 它是类标识符(可能与'use'关键字进口)。 – robsch 2016-10-13 06:42:47

5

有一个在PHP语言的功能,它可以帮助你:

bool is_a (object $object , string $class_name) 

documentation检查对象是否属于该类别或者是否将此类作为其父类之一

0

$ _GET []变量比变量更多的常量,它们是只读的,但碰巧像其他任何$variable一样被访问。

在您的例子:

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

我会希望它将阅读:

if (isUser($some_sanatized_variable)) 

..除非isUser()是什么这样做。 PHP设置的“变量”不属于任何类,这说明我担心的是User()可能不完全知道它处理什么。

2

你可以试试这个:

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