每當我通過$ _GET得到一個變量時,我想驗證它確實是User類的一個對象。PHP:檢查一個變量是否是某個類的實例
所以:
if (isUser($_GET['valid_user']))
{
...
}
有一個內置的功能,而不是使用這種所謂的「isUser」的?
非常感謝!
每當我通過$ _GET得到一個變量時,我想驗證它確實是User類的一個對象。PHP:檢查一個變量是否是某個類的實例
所以:
if (isUser($_GET['valid_user']))
{
...
}
有一個內置的功能,而不是使用這種所謂的「isUser」的?
非常感謝!
您可以驗證任何變量對於某一類:
if ($my_var instanceof classname)
然而,你的情況是不會有任何效果,因爲$ _GET [「valid_user」]來自請求是永遠不會成爲一個目的。
isUser()可能是一個來自對當前會話進行身份驗證的用戶管理庫的自定義函數。如果你想替換它,你需要看看它是如何工作的。檢查
is_object如果它是一個對象,下面的鏈接介紹如何檢查哪一類
有一個在PHP語言的功能,它可以幫助你:
bool is_a (object $object , string $class_name)
從documentation:檢查對象是否屬於該類別或者是否將此類作爲其父類之一
$ _GET []變量比變量更多的常量,它們是隻讀的,但碰巧像其他任何$variable
一樣被訪問。
在您的例子:
if (isUser($_GET['valid_user']))
{
...
}
我會希望它將閱讀:
if (isUser($some_sanatized_variable))
..除非isUser()是什麼這樣做。 PHP設置的「變量」不屬於任何類,這說明我擔心的是User()可能不完全知道它處理什麼。
你可以試試這個:
if (is_object($_GET['valid_user']))
{
// more code here
}
對於其他人:請注意,'classname'不是字符串 - 它是類標識符(可能與'use'關鍵字進口)。 – robsch 2016-10-13 06:42:47