Düzenlemelerde PHP Nesne Referanslar

1 Cevap php

Ben tartışılması parçası haline hızlı bir soru dalış önce; Değişken bir başka değişken / nesneye bir başvuru olup olmadığını belirlemek için bir yöntem var mı? (Sadece etrafta doğru ve benim nesnelerin yinelenen versiyonlarını yapmak başvuruları geçirerek kontrol etmek istiyorum). Örneğin

$foo = 'Hello World';
$bar = &$foo;
echo (is_reference($bar) ? 'Is reference' : 'Is orginal';

Ben şimdi birkaç yıl için PHP5 kullanarak edilmiştir (kişisel kullanım için) ve ben orta nesne Orientated uygulanması konu üzerinde ters ediyorum söyleyebilirim. Ancak Model View Controller Framework kavramı benim için oldukça yeni.

Ben öğreticiler bir dizi baktı ve her şey birbirine uyuyor anlayış nasıl daha iyi almak için açık kaynak çerçeveler (özellikle CodeIgnitor) bazı baktık. Ben yapısı bu tip kullanmanın gerçek faydalarını takdir başlıyorum.

Ben aşağıdaki teknikle nesne referansı esas uygulama için alışkınım.

class Foo{
    public $var = 'Hello World!';
}
class Bar{
    public function __construct(){
        global $Foo;
        echo $Foo->var;
    }
}
$Foo = new Foo;
$Bar = new Bar;

Ben CodeIgnitor ve Yii nesnelerin Referencs geçmek görünce şaşırdı ve aşağıdaki yöntemle ulaşılabilir:

$this->load->view('argument')

Ben görebiliyorum acil avantajı çok daha az kod ve daha kullanıcı dostu. Bu çerçeveler muhtemelen optimize edilmiş gibi daha verimli Ama eğer ben merak ediyorum? Veya sadece kod daha kullanıcı dostu hale getirmek için? Ya da başka bir avantaj? Bu ilginç bir makale Do not use PHP references idi.

Bunu sormamın sebebi ben kişisel bir proje için ve öğrenme eğrisi için birlikte bir çerçeve koymak için çalışıyorum olduğunu.

UPDATE

$Baz = $Foo;
$Baz->var = 'Goodbye World!';
echo $Foo->var;

/* Ouput */
Goodbye World!

Ben bu çıktıyı vermek için beklemiyordum söylemek mahcup biraz duyuyorum. Kesinlikle şimdi işler çok daha kolay hale geliyor.

1 Cevap

& operatör referans nesneleri geçmek PHP4 yoldur, PHP5 varsayılan olarak yapar. Hala bu operatörünü kullanan kod geriye doğru uyumlu olacak ment.

Hala kullanabilirsiniz & edebilirsiniz PHP5 referans diğer veri türlerini geçer, ama bunun için ihtiyacı çok nadirdir ve bunu önlemek için önermek.