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()函数去实现类的自动加载。代码规范

相关文章
相关标签/搜索