重用大部分php代码的最佳方法
我正在为CMS定制模板,我不得不一次又一次地使用大部分代码来显示内容,代码本身保持不变。因此,我在思考如何更好地优化它:重用大部分php代码的最佳方法,php,Php,我正在为CMS定制模板,我不得不一次又一次地使用大部分代码来显示内容,代码本身保持不变。因此,我在思考如何更好地优化它: 让它成为一个函数——这将是完美的,但它使用了大约50个变量,我必须将它们全部重新声明为全局变量。也许有一种方法可以声明一个函数,使其具有父变量作用域 我不能使用循环,因为这段代码在没有模式的不同地方重复 到目前为止,对我来说最好的方法是创建一个单独的文件并使用include来放置它,但是创建单独的文件并不可取,因为最终用户更难理解和管理,也许可以在同一个文件中包含代码 编辑:
- 显示其他一些独特的内容
- 显示相关代码生成的内容
- 显示其他一些独特的内容,没有任何图案
- 显示相关代码再次生成的内容
- 并能够将其插入此页面上的任何其他位置
除了上面提到的三种方法之外,还有其他方法可以重复使用代码吗(除了取消goto)如果一个函数有大约50个变量,那么您的函数/代码是错误的:) 功能应该小、紧凑、灵活,并且(通常)不应该比屏幕大。我的平均功能大约是20-50行 因为可以在函数中使用函数,所以可以重用大量代码 因为您在CMS上工作,所以请定义经常发生的小部分。例如
getPage
或getPageId
或getFileContent
(如果您想要自己的函数)。这些函数只有一手所需的参数,因此不需要全局处理
不确定代码是如何工作的,但在本例中,您可以同时使用getPage
和getPageId
:
function getPage( $url ){
$pageId = getPageId($url);
// and now get a page:
$content = getPageContent($pageId);
return $content;
}
您现在可以使用这些函数,因为它们只执行小任务。如果做得好,小功能将为大功能的缩小创造空间。正如您在我的示例中所看到的,获取页面的函数实际上非常小
到目前为止,对我来说最好的方法是创建一个单独的文件并使用include来放置它,但是创建单独的文件并不可取,因为最终用户更难理解和管理,也许可以在同一个文件中包含代码
如果不提供任何其他细节,这是最好的方法。另外,当你说,“……但是创建单独的文件是不可取的,因为它更难为最终用户理解和管理。”你基本上是说,“这个客户想要一些复杂的东西,但不愿意为真正的CMS解决方案付费&不知何故,现在我要以某种方式简化一个固有的复杂过程。”
这听起来像一个典型的客户,据说“没有预算”,他希望你做“伟大的工作”,然后向办公室里的一个“技术”人员展示如何做事
我的建议?只需执行第三个场景&在这种情况下,不要担心最终用户。你完成了你的工作。可重用代码==函数。时期这就是他们的目的。如何最好地编写与所需变量相关的内容取决于所讨论的实际代码。您也可以选择第三个选项,但只要以这种方式包含单独的文件,就可以使用include_一次,如果您希望更改必须在单个文件中进行的模板,它们将反映整个站点可能我遗漏了什么,但包括一次,据我所知,将不允许再次包括相同的代码,虽然它肯定是当您包括一个函数时,它只是不允许我在同一页上再次使用呈现代码?如果我将对我包含的文件进行更改,它将在任何地方反映更改,是吗?我不记得要缓存的文件包含或类似的东西…我没有函数,我只需要在视图中重复部分代码,所以将其作为函数是一个合乎逻辑的建议,但它太大了,我无法减少它,我不能修改控制器,从那个里调用它,只是把结果传递到视图中。我怀疑你们不能实现代码某些部分的功能。我想不出一个合理的理由:p我已经做了很长一段时间了,你总是可以把大代码分解成小函数。即使这不会减少代码的实际行数,也会让其他人更好地阅读代码。嗯,我确实可以,但这值得麻烦吗?控制器向视图传递许多变量。如果我把代码的一部分变成一个函数,那么所有的变量都在全局范围内。当然,我可以将它们声明为全局变量,但与将代码拆分为文件并包含它相比,声明一组变量更麻烦,因此变量具有相同的作用域,不需要重新声明。我可以提供一个代码,但我认为它没有用,因为它可能是任何大视图的任何部分。是的,它主要是那种类型的客户机,所以这个问题不是很重要,但我想也许我会学到一些更好的方法来减少代码,我和其他任何人都可以使用。创建更多的文件通常会使其他人以后更难处理,因为他们需要了解每个文件都在做什么,而不仅仅是“哦,这里有一个视图”。