PHP設計模式學習筆記二——PSR-0規範及其實現

序言

PSR-0 是 PHP 業界的一個代碼規範,主要類容以下php

  1. 命名空間必須與絕對路徑一致
  2. 類名首字母必須大寫
  3. 除了入口文件外,其餘.php文件必須只有一個類

實現一個簡易的符合 PSR-0 規範的 PHP 框架

首先項目的結構以下圖所示:框架

目錄結構

Home目錄下的index.php文件爲例子:函數

<?php

namespace App\Controller\Home;

class Index{
    static function test(){
        echo __METHOD__."\n";
    }
}
複製代碼

咱們能夠看到:測試

  1. 使用了和文件絕對路徑一致的命名空間:App\Controller\Home
  2. 類的首字母大寫: class Index
  3. 該文件下只有一個類 class Index

框架的功能

咱們定義一個 Loader類,其中包含類自動註冊所需的函數ui

<?php

namespace Src;

class Loader{
    static function autoload($class){
        $file=BASEDIR.'/'.str_replace('\\','/',$class).'.php';
        //var_dump($file);
        require_once "$file";
    }
}
複製代碼

定義兩個測試所需的類:spa

Src\Object.php

<?php
namespace Src;

class Object{

    static function test(){
        echo __METHOD__."\n";
    }
}
複製代碼

App\Controller\Home\Index.php

<?php

namespace App\Controller\Home;

class Index{
    static function test(){
        echo __METHOD__."\n";
    }
}
複製代碼

入口文件 Index.php

<?php

define('BASEDIR',__DIR__);
//包含 包含了註冊函數的文件類
include BASEDIR.'/Src/Loader.php';
//註冊函數
spl_autoload_register('\\Src\\Loader::autoload');

//測試類
Src\Object::test();
App\Controller\Home\Index::test();

複製代碼

運行結果

Result

能夠看到咱們並無手動的去引入Src\Object類和App\Controller\Home\Index類,而是交給了spl_autoload_register()函數去實現類的自動加載。代碼規範

相關文章
相關標籤/搜索