isset () veya! senin görüşlerinde tüm değişkenler boş () işlevleri?

6 Cevap php

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?

6 Cevap

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.

  1. Değer modelinde boş olamaz, o zaman bilmiyorum.
  2. O hataları ve emptysets için ise, o zaman onun daha iyi sayfaları ve 404 değil founds eklemek için yönlendirmek.
  3. Ben bir görünümde kullanmak yaptığınızda, onun genellikle yüksek bir düzeyde, çok sık ya da yazmak zorunda kalmamak.
  4. # 3 model dikkatli bir tasarım içerir genellikle içerir. SO isset kullanarak! Boş bu modeller üzerinde çalışmak için değil o bahane.
  5. Bu foreach döngüleri her değeri denetimi daha etkili için isteğe bağlı olan öğeler, genellikle de çok ilişkileri için biri gibi görünüyor.

Şahsen ben isset alışkanlığı kullanmak, yadsıyan ben çok kullandığınız bir şey değildir.

bu arasında ya da bir seçim olduğunda

when it is not is set, it is empty <=> when it is not empty, it is set

Bu ayarlandığında, ancak, boş olabilir ... Bir olmayabilir ..........

bu nedenle bu differnece olduğu

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ı.