2013-03-26 67 views
4

繼此guide來消毒我的投入,我想知道是否一個空字符串覆蓋這個?Joomla檢查空字符串與JInput

$jinput = JFactory::getApplication()->input; 
$this->name = $jinput->get('name', '', 'STRING'); 

通常沒有Joomla我會檢查一個空字符串以及。喜歡的東西:

if (!empty($_POST['name'])) 

望着JInput get方法我看到,它會檢查它是否isset

public function get($name, $default = null, $filter = 'cmd') 
{ 
    if (isset($this->data[$name])) 
    { 
     return $this->filter->clean($this->data[$name], $filter); 
    } 

    return $default; 
} 

不一樣的事情,因爲isset只會檢查空。但是,這是使用get方法的默認值。所以如果我爲這個第二個參數指定一個空字符串,我在這裏覆蓋了嗎?

$this->name = $jinput->get('name', '', 'STRING'); 

回答

5

這不是由Joomla來決定你的空字符串是否有效值。他們必須使用isset(),因爲如果他們會使用empty(),並且您返回'0',那麼您會預期這是正常的,但Joomla將返回默認值而不是該'0'

因此,他們只是使用isset()來檢查變量是否設置是完全正常的,並且由您決定接受哪些值。

如果未設置該值,並將第二個參數設置爲空字符串'',則會返回空字符串。

在您的示例中,將返回一個空字符串,這是預期的行爲。