<?php
/* @author hlz
* @time 2023年8月3日 15:00:35
* @description 框架**分析
* 初始目錄 分三個部分
* ①index.php
* 入口檔案設定,且統一命名空間
* a.設定常量
* define("hlz_path",realpath(__dir__));//獲取入口目錄位置
* define("mysql帳號密碼");
* b.引入自己寫的model、view、controller基類
* a.供引入的類庫
* b.controller
* c.view
* d.logic
* 要求:其命名空間與類名恰好能找到檔案對應.class.php檔案
* 統一自動引入機制,與框架搭建過程中常用的方法,詳見下文
* */
define("hlz_path",realpath(__dir__."\\.."));//這裡只有乙個檔案,我就當作只有controller目錄吧
//start.注意:這個是檔案載入的方法,只能放在類外面
function __autoload($classname)
echo "已經require $file_where";
}//a.介面類
inte***ce test
//b.介面邏輯類
class hlz_vip implements test
return "hello ".$username."!";
}public function info()
}//c.普通類
class show_info
public function say()
public function __construct()
public function __call($function_name, $args)
public function __set($property_name, $value)
public function __get($property_name)
public function __isset($property_name)
}$test = new show_info();
$test->show("hlz")->say();//測試1:鏈式呼叫
$test->hlz("引數一","引數二");//測試2:這個函式不存在於物件中
$test= new \api\hlz(); //測試3:未初始化引入對應類檔案
<?php
namespace api;
echo "自己載入成功";
class hlz
}
之前在呼叫的頁面,沒給命名空間,我們是用到的
function __autoload($classname)
辦到的
可是,平時我們寫框架的時候,加上命名空間是必須的
所以這裡有乙個新的方法由此而生
可以使用函式 spl_autoload_register
來註冊乙個類中的方法來代替 __autoload
具體如下
class require_file
echo "已經require $file_where";
} }//登記自動載入的函式
//例項化物件時,如果沒有對應的類
//命名空間的名稱、自動載入的類名、類名對應的靜態方法
spl_autoload_register( array(__namespace__."\\require_file","load") );
寫自己的php框架 一
從本篇開始介紹如何用php來實現mvc模式開發,而且後續的文章也是在這個基礎上不斷改造優化。關於mvc這裡就不多說了,並且在以後的文章裡也是以講技術為主。本篇先介紹一下php的mvc實現原理,我們框架的mvc部分也是基於此原理實現的,但是今天的 並不是框架內的 僅僅為說明原理。一 檔案結構 建立3個...
首次開啟檔案簡單分析
os 開啟檔案是乙個合作的過程。具體的過程有open read.其中特別注意,這兩個操作都是系統呼叫!使用者程序只是把開啟檔案這個需求發到作業系統,作業系統就根據要求完成這個任務,且這個任務分成兩個部分執行。首先,維護乙個開啟檔案表。使用者程序傳送的請求裡,給的是檔名,經過open系統呼叫,就去把該...
用PHP寫乙個框架的思路
在php的論壇中總是聽到有人對php的oop支援說三道四的,說這有缺陷,那裡不足,但是都拿不出實際的例子。原來說過要和大家說說這事,但是一直很忙,現在算是抽了些時間了,所以把我剛剛做過的乙個專案的框架拿出來和大家 一下。這個專案99 的 是用oop方式編寫的,感覺php對於oop支援非常好,不是一般...