Isset Will () tetik __ almak ve neden?

4 Cevap php
class a {
   function __get($property){...}
}

$obj = new a();
var_dump(isset($obj->newproperty));

Cevap hayır ama neden görünüyor?

4 Cevap

Oldukça __ get kullanarak almak daha __isset denetler çünkü.

Boş ne bir standart yoktur gibi, __ isset aramak için çok iyi bir seçenektir. Belki sınıfı null bağlamında kabul edilebilir bir değerdir. Ayrıca üye olmasaydı, o isset($myObj->item) bu durumda olduğu gibi her zaman doğru dönecekti kıracak yeni bir boş bir nesne, dönen bir sınıf olabilir.

Bu sadece değildir; yerine __ isset kullanabilirsiniz. Bu ortaya koydu here.

Varolmayan bir özellik erişmeye çalıştığınızda sihirli bir işlev __ yalnızca denir olsun. Bir özelliği var olup olmadığını denetleme onu alma gibi aynı değildir.

Eğer bir özelliği ayarlanmış olup olmadığını belirlemek için çalışıyoruz Hayır, __get tetiklenir olmamalı: Bir özellik ayarlanırsa test değerini almaya çalışırken aynı şey değildir.

isset __isset sihirli yöntemini tetikler kullanma.

Bkz: