PHP舊系統基於命名空間重構經驗

2022-02-06 16:59:09 字數 638 閱讀 7078

命名空間其實只是乙個形式,最終目的是重構**,但這個過程想要一蹴而就是不可能的。

一開始給了乙個偽命題:基於thinkphp的重構(不要問為什麼)。經過一段的實踐,發現這是乙個大錯特錯的思維方式,其中遇到的坑在此略過不表。

首先,不要想著全盤基於命名空間重寫,而應該是基於區域性的。

最終思考後的結果,是以model層基於命名空間改造為目標,這樣可以在新的框架下重用系統中model層資源。因為理論上model層只與資料打交道,耦合度最低。

但改造過程也發現一些問題,原來的model層耦合了業務邏輯,甚至與session、cache等系統環境掛鉤,不是純粹的db操作,而是含有很多業務**,這意味著這一部分的**在初步改造完成後,是無法在新框架中重用的。

這些存在問題的地方,也間接證明了一些基礎程式設計思想的正確性:oop的本質是**重用;psr系列規範對於提高**重用度的直接作用;**分層合理性對於**維護性的影響等;全域性變數對**重用性的極度負面影響。

什麼是逐步重構?

逐步重構的基本原則是相容,不是推翻重來,只要事情變成了推到重來,就不是重構,簡直就是重寫了。在創業小團隊,推到重寫,are u kidding me?

相容是重構的起點和過程,重用是結果;新的功能可以基於新的框架開發,但同時可以在平台內部重用已有功能**,所以這是乙個過程。

php 命名空間,PHP使用命名空間

介紹 命名空間中的類,函式或常量可以通過以下方式使用 在當前命名空間中使用類 指定相對於當前命名空間的命名空間 提供命名空間的全限定名稱 從當前命名空間 在此示例中,從test1.php載入了命名空間。沒有命名空間引用的函式或類名稱將訪問當前命名空間中的功能或類名稱 示例 test1.php nam...

php命名空間

namespace misszhou function var dump a 1 var dump var dump 1 表示呼叫全域性 解決常量的衝突問題 有點像子目錄的概念 namespace meizi 必須放第一行 include func.inc.php function one func...

php 命名空間

使用命名空間 別名 匯入,允許通過別名引用或匯入外部的完全限定名稱,是命名空間的乙個重要特徵。這有點類似於在類 unix 檔案系統中可以建立對其它的檔案或目錄的符號連線。所有支援命名空間的php版本支援三種別名或匯入方式 為類名稱使用別名 為介面使用別名或為命名空間名稱使用別名。php 5.6開始允...