最近公司要作微信接口開發。用asp.net 始終取不到微信用戶的openId,換了php卻能夠。因而把代碼改用PHP開發了。
因而在項目中引入了PHPCMS V9這個框架。 學習PHP的第一份資料
其實很早就用PHPCMS V9了,可是一直沒有深刻研究。這些天正好仔細分析一下。
一: 先簡單看了看PHP語法:
PHP是一種弱類型,解釋型,動態的語言,和C#不同,和javascript有那麼點類似。
PHP中的類沒有public修飾符。聽說php5已經開始由namespace,可是phpcms v9目前沒有使用。
類中函數的調用:
剛用的時候老鬧心了。非靜態的方法是$this->方法名。我常常用this->。
類中的靜態方法是類名::方法名.
include,inlude_once,require,require_once
相似C#中的using仍是java裏的import ,不過這裏須要指明php文件的路徑。
由於
include 是一個特殊的語言結構,其參數不須要括號。在比較其返回值時要注意
處理返回值:在失敗時
include 返回
FALSE 而且發出警告。成功的包含則返回
1,
若是來自遠程服務器的文件應該在遠端運行而只輸出結果,那用
readfile() 函數更好。另外還要格外當心以確保遠程的腳本產生出合法而且是所需的代碼
require 和
include 幾乎徹底同樣,除了處理失敗的方式不一樣以外。require 在出錯時產生
E_COMPILE_ERROR
級別的錯誤。換句話說將致使腳本停止而
include 只產生警告(
E_WARNING
),腳本會繼續運行。
include_once 語句在腳本執行期間包含並運行指定文件。此行爲和
include 語句相似,惟一區別是若是該文件中已經被包含過,則不會再次包含。如同此語句名字暗示的那樣,只會包含一次。
php 5 說是面向對象的,可是它和C#,java不同,並不能算是徹底的面向對象。
至少C# ,java除了main函數,都是類。php 5除了類還有獨立的define或者function 等。
二 phpcms v9 的基本結構:
【1】 caches 文件夾放着配置文件和緩存文件。 phpcms v9 使用了文件型緩存,固然也能夠配置memcache。
【2】statics 目錄 放靜態文件JS,CSS,images
【3】phpcms 是程序主文件。
--libs 系統核心庫
-- model文件夾 數據表模型,並不像C#活java 裏頭作ORm時,每一個數據表對應一個實體類,實體類每一個字段和數據表的字段對應。這裏的實體類只是指明瞭類對應的表而已。每個model 都繼承自父類model
而這個model類,更像是早幾年甚至如今都用的SqlHelper。
在phpcms v9中,每一個model對單表操做還能夠,想寫個聯合查詢是很難滴。目前我用視圖實現。即先作一個多表操做的視圖,而後在phpcms v9 裏放一個視圖的model,把視圖當表操做麼。
【4】 modules 目錄放着phpcms v9的全部模塊。
每一個模塊至少有這麼幾個目錄,classes,functions,templates 。
classes:能夠看作是控制器的基礎類吧
functions:工具函數?
templates : 這是給管理端操做這個模塊用的。
三. PHPCMS v9 的運行流程
1: index.php 調用base.php.
2: 定義變量,拆分路由,加載路由指定的module中的方法。
其中用了幾個反射【不知道是否是能夠這麼稱呼】。
class_exists 判斷控制器是否存在,
method_exists 判斷方法是否存在。
call_user_func(array($controller, ROUTE_A)); 調用控制器裏的防範。
在方法中include php模板文件,齊活,一個網頁就這麼動起來了。