Ilk olarak, hangi çerçeve veya uygulama geliyor?

0 Cevap php

Tamam, ben PHP bir MVC çerçevesi oluşturma ve oldukça esnek olmasını istiyorum. Bu tüm ince - Ben şu anda üzerinde çalışıyorum ve işler iyi gidiyor (Yani Zend veya başka önceden mevcut çerçeve, haha ​​kullanmak istemiyorum!), Ama ben çerçeve ve uygulamayı hem yapmak istedim oldukça dinamik. Ben açıklayacağım çalışacağım:

Burada basitleştirilmiş bir dizin yapısı bulunuyor:

- index.php           (wants to use app1 or app2 depending on domain name)
- /app1               (wants to use framework 1.1)
    - /config
        - config.php  
- /app2               (wants to use framework 1.2)
    - /config
        - config.php  
- /framework_1.1
- /framework_1.2

Bir Bootstrap dosya /index.php gelen tüm istekleri alır. Daha sonra belli bir koşula bağlı olarak, /app1/config/config.php veya /app2/config/config.php, vb belli bir uygulamanın yapılandırma dosyası yüklenir, diyelim .. HTTP ana:

// /index.php
switch ( $_SERVER[ 'HTTP_HOST' ] ) {
    case 'localhost':
        $app_root = ROOT . 'app1/';
        break;
    case 'site.com':
        $app_root = ROOT . 'app2/';
        break;
    default:
        $app_root = ROOT . 'application/';
        break;
}
define('APP_ROOT', $app_root);

Önyükleme dosya daha sonra uygulamanın config dosyasını yükler:

// /index.php
include( APP_ROOT . 'config/config.php' );

A $ config dizisi çerçeve dosyaların bulunduğu yerleri gösteren, hangi uygulamanın yapılandırma dosyası iade edilecektir.

// /app2/config/config.php
$config['framework_root'] = '/framework_1.2/';

Bootstrap bu çerçeveyi çalışır.

// /index.php
include( $config['framework_root'] . 'config/bootstrap.php' );

Bu konuda gitmek için en iyi yolu nedir?

Bu konuda tek sorun, /index.php dosya tüm olası uygulamalar hakkında bilmek zorunda, yani kullanıcı /index.php switch deyimi düzenleyin (ya da {[(2 gerekir ki )]} belki, /index.php içerdiğini dosya?).

Ayrıca, uygulamanın yapılandırma dosyası bana biraz garip görünüyor before yükleme çerçevenin dosyaları yüklenecek var ...

Böylece talep uygulama belirtir ve uygulamayı kullanmak için hangi çerçeve belirtir, ya da yukarıdaki yolu basit, bunu yapmak için basit bir yolu var mı?

Maalesef bu kafa karıştırıcı olsaydı! Bana bunu yazarken biraz karıştı ;)

0 Cevap