[英]How would you structure, or the best way to structure the code in PHP?
我想知道最好的方法(更快更好)來構造PHP中的代碼。
有些人將帶有函數,子類和var的Master Class保存到唯一的全局變量中,例如$ modx CMS case。
您的結構技術是什么?
以及如何連接到數據庫?
你們都喜歡像PHPCake這樣的PHP框架嗎?
如何構造Plubic變量(配置)和私有變量(臨時或程序運行變量)?
我提出問題的原因是,我不會以堅實的基礎開始進行靜態編程。 目前,我正在使用ModX框架/ CMS進行編程。
注意:每次對答案投票-1時,請說明理由!
在此先感謝(對不起,我的英語不好)
更快更好地不能在一起。
快點
純PHP更快,更兼容。 您的發行版將會更小。 它最容易維護嗎? 好吧,如果做得正確就可以。 大型軟件項目(例如Drupal或Wordpress)表明,基於框架的項目並不比純PHP易於維護。 純PHP仍然具有一些內置類,但是最終它們會返回功能。 自動加載是不錯的選擇,但是較大的代碼庫仍然會降低性能。
更好
從長遠來看,基於框架的項目傾向於更好地維護和使用。 由於其性質,它們速度較慢(如果包含路徑中包含許多不同路徑,或者包含路徑排列不正確,則自動加載會降低性能)。 它還提供了一個預設的結構,以便其他人可以跳入並更快地了解發生了什么。 大多數Zend Framework項目看起來都是相同的,因此您將更有機會找到正在運行的代碼段。 性能受到影響,並且需要諸如操作碼緩存之類的外部助手。
我的意見
選擇“更好”選項:具有自動加載功能的框架。 已經為您完成了許多工作,因此您可以在生產時間方面更快地完成任務。 現在,我建議使用Zend框架和原則。 是最快的嗎? 不,但是更容易維護。
如果需要穩定的速度,請使用核心PHP或自帶的低級框架。 ZF,Code Igniter,symfony,與核心PHP相比,它們都對性能產生了影響。
使用自動加載來加載類並通過單例訪問實例:
class DB extends mysqli{
private static $instance;
private function __construct(){
parent::__construct(DB_HOST,DB_LOGIN,DB_PASS, DB_DB);
$this->set_charset("utf8");
$this->autocommit(false);
}
public static function i() {
if (!self::$instance instanceof self){
self::$instance = new self;
}
return self::$instance;
}
}
采用:
$res=DB::i()->query("SELECT * FROM whatever");
它將創建一個mysqli實例,並且每當您訪問DB :: i()時,它將返回該實例。
我想您會對依賴注入感興趣,也可以使用自動加載功能:這是一個殺手級功能。 對於數據庫,請使用PDO,這是本地PHP數據庫層。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.