Seviyesi / katmanlı dayalı çerçeveler için Stratejiler

1 Cevap php

Şu anda ben bir tesviye / özellik sistemini desteklemek güncellemek gereken bir miras tabanlı olmayan MVC php framework var.

Düşük, orta, yüksek katman - Ben dahil hangi özellikleri kontrol eden iki modları, normal mod (akım modu) ve bir seviye tabanlı modu istiyorum.

Orta ve yüksek katman olacak Örneğin, düşük katmanlı, google haritalar destek olmaz. Düzeni de katmanları arasında değişir, bu yüzden benim şimdiki şablonuna ek olarak her katman için bir şablon ana dosyası olması gerekir.

Ve seviye modunda yüksek katman ve geçerli modu arasında bir fark yüksek katman dahil bazı şeyler vardır, ama sınırsız özellikler geçerli mod (non-level tabanlı) de vardır o vardır.

Şu anda sistem yapısı gibi ortaya koydu:

templates/
    default.php

includes/
    branding.php
    css.php
    js.php
    map.php ( google map )

Eğer index.php veya contact.php sadece yok bir require_once APP_PATH . 'templates/default.php' ziyaret ederseniz

I know that isn't the most ideal type of environment since it isn't MVC based but that's what I'm stuck with ATM.

templates/default.php gibi bir şey görünüyor:

<!doctype html>
<html>
<head>
    <?php include APP_PATH . 'includes/branding.php';
</head>
<body>
    <?php
    switch ( filename ) {
        case 'map':
        include APP_PATH . 'includes/map.php';
    }
    ?>

<?php
include APP_PATH . 'includes/google.php';
?>
</body>
</html>

Yani şablon dosyası oldukça oldschool türü.

Tesviye sistemi desteklemek amacıyla ben gibi bir şey benim framework yapısını değiştirmek gerekecek sanıyorum ..

templates/
    level-0.php
    level-1.php
    level-2.php
    level-3.php

includes/
    branding.php
    css.php
    js.php

Şimdi benim yapılandırma dosyasında ben gibi bazı sabitleri tanımlamak gerekecek ..

define('LEVEL', 1);
define('TEMPLATE_FILE', APP_PATH . 'templates/level-' . LEVEL . '.php');

default.php olur level-0.php ve katmanlı göre şablonları için, bunlar 1, 2, 3, sırasıyla.

Yani şimdi böyle index.php veya contact-us.php I TEMPLATE_FILE sabit içerecek şekilde bir sayfayı ziyaret ettiğinizde:

require_once TEMPLATE_FILE

- Is this ideal? Are there any drawbacks?

Ben bu yöntem ile giderseniz ben 4 ayrı şablon dosyalarını olacak ve bu iyi. Yani, örneğin en düşük katmanlı yüksek katman olacak iken map include olmaz.

Ben sub-dallanma endişeliyim bir başka konu, bu içeren dosyaları içindeki şube ok? Bir örnek düşük katmanlı bir favicon yok olmasıdır. Favicon elemanı includes/css.php içinde, yani ben o dosyanın içinde şube gerekir:

/ css.php içerir:

<link rel="stylesheet" type="text/css" href="main.css">
<?php if ( LEVEL !== 1 ) { ?>
<link rel="shortcut icon" href="favicon.ico">
<?php } ?>

- This might get a bit messy, but it saves me from duplicating css.php everywhere and having to update 4 instances of it. Is this ideal?

Ben, yüklü soru için özür herhangi bir tavsiye ederiz.

1 Cevap

Bu sadece bana pis görünüyor, ve bu 'tesviye' moda hakkında gidiyoruz merak ediyorum. Benim için en olmanın 4 ekran düzeyleri, 1 az olan ve 4 gibi görünüyor çünkü.

Eğer sahip biri için yerine ne çerçeve soran varsa, herhangi çalışacak (bir arama yapmak, birçok PHP olanları vardır, benim fav codeigniter.com olduğu)

Eğer favicon gibi önemsiz bir şey yapıyor neden rahatsız olur da, bir örnek olarak CSS bakarak, Kafam karıştı (ama kesinlikle ekran seviyesine başına seçici CSS senin örneğini görebilirsiniz).

Genel, lev1, 2 vb ;) sonra içerir ve bir CSS birleştirmek: CSS dosyası (veya 4 set halinde kırılmış bir kere Ama ben sadece olurdu.

Eğer kafasına çivi vurdu Ama, onun toget dağınık oluyor, ben sadece içeriği ayırmak, ya da daha iyisi, oturup bütün bu proje yeniden yazmak, sorunlar olacak nerede görmek istiyorsunuz, tespit etmiş görünüyordu Kendinizi birkaç, sen proje kapsamı ile mutlu kez o zaman programlamak, ilk projeyi yazmaya çalışın.

Aksi takdirde eylem açık bir kurs olmadan programlamak başlayan tavsiye etmem.

Umut olur