2012-07-10 64 views
3

主要腳本包括爲其添加功能的「模塊」。每個模塊設置如下:通過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選項的模塊。這是多少其他網絡應用程序的工作,也有我自己的一些。但我從未想過如此深刻。這是否有任何缺點或安全風險?

回答

1

例如MODx使用這種方法。 PHP「片段」和模塊存儲在數據庫中。大多數這些PHP片段只是設置一些配置值,然後在服務器上包含來自文件的主要模塊代碼。

主要優勢在於編輯模塊配置的靈活性,因爲所有模塊都可以在CMS的後端進行編輯。另一方面,Wordpress也允許從後端編輯插件PHP代碼,但將所有文件存儲爲服務器上的文件,而不將PHP存儲在數據庫中。

那麼,這不是一個真正的答案,但我認爲這是一個品味問題。

1

我不認爲這有一個硬性和快速的答案。您所描述的方法將有利於某些應用程序,通常是小型網站,例如博客網站。

藏在心裏的服務器上的文件會因讀取服務器上的文件,而不是從數據庫retrieveing他們所花費的時間較大的應用程序中受益的傳統方式。

所以它真的取決於你想要實現的目標。

2

我會建議反對。其中一個缺點是代碼不能被操作碼緩存(例如, APC。此外,在版本控制系統中管理代碼並不那麼容易。後來當你想要進行單元測試,持續集成測試等時,它也會變得更麻煩。