码迷,mamicode.com
首页 > Web开发 > 详细

PHP 设计模式 笔记与总结(2)开发 PSR-0 的基础框架

时间:2015-04-08 22:56:51      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:

【PSR-0 规范的三项约定】:

① 命名空间必须与绝对路径一致

② 类名的首字母必须大写

③ 除入口文件外,其他".php"必须只有一个类(不能有可执行的代码)

 

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

① 全部使用命名空间

② 所有 PHP 文件必须自动载入,不能有 include/require

③ 单一入口

初始目录:

技术分享

其中

index.php 入口文件

App 放置所有和业务逻辑相关的代码

Public 放置公共类文件(貌似 Public 会引起冲突,所以文件夹改名为 Common)

然后在项目文件夹下添加几个文件:

技术分享

其中 Common/Loader.php 实现文件的自动载入功能,代码如下:

<?php
/*
    实现文件自动载入功能
 */
namespace Common;

class Loader{
    static function autoload($class){
        //var_dump($class);//string ‘Common\Object‘ (length=13)
        //$file = BASEDIR.‘/‘.str_replace(‘\\‘, ‘/‘, $class).‘.php‘;
        //var_dump($file);//string ‘D:\practise\php\design\psr0/Common/Object.php‘ (length=45)
        
        require BASEDIR.‘/‘.str_replace(‘\\‘, ‘/‘, $class).‘.php‘;
    }
}

Common/Object.php :

<?php
namespace Common;

class Object{
    static function test(){
        echo __METHOD__,‘<br>‘;
    }
}
//除了Object类之外,不得有任何可执行的语句

App/Controller/Home/Index.php:

<?php
namespace App\Controller\Home;

class Index{
    static function test(){
        echo __METHOD__,‘<br>‘;
    }
}

运行入口文件 index.php,则会自动加载 App/Controller/Home/Index.php 和 Common/Object.php

<?php
define(‘BASEDIR‘,__DIR__); //定义根目录常量
include BASEDIR.‘/Common/Loader.php‘;
spl_autoload_register(‘\\Common\\Loader::autoload‘); //把autoload 注册到php 的自动载入里

Common\Object::test();
App\Controller\Home\Index::test();

页面输出:

Common\Object::test
App\Controller\Home\Index::test

 

PHP 设计模式 笔记与总结(2)开发 PSR-0 的基础框架

标签:

原文地址:http://www.cnblogs.com/dee0912/p/4403933.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!