通过MySQL数据库包含PHP代码(模块),好主意?

通过MySQL数据库包含PHP代码(模块),好主意?

问题描述:

主要脚本包括为其添加功能的“模块”。每个模块设置如下:通过MySQL数据库包含PHP代码(模块),好主意?

<?php 
//data collection stuff 
//(...) approx 80 lines of code 
//end data collection 
$var1 = 'some data'; 
$var2 = 'more data'; 
$var3 = 'other data'; 
?> 

每个模块具有相同的确切变量,只是数据收集是不同的。

我在想,如果这是一个合理的想法到模块的数据存储在MySQL中是这样的:

[database] 
|_modules 
    |_name 
    |_function (the raw PHP data from above) 
    |_description 
    |_author 
    |_update-url 
    |_version 
    |_enabled 

...然后包括从数据库中的PHP数据并执行它?类似于每个模块名称页面顶部的制表符导航系统,然后在这些制表符的每个内部,页面内容将通过解析function部分中模块的数据库存储代码而起作用。

其目的是节省代码空间(更少的行),允许轻松更新,并且包含/排除基于enabled选项的模块。这是多少其他网络应用程序的工作,也有我自己的一些。但我从未想过如此深刻。这是否有任何缺点或安全风险?

例如MODx使用这种方法。 PHP“片段”和模块存储在数据库中。大多数这些PHP片段只是设置一些配置值,然后在服务器上包含来自文件的主要模块代码。

主要优势在于编辑模块配置的灵活性,因为所有模块都可以在CMS的后端进行编辑。另一方面,Wordpress也允许从后端编辑插件PHP代码,但将所有文件存储为服务器上的文件,而不将PHP存储在数据库中。

那么,这不是一个真正的答案,但我认为这是一个品味问题。

我不认为这有一个硬性和快速的答案。您所描述的方法将有利于某些应用程序,通常是小型网站,例如博客网站。

藏在心里的服务器上的文件会因读取服务器上的文件,而不是从数据库retrieveing他们所花费的时间较大的应用程序中受益的传统方式。

所以它真的取决于你想要实现的目标。

我会建议反对。其中一个缺点是代码不能被操作码缓存(例如, APC。此外,在版本控制系统中管理代码并不那么容易。后来当你想要进行单元测试,持续集成测试等时,它也会变得更麻烦。