🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 3-3 开发一个PSR-0的基础框架 ### 一、PHP面向对象高级特性 #### PSR-0规范 1. 命名空间必须与绝对路径保持一致 2. 类名首字母必须大写 3. 除入口文件之外, 其他“.php”文件必须只有1个类 ### 二、开发符合PSR-0的基础框架 1. 全部使用命名空间 2. 所有PHP文件全部使用自动载入,不能用require/include 3. 单一入口 ### 三、代码实现 #### 第1步:创建目录结构 **入口文件** *D:\wamp\www\demo\oop\framework\index.php* **二个目录** // 存放业务的逻辑代码 *D:\wamp\www\demo\oop\framework\App* // 存放公共的类文件 *D:\wamp\www\demo\oop\framework\Think* #### 第2步:创建文件 *D:\wamp\www\demo\oop\framework\Think\Object.php* ~~~ <?php namespace Think; // 公共类 class Object { static function test() { echo __METHOD__; } } ~~~ MVC的结构是在`App`应用目录下创建`Controller`存放控制器类。 *D:\wamp\www\demo\oop\framework\App\Controller\Home\Index.php* ~~~ <?php namespace App\Controller\Home; // 控制器 class Index { static function test() { echo __METHOD__; } } ~~~ ### 第3步:创建自动加载类文件 *D:\wamp\www\demo\oop\framework\Think\Loder.php* ~~~ <?php namespace Think; class Loder { static function autoload($class) { // var_dump($class); require BASEDIR . '/' . str_replace('\\', '/', $class) . '.php'; } } ~~~ 入口文件:*D:\wamp\www\demo\oop\framework\index.php* ~~~ <?php // 入口文件 define('BASEDIR', __DIR__); include BASEDIR . '/Think/Loder.php'; spl_autoload_register('\\Think\\Loder::autoload'); App\Controller\Home\Index::test(); echo "<br />"; Think\Object::test(); ~~~ 输出结果: ~~~ App\Controller\Home\Index::test Think\Object::test ~~~ 到此,关于创建1个符合PSR-0的基础框架就实现完成了。