php 一个简单的符合PSR-0规范的框架
2017-11-15 11:37
204 查看
前提明白命名空间和自动加载
一、命名空间命名空间和我们日常使用电脑中的文件夹一样,同一个文件夹下是不能有两个一样的文件的,在php中也是同理,具体使用如下:
test1.php
<?php namespace Test1; function test() { echo __FILE__; }test2.php
test2.php <?php namespace Test2; function test() { echo __FILE__; }
test.php
test.php <?php require './test1.php'; require './test2.php'; Test1\test(); Test2\test();
二、自动加载
__autoload 尝试加载未定义的类
test1.php
<?php class test1 { static function test() { echo __METHOD__; } }test2.php
<?php class test2 { static function test() { echo __METHOD__; } }test.php
test.php <?php //require './test1.php'; //require './test2.php'; test1::test(); test2::test(); function __autoload($class) { require __DIR__.'/'.$class.'.php'; }
spl_autoload_register 注册给定的函数作为__autoload的实现,可以实现多个autoload
test.php
<?php spl_autoload_register('autoload1'); test1::test(); test2::test(); function autoload1($class) { require __DIR__.'/'.$class.'.php'; }
三、PSR-0规范:
1、命名空间与绝对路径一致;
2、类名首字母必须大写;
3、除入口文件外,其他php必须只有一个类;
四、一个符合PSR-0规范的基础框架
1、全部使用命名空间;
2、所有的php文件必须自动载入,不能有include/require;
3、单一入口;
目录结构如下:
index.php
<?php // 定义根目录 F:\phpstudy\WWW\imooc define('BASEDIR',__DIR__); // echo BASEDIR;exit; F:\phpstudy\WWW\imooc // 引入 F:\phpstudy\WWW\imooc\Imooc\Loader.php 这个文件用来作为加载其他文件 include BASEDIR.'/IMooc/Loader.php'; // 调用 F:\phpstudy\WWW\imooc\Imooc\Loader.php 的 autoload静态方法用来加载class spl_autoload_register('\\IMooc\\Loader::autoload'); // 现在就可以使用页面没有的类的方法了 自动加载 // IMooc\Object::test App\Controller\Home\Index::test IMooc\Object::test(); App\Controller\Home\Index::test();
index.php
<?php
namespace App\Controller\Home;//命名空间,从定义的根目录常量下开始
class Index
{
static function test()
{
echo __METHOD__;
}
}
Object.php
<?php
namespace IMooc;//命名空间,从定义的根目录常量下开始
class Object
{
static function test()
{
echo __METHOD__;
}
}
Loader.php
<?php
namespace IMooc;
class Loader
{
static function autoload($class)
{
//var_dump($class);exit; IMooc\Object
$file = BASEDIR.'/'.str_replace('\\','/',$class).'.php';
//$file = BASEDIR.'/'.$class.'.php';
//var_dump($file);
require $file;
}
}
相关文章推荐
- 一个简单的php restful 框架 slim framework
- php实现的一个简单json rpc框架实例
- 刚才安装了一下php运行环境及简单的部署了一个thinkphp的项目框架
- 一个php简单的框架实现,仅实现了简单路由层
- 我自己用PHP写的一个极简单的 HTML 框架。
- php实现的一个简单json rpc框架实例
- 一个简单的开源PHP爬虫框架『Phpfetcher』
- PSR-0规范的一个简单例子实践
- 怎样开发一个满足 psr-4 规范的php 类库
- 一个简单的开源PHP爬虫框架『Phpfetcher』
- php应该遵循什么样的编码规范?PHP符合PSR编程规范示例
- php应该遵循什么样的编码规范?PHP符合PSR编程规范示例
- 一个自己开发的简单,快速,方便,小巧的php web框架
- 一个简单的开源PHP爬虫框架『Phpfetcher』
- PHP符合PSR编程规范的实例分享
- php简单测试slim框架的功能
- Python之构建一个简单的web.py框架的服务器
- aop框架的一个简单实现
- PHP on Windows Azure 入门教学系列(2) ——利用SQL Azure做一个简单的访问计数器