Merhaba yaparım CakePHP kullanarak ve ben merak ediyorum siz görünümlerde değişkenlerin her yerinde isset () veya! Boş () koyar? Yoksa veri doğrulama bağlı olmalıdır? Ne önerilen çözüm olurdu?
Sana isset
ve empty
arasındaki farkları bilmek ve ihtiyaçlarını karşılayan birini kullanmak gerektiğini düşünüyorum.
Değişken bir non-empty ve non-zero değeri varsa empty
FALSE
döndürür.
Aşağıdaki değerler olarak kabul empty edilmiştir:
""
(boş dize)0
(bir tamsayı olarak 0)"0"
(bir dizge olarak 0)NULL
FALSE
array()
(boş bir dizi)var $var;
(bir değişken bildirilmiş, ancak bir sınıfta bir değeri olmayan)Öte yandan isset
dönecektir FALSE
değişkeni yok veya unset()
ile tanımsız olmuştur veya değişken {[(3 ayarlanmış olup olmadığını )]}.
Bu oldukça geniş bir soru. Eğer makul değil mi durumlar da olabilir eğer değişken her zaman mevcut olabilir ya da bekleyebilirsiniz bağlıdır. Program yapısına göre, belirli bir değişken her programda bu noktada mevcut olmalıdır, eğer, onun varlığı için kontrol edilmemelidir. Bu şekilde ne zaman bir şey vidalar kadar güzel bir uyarı alırsınız ve bir şeyler yanlış gitti biliyorum. OTOH, siz değişken bazen yok olmasını bekliyoruz, eğer, incelikle, aksi takdirde ortaya çıkacak olan hatayı yakalamak için bu dava için kontrol edilmesi gerekir.
Ayrıca, isset
ve !empty
arasındaki seçim size "ayarlanır ve null
" veya "ayarlandığında ve {[dikkate almayan bir şey içeriyor anlamına bağlıdır (3) "}]. Bu küçük ama bazen önemli bir fark bulunuyor.
Soruyu yanıtlamak için, hayır.
Eğer kontrolörün $this->set(compact('posts', 'tags', 'categories'));
gibi bir şey yaptığınızda, değil sadece değişkenler null
görünümüne gönderilen olsun. Daha önce $categories = $this->Categories->find('all', ...);
yapmıştı ve o zaman, hiçbir sonuç vermedi Yani bir $categories
sizin görünümünde mevcut olmayacaktır. Yani görünümünde, soruyu cevaplamak için, ben sadece yapın:
<?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; ?>
Boş değerleri de doğru eşit değilsiniz, bu yüzden gibi şeyler yapabilirsiniz:
<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>
Kısacası ben sadece isset()
getirilmedim değişkenlerle ilgili hataları önlemek için kullanabilirsiniz.
Ben nadiren empty()
kullanımı ve ben de diğer programlama dillerinde o olmadan gayet güzel başardı.