isset () или! empty () для всех переменных в ваших представлениях?

Привет, я использую CakePHP, и мне интересно, вы, ребята, ставите isset () или! Empty () вокруг всех ваших переменных в представлениях? Или я должен зависеть от проверки данных? Каким будет предлагаемое решение?

Я думаю, вы должны знать различия между isset и empty и использовать тот, который отвечает вашим потребностям.

empty вернет FALSE если переменная имеет непустое и ненулевое значение.

Следующие значения считаются пустыми :

  • "" (пустая строка)
  • 0 (0 как целое число)
  • "0" (0 в виде строки)
  • NULL
  • FALSE
  • array() (пустой массив)
  • var $var; (объявленная переменная, но без значения в классе)

С другой стороны, isset вернет FALSE если переменная не существует или была отменена с unset() , или переменная была установлена ​​в NULL .

Это довольно широкий вопрос. Это зависит от того, можете ли вы ожидать, что переменная всегда будет присутствовать, или если могут быть разумные случаи, когда это не так. Если, согласно вашей структуре программы, в этой точке программы всегда должна присутствовать определенная переменная, вы не должны проверять ее существование. Таким образом, вы получите хорошее предупреждение, когда что-то зажжется, и вы знаете, что что-то пошло не так. Если, OTOH, вы ожидаете, что переменная иногда отсутствует, вам нужно проверить, чтобы этот случай изящно поймал ошибку, которая в противном случае была бы результатом.

Кроме того, выбор между isset и !empty зависит от того, установлено ли значение «установлено, а не null » или «установлено и содержит то, что не считается false ». Это небольшая, но иногда важная разница.

Чтобы ответить на вопрос, нет.

  1. Если значение не может быть нулевым в модели, то я этого не делаю.
  2. Если это для ошибок и emptysets, то лучше перенаправить для добавления страниц и 404 не найденных.
  3. Когда я использую его в представлении, его обычно на высоком уровне, так что мне не нужно писать очень часто.
  4. 3 вовлекает часто вовлекает тщательный дизайн Вашей модели. SO с использованием Isset и! Empty – это предлог, чтобы не работать с этими моделями.

  5. Элементы, которые являются необязательными, по-видимому, часто также связаны с одним или несколькими отношениями, поскольку эти петли foreach более эффективны, чем проверка каждого значения.

Лично я использую isset по привычке, отрицание – это не то, что я использую много.

когда это выбор между тем или иным

когда он не установлен, он пуст <=>, когда он не пуст, он установлен

но когда он установлен, он может быть пустым … а может и не ……….

так что это differnece

Когда вы делаете что-то вроде $this->set(compact('posts', 'tags', 'categories')); от контроллера, только переменные, которые не являются null отправляются в представление. Поэтому, если вы ранее делали $categories = $this->Categories->find('all', ...); и он не дал никаких результатов, тогда в вашем представлении не будет $categories . Поэтому, чтобы ответить на ваш вопрос, по моему мнению, я просто делаю:

 <?php if (isset($categories)): ?> <ul> <?php foreach ($categories as $category): ?> <li>{output category information here}</li> <?php endforeach; ?> </ul> <?php else: ?> <p>No categories</p> <?php endif; ?> 

Пустые значения также не равны true, поэтому вы можете делать такие вещи, как:

 <dl> <dt>Title</dt> <dd><?php echo $category['Category']['title']; ?></dd> <dt>Description</dt> <dd> <?php if ($category['Category']['description']): ?> <?php echo $category['Category']['description']; ?> <?php else; ?> None <?php endif; ?> </dd> </dl> 

Короче говоря, я использую isset() чтобы избежать ошибок в отношении не заданных переменных.

Я редко использую empty() и мне это удалось отлично, даже на других языках программирования.