目前我有一个基于遗留的非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。 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个实例。这是理想的吗?
我为加载的问题道歉,感谢任何建议。
答案 0 :(得分:1)
这对我来说看起来很混乱,我想知道你为什么要采用这种“练级”的方式。因为对我来说,它看起来像4级显示,1是最少,4是最多。
如果你问的是用什么框架替代你所拥有的框架,那么任何框架都可以工作(有许多PHP框架,做搜索,我的收藏是codeigniter.com)
另外以CSS为例,我很困惑你为什么要做像favicon这样无关紧要的事情(但我肯定能看到你的每个显示级别的选择性CSS的例子)。
但我只有一次CSS文件(或分为4组:general,lev1,2等;)然后包含并合并到一个CSS中。
但是当你敲击头部时,它会变得凌乱,我只是分开内容,或者更好的是,坐下来重新编写整个项目,看看问题将会发生在哪里,你似乎要自己确定一些,先尝试写出项目,然后在对项目范围感到满意后再编程。
否则我不建议在没有明确行动的情况下开始编程。
希望有所帮助