PHP nasıl bir sınıfa dahil bir dosyaya değişkenleri geçebilir?

3 Cevap php

Yani bir öğrenme egzersiz olarak benim kendi küçük MVC framework üzerinde çalışıyorum. Bu harika çalışıyor, ama ben bu $ olmadan benim view dosyası değişkenleri başvurmak mümkün olmak istiyorum.

Yani, örneğin ben bir görünüm nesnesi başlatır bir denetleyici nesnesi var. Kumandadan böyle görünümüne değişkenler geçmek

$this->view->foo = "bar";

Sonra görünümü nesne görüntüsü (: myView.phtml örneğin) için ilgili kodu içerir. Yani görünümü dosyasında "foo" erişmek için bunu kullanın

echo $this->foo;

Ama ne yapmak istiyorum, ve ben belirgin bir şey eksik wether bu mümkün veya bilmiyorum, ama ne yapmak istiyorum, bu gibi değişkenleri referans yok

echo $foo;

Bana tüm kaynağını gönderme olmadan, kimse bana doğru yönde işaret edebilir?

3 Cevap

Eğer görünüm içinde availble olmak görünüm nesnesi her bir değişken istiyorsanız, bir dizi görünüm nesnesinin bir özelliği için değişkenler ekleyebilir ve ardından extract() onları kullanılabilir yapmak için kullanabilirsiniz:

$this->view->variables['foo'] = 'bar';

extract($this->view->variables); // now $foo = 'bar';

I) ekstresi (büyük bir hayranı değilim, ama bu sizin için ne arıyorsanız başarmak istiyorsunuz.

Eğer html görünümü giriş ayrıştırır ve otomatik olarak bu-> foo $ için $ foo veya [foo] karşı girişlerini değiştirir bazı kod yazabilirsiniz.

Yani html görünümünde böyle bir şey koyabilirsiniz:

<p>[foo]</p>

ve sonra bazı kod görüntüle dosyayı ayrıştırmak ve $ this-> foo değerine [foo] tüm örneklerini değiştirmek var. Yani çıkış olur:

<p>I'm the foo value</p>

Yoksa, sizin gibi bir şey kullanabilirsiniz Smarty - bu sizin için yapar ve diğer birçok nedenler de kullanmak zorundadır.

Eğer çalıştı extract? Var Sen bir diziye tüm değişkenleri koymak için bir yöntem eklemek gerekecek. Tek gerçek sınırlama bu değişkenler sadece okumak yapar.