首次分析 PHP寫框架

2021-07-16 03:25:24 字數 2023 閱讀 7032

<?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支援非常好,不是一般...