2013-03-26 50 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()来检查变量是否设置是完全正常的,并且由您决定接受哪些值。

如果未设置该值,并将第二个参数设置为空字符串'',则会返回空字符串。

在您的示例中,将返回一个空字符串,这是预期的行为。