-2

我正在为 CMS 开发自定义模板,我必须一遍又一遍地使用相当大部分的代码来显示内容,代码本身保持不变。所以我在想如何更好地优化它:

  1. 让它成为一个函数 - 会很完美,但它使用了大约 50 个变量,我必须将它们全部重新声明为全局变量。也许有一种方法可以声明一个函数,以便它具有父变量范围?
  2. 我不能使用循环,因为这段代码在不同的地方重复,没有模式
  3. 到目前为止,对我来说最好的方法是创建一个单独的文件并使用 include 来放置它,但是创建单独的文件是不可取的,因为最终用户更难理解和管理,也许可以在同一个文件中包含代码?

编辑:为了更清楚地说明,模板是在页面上呈现 html 的内容。所以我正在处理的代码只需要在相同的结构中多次呈现不同的内容,但内容不同(代码保持不变,但变量会改变它们的值)。所以工作流程是:

  • 显示其他一些独特的内容,
  • 显示相关代码生成的内容,
  • 显示其他一些独特的内容,没有任何模式,
  • 显示相关代码再次生成的内容,
  • 并能够将其插入此页面上的任何其他位置。

除了上面提到的这三种之外,还有其他重用代码的方法吗(除了取消 goto 之外)?

4

2 回答 2

1

如果一个函数有大约 50 个变量,那么你的函数/代码是错误的 :)

函数应该小、紧凑和灵活,并且(通常)不应该比你的屏幕大。我的平均函数大约是 20-50 行。

因为可以在函数中使用函数,所以可以复用很多代码

因为您在 CMS 上工作,所以请定义经常发生的小部分。喜欢getPagegetPageIdgetFileContent(如果您想要自己的功能)。这些函数只有一手他们需要的参数,所以不需要全局的东西。

不确定您的代码是如何工作的,但在此示例中,您可以将getPageandgetPageId一起使用:

function getPage( $url ){
    $pageId = getPageId($url);
    // and now get a page:
    $content = getPageContent($pageId);
    return $content;
}

您现在可以使用这些功能,因为它们只执行小任务。如果处理得当,小功能将为大功能的尺寸减小创造空间。正如您在我的示例中所看到的,获取页面的函数实际上非常苗条!

于 2013-11-13T12:09:59.360 回答
0

到目前为止,对我来说最好的方法是创建一个单独的文件并使用 include 来放置它,但是创建单独的文件是不可取的,因为最终用户更难理解和管理,也许可以在同一个文件中包含代码?

在您不提供任何其他详细信息的情况下,这是最好的方法。此外,当您说“……但创建单独的文件是不可取的,因为它更难为最终用户理解和管理”。您基本上是在说,“这个客户想要一些复杂的东西,但不愿意为真正的 CMS 解决方案付费,不知何故,现在我不得不以某种方式简化一个固有的复杂流程。”</p>

这听起来像是一个所谓的“没有预算”的经典客户,他希望你做“伟大的工作”,然后向办公室里的一个“技术”人员展示如何做事。

我的建议?只需执行第三种情况,在这种情况下不要担心最终用户。你做了你的工作。

于 2013-11-13T12:11:28.453 回答