本次代码符合PHP规范PRS_0,根目录下新建一个Frame的目录(核心目录),建立APP目录(项目目录),统一访问入口文件index.php,建立类文件Loader.php(用于自动加载类)
index.php 公共部分
define('BASEDIR',__DIR__);
include BASEDIR.'/Frame/Loader.php';
spl_autoload_register('\\Frame\\Loader::autoload');
Loader.php
<?php
namespace Frame;
class Loader
{
static function autoload($class)
{
require BASEDIR.'/'.str_replace('\\','/',$class).'.php';
}
}
工厂模式
- 我们先看一段通常情况下代码:
- 例如我们新建一个操作数据库DataBase.php的类,当程序中有大量地方调用时,我们想修改类名字或者加一些参数就会很麻烦而且浪费时间,需要修改所有调用DataBase类的地方,也有可能漏改造成错误,
<?php
namespace Frame;
//数据库操作
class Database
{
public function __construct()
{
//连接数据库......
}
}
index.php中调用
<?php
define('BASEDIR',__DIR__);
include BASEDIR.'/Frame/Loader.php';
spl_autoload_register('\\Frame\\Loader::autoload');
new \Frame\Database();
- 工厂模式代码新建Factory.php,这样的话如果增加参数或者修改类名只需要修改Factory.php即可。
<?php
namespace Frame;
class Factory
{
static public function createDatabase()
{
$db = new \Frame\Database();
return $db;
}
}
index.php中调用
<?php
define('BASEDIR',__DIR__);
include BASEDIR.'/Frame/Loader.php';
spl_autoload_register('\\Frame\\Loader::autoload');
\Frame\Factory::createDatabase();
2 comments
工厂模式,工厂方法或者类生成对象,而不是在代码中直接new
观摩一波|??ω?)ノ