PSR-0规范
1.命名空间必须与绝对路径一致
2.类名首字母必须大写
3.除入口文件外,其他的'.php'必须只有一个类
开发符合PSR-0规范的基础框架
1.全部使用命名空间
2.所有php文件必须使用自动载入,不能有include/require
3.单一入口
根目录下新建index.php文件,代码如下
<?php
define('BASEDIR',__DIR__);
include BASEDIR.'/Config/Loader.php';
spl_autoload_register('\\Config\\Loader::autoload');
IMooc\Object::test();
App\Controller\Home\Index::test();
?>
新建Config/Object.php
<?php
namespace Config;
class Object{
static function test(){
//echo "this is IMooc Object 方法";
}
}
?>
新建Config/Loader.php
<?php
namespace Config;
class Loader{
static function autoload($class){
require BASEDIR.'/'.str_replace('\\','/',$class).'.php';
}
}
?>
新建App/Home/Index.php
<?php
namespace App\Controller\Home;
class Index{
static function test(){
echo "this is home php ";
//echo __METHOD__;
}
}
?>
工厂模式
工厂方法或者类生成对象 而不是在代码中直接new
新建Config/Factory.php
<?php
namespace Config;
class Factory{
static function createDatabase(){
//$db = new Database;
$db = Database::getInstance();
Register::set('db1',$db);
return $db;
}
}
?>
index.php调用
$db = Config\Factory::createDatabase();
单例模式
使某个类的对象仅允许创建一个
新建Config/Database.php
<?php
namespace Config;
class Database{
protected static $db;
private function __construct(){}
public static function getInstance(){
if(self::$db){
return self::$db;
}else{
self::$db = new self();
}
}
function where($where){
return $this;
}
function order($order){
return $this;
}
function limit($limit){
return $this;
}
function test(){
echo 1;
}
}
?>
index.php调用
$db = Config\Database::getInstance();
$db = Config\Database::getInstance();
$db = Config\Database::getInstance();
$db->test();
注册模式
全局共享和交换对象
新建Config/Register.php
<?php
namespace Config;
class Register{
protected static $objects;
function set($alias,$object){
self::$objects[$alias] = $object;
}
function get($name){
return self::$objects[$name];
}
function _unset(){
unset(self::$objects[$alias]);
}
}
已有 0 条评论