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

时间:2009-11-19 13:27:30

标签: php

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

所以:

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

是否有一个内置函数来代替这个所谓的“isUser”?

非常感谢!

5 个答案:

答案 0 :(得分:46)

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

if ($my_var instanceof classname)

然而,在你的情况下永远不会有效,因为$ _GET [“valid_user”]来自请求,永远不会成为对象。

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

答案 1 :(得分:5)

PHP语言中有一个函数可能对您有所帮助:

bool is_a ( object $object , string $class_name )

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

答案 2 :(得分:2)

你可以试试这个:

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

答案 3 :(得分:0)

is_object检查它是否是一个对象,下面的链接解释了如何检查哪个类

http://hr.php.net/manual/en/reflectionclass.isinstance.php

答案 4 :(得分:0)

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

在你的例子中:

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

我希望希望它会读到:

if (isUser($some_sanatized_variable))

..除非isUser()正在做什么。 PHP设置的“变量”不属于任何类,这说明我担心isUser()可能无法充分了解它的处理方式。