所以,我正在尝试基于我自己的类似 MVC 的 PHP 模型构建一个网站。
假设每个视图至少包含 2 个部分:
让那些是'template.php'和'mypage.php'(第二部分取决于特定页面,第一部分是常见的)。
template.php有以下代码(简化版):
<html>
<title>Sometitle</title>
<link rel='stylesheet' href='/css/gen.css' type='text/css' />
<script type='text/javascript' src='/js/gen.js'></script>
<?php echo $other_external_files; ?>
</head>
<body>
<div class="some_header_and other stuff">...</div>
<div class="workfield">
<?php include_once mypage.php; ?>
</div>
</body>
</html>
'mypage.php'(以及其他一些页面)有一些应该包含的特定 .css 和 .js 文件的问题。
问题是:包含这些文件的最佳选择是哪个(如何以及在哪里)?
以下是我的想法:
我可以在模型或控制器中定义变量
$other_external_files
,但并不想这样做,因为 .css 文件通常是视图的一部分,我可以在“mypage.php”中对其进行硬编码,只要它不需要留在<head>
。我知道 .css 和 .js 文件可以动态包含在 JavaScript 中,但如果没有强烈需求,我想避免使用此解决方案。
我可以在相应的模型中定义所有这些变量。这里的问题是,从一开始我就一直在尝试根据内容构建模型(因此,我有通用模型(文件和类),例如“用户”、“Shop_items”等,不一定对应于每个视图文件(这意味着我基本上没有任何 mypage_model.php,只有 'items_model'、'users_model' 等)。在模型中定义页面的标题将迫使我添加大量模型文件。
我可以
$other_external_files
在核心 View 类中自动定义变量,如下所示:
-
function __construct($action){
$this->action = $action.'.php';
$this->css_file = 'css/'.$action.'.css';
}
function generate($view_lvl, $data = null){
$other_external_files = $this->css_file;
require_once $action;
}
但是,这种方法似乎是有限的,因为可能存在一种情况,当我想包含几个名称完全不同的文件时。
我个人现在选择的是第 3 个,因为它不仅可以附加 css 和 js,还可以轻松定义文档的标题和其他可能的变量……但在增加我的文件之前,我想咨询有经验的程序员如果这真的是正确的方法,你就是。
非常感谢,很抱歉问了一个很长的问题。很感谢任何形式的帮助!