Ş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.