开发一个PSR-0的基础框架

PSR-0 规范

  • 命名空间必须与绝对路径一致
  • 类名首字母必须大写 (注意是类名,而不是文件名)
  • 除入口文件外,其他的 .php 必须只有一个类

开发符合PSR-0规范的基础框架

  • 全部使用命名空间
  • 所有的PHP文件必须自动载入,不能有 include/require
  • 单一入口

首先说明下类自动载入

__autoload 但是这个函数被废弃了,因为这个函数使用一次以上的话,会报函数命名冲突的错误

function __autoload($class)
{
 require __DIR__.'/'.$class.'.php';
}

spl_autoload_register() php5.3之后官方提倡使用此函数取代 __autoload (spl_autoload_register — 注册给定的函数作为 __autoload 的实现)
这个函数载入的是一个函数,在函数中引入文件即可,而且不会引起冲突
还可以多次调用此函数

index.php

app/Controller/Index.php

注意

  • 规范中可能是类的首字母必须大写,文件好像并没有规定大小写,但是我测试过类和文件名大小写其实都是可以的
  • 但是命名空间必须与文件名一直,因为引入的时候可能是安好命名空间引入的,打印 auto($class) 的参数,得到的其实就是命名空间
  • 所以需要使用 str_replace 函数转换 \\/
  • spl_autoload_register() 函数时可以多次调用的,而且不会引起命名冲突
  • 很多讲解者喜欢把 spl_autoload_register() 函数的参数使用 autoload ,但其实随便一个函数都行,只是使用的功能要是本例中auto 函数的功能

你可能感兴趣的:(开发一个PSR-0的基础框架)