目前我有一个基于传统的非 MVC php 框架,我需要对其进行更新以支持水平/功能系统。
我想要两种模式,一种是普通模式(当前模式),另一种是基于关卡的模式,我可以控制包含哪些功能——低、中、高级。
例如,低层将不支持谷歌地图,而中层和高层将支持。层之间的布局也有所不同,因此除了我当前的模板之外,我还必须为每一层提供一个模板主文件。
而关卡模式中的高层和当前模式的区别在于,高层中包含了某些东西,但当前模式中的功能是无限的(基于非关卡)。
目前系统架构布局如下:
templates/
default.php
includes/
branding.php
css.php
js.php
map.php ( google map )
如果您访问index.php
或contact.php
它只是做一个require_once APP_PATH . 'templates/default.php'
我知道这不是最理想的环境类型,因为它不是基于 MVC 的,但这就是我坚持使用 ATM 的原因。
templates/default.php
看起来像:
<!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>
所以一个相当老派类型的模板文件。
为了支持调平系统,我怀疑我必须将我的框架结构更改为类似..
templates/
level-0.php
level-1.php
level-2.php
level-3.php
includes/
branding.php
css.php
js.php
现在在我的配置文件中,我必须定义一些常量,例如..
define('LEVEL', 1);
define('TEMPLATE_FILE', APP_PATH . 'templates/level-' . LEVEL . '.php');
default.php
对于基于层的level-0.php
模板,它们分别是 1、2、3。
所以现在当我访问一个页面时,index.php
我contact-us.php
会包含TEMPLATE_FILE
常量:
require_once TEMPLATE_FILE
- 这是理想的吗?有什么缺点吗?
如果我采用这种方法,我将有 4 个单独的模板文件,这很好。因此,例如,最低层将不包括map
包含,而最高层将。
我关心的另一个问题是子分支,是否可以在包含文件中进行分支?一个例子是最低层没有网站图标。favicon 元素位于 中includes/css.php
,因此我必须在该文件中进行分支:
包括/css.php:
<link rel="stylesheet" type="text/css" href="main.css">
<?php if ( LEVEL !== 1 ) { ?>
<link rel="shortcut icon" href="favicon.ico">
<?php } ?>
- 这可能会有点混乱,但它使我免于到处复制 css.php 并不得不更新它的 4 个实例。这是理想的吗?
我为加载的问题道歉,感谢任何建议。