PHP设计模式学习笔记二——PSR-0规范及其实现

序言

PSR-0 是 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类,其中包含类自动注册所需的函数

<?php

namespace Src;

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

定义两个测试所需的类:

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();

复制代码

运行结果

可以看到我们并没有手动的去引入Src\Object类和App\Controller\Home\Index类,而是交给了spl_autoload_register()函数去实现类的自动加载。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值