Следуя этому руководству по дезинфекции моих материалов, мне интересно, покрыта ли пустая строка этим?
$jinput = JFactory::getApplication()->input; $this->name = $jinput->get('name', '', 'STRING');
Как правило, без Joomla я также проверял бы пустую строку. Что-то вроде:
if (!empty($_POST['name']))
Если посмотреть на метод JInput get, я вижу, что он проверяет, is is 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
будет проверять только значение null. Однако это значение по умолчанию для использования метода get. Итак, если я укажу пустую строку для второго параметра, который я здесь рассмотрел?
$this->name = $jinput->get('name', '', 'STRING');
Joomla не может решить, является ли ваша пустая строка допустимым значением или нет. Они должны использовать isset()
, потому что если они будут использовать empty()
и вы вернете '0'
что вы ожидали бы как обычно, Joomla вернет значение по умолчанию вместо '0'
.
Так что совершенно нормально, что они просто используют isset()
чтобы проверить, установлена ли переменная, и решать вам, какие значения вы принимаете.
Если значение не установлено, и вы задаете в качестве второго параметра пустую строку ''
, вы получите пустую строку.
В вашем примере будет возвращена пустая строка, ожидаемое поведение.