Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 每个页面都需要一个包含很多内容的标题:我的框架设计好吗?_Php_Architecture - Fatal编程技术网

Php 每个页面都需要一个包含很多内容的标题:我的框架设计好吗?

Php 每个页面都需要一个包含很多内容的标题:我的框架设计好吗?,php,architecture,Php,Architecture,我意识到我需要一个智能的解决方案来解决这个问题 在我的框架内,有: 视图(实际上只是HTML文件,很少使用PHP输出数据) 视图控制器(创建视图,执行一些逻辑) 例如,对于每个页面,我都有一个由框架调用的ViewController。有一个RootViewController可以创建布局视图。布局视图指定网站的页眉和页脚以及主要结构。例如,它有一个contentView占位符 在这种设计中,我只指定头部一次,因此DOCTYPE、TITLE和所有其他内容都会粘贴到布局视图模板上 加载该Root

我意识到我需要一个智能的解决方案来解决这个问题

在我的框架内,有:

  • 视图(实际上只是HTML文件,很少使用PHP输出数据)
  • 视图控制器(创建视图,执行一些逻辑)
例如,对于每个页面,我都有一个由框架调用的ViewController。有一个RootViewController可以创建布局视图。布局视图指定网站的页眉和页脚以及主要结构。例如,它有一个contentView占位符

在这种设计中,我只指定头部一次,因此DOCTYPE、TITLE和所有其他内容都会粘贴到布局视图模板上

加载该RootViewController的每个视图控制器都可以通过调用RootViewController上的一些方法来设置标题、附加CSS包含或Javascript包含(这是头部中那些奇特的link rel标记之一)

到目前为止,这实际上是非常灵活的,因为如果不指定任何内容,您将获得有用的默认值,并对所需的一切进行合理的处理

但我看到了这些问题:

  • 我不能让框架用户的生活变得更简单吗?布局模板必须包含所有这些会降低生产率的“垃圾”。为什么框架用户甚至需要考虑设置一个正确的头部?这总是完全相同的问题,需要完全相同的语法,框架中完全相同的CSS和Javascript,等等……你明白了

  • 它必须包含精确对应的占位符变量,以匹配RootViewController的方法

为了解决这个问题,我想我可以提供一个奇特的变量,它可以插入到任何视图模板中来输出头块

我只是想看看你们是怎么想的,我的解决方案是否很好,或者我是否会在这里犯一个很大的设计错误。如果是这样的话,还有什么选择呢?

你可以让你的“用户”只指定身体模板,并自动输出你的头部、“用户”身体和你的页脚。然后,模板设计者不必记住包含一些任意变量,如果您决定更改包含页眉/页脚的方式,您就不必更新每个模板

您还可以允许模板设计器通过调用某些函数来覆盖此行为


这可能是最理想的:90%的情况下,您的框架会在没有任何开发人员努力的情况下做正确的事情。只有在10%的情况下,如果用户想做其他事情,他们必须通过函数调用来实现。

Tbh,我不理解您指出的问题。你在找控制器插件吗?但是,如果这将成为一个公共框架,为什么不把它上传到谷歌代码、sourceforge或git或其他什么东西上,这样我们就可以有一个潜行的高峰呢?