PHP 5.3.0 'da aynı ad alanı içindeki görünümü dosyayı dahil

2 Cevap php

Ben statik anahtar kelime için PHP5.3.0 üzerinde bir mvc framweork çeşit geliştirmeye başlamış, ama ben buradayım beri ben de ad alanları yararlanmak gerektiğini söyledi.

Yani görünümü için böyle bir şey var:

namespace view
{
    function load($filepath)
    {
        include($filepath);
    }
    function helper()
    {
        echo 'lorem ipsum';
    }
}
view\load('view.php');

Şimdi benim view.php bu gibi görünüyor diyelim:

<?= helper() ?>

Bu dahil dosya genel ad nedense becuase, çalışmıyor, bu yüzden tür amacı yendi, hangi görünümü içindeki görünümü \ yardımcısı () yazmak zorunda ediyorum.

Bunu gerçekleştirmek için nasıl bir fikrin var mı? Oldukça fazla soru başlık da dahil olmak üzere gerçekleşiyor aynı ad alanı içinde bir dosya eklemek için, budur.

Ben bu ÖZDEŞ kod senaryo için çözümler gerekmez unutmayın benim sorunu anlamak için, bu basitleştirilmiş oldu.

2 Cevap

Ben ayrıntılı olarak PHP'nin ad özelliklerini incelemek için henüz ettik itiraf etmeliyim, ama bu mümkün inanmıyorum. Eğer view.php aynı ad olduğunu beyan olmadıkça included() dosya genel ad olacaktır:

namespace view;
helper(); // works

helper ithal olarak is not possible either ile use view\helper; ithal yalnızca sınıf adları ve diğer ad alanları çalıştığını unutmayın.

EDIT: Eğer böyle bir şey yapabileceğini böylece include() bir işlev içinde arama hala dahil dosyaya geçerli scope ihraç edecek:

namespace view {
    class Template { 
        public function load($filepath) { 
            include($filepath);
        }

        function helper(){
            echo 'lorem ipsum';
        }
    }

    $a = new Template();
    $a->load('test.php');
}

view.php:

$this->helper();

Yerine "yük" yöntemi ile onları yükleme autoloading sınıfları uygulamak istiyorum. Eğer aynı ad tüm view.php dosyaları koyamazsınız neden de görmüyorum.