利用composer搭建PHP框架。
1.安装composer
安装方法:参考官网 http://docs.phpcomposer.com/00-intro.html#Installation-Windows
安装完毕命令行输出 composer -V 显示版本信息则表示安装成功。
安装方法或者参考:http://blog.csdn.net/mxdzchallpp/article/details/50592577
2.初始化composer项目
创建自己的项目目录,我的是D:\WAMP\wamp\www\framework
在D:\WAMP\wamp\www\framework下创建composer.json,输入文件内容:
在D:\WAMP\wamp\www\framework下创建composer.json,输入文件内容:
{
"require":{
}
}
// 命令行进入D:\WAMP\wamp\www\framework
cd D:\WAMP\wamp\www\framework
// 初始化composer项目
composer install
// 执行完毕生成 vendor文件夹 初始化成功
3.开始构造框架代码
新建index.php,内容:
<?php
// 定义根目录路径
define('ROOT_PATH', __DIR__);
// 定义框架目录路径
define('FRAME_PATH', __DIR__ . '/frame/');
// 调用框架入口
require FRAME_PATH . 'start.php';
新建frame文件夹,在frame文件夹下新建start.php,内容:
<?php
// 引入框架自动加载类
require FRAME_PATH . 'FrameAutoLoad.php';
// 注册自动加载方法
spl_autoload_register(array('FrameAutoLoad', 'autoload'));
// 启动框架方法
App::run();
在frame文件夹下新建FrameAutoLoad.php,内容:
<?php
class FrameAutoLoad {
/* 自动加载类 */
public static function autoload($class) {
$path = FRAME_PATH . $class . '.php';
if(file_exists($path)) {
require $path;
return ;
}
}
}
框架代码入口首先就是路由解析,这里我们用到slim,中文文档:https://wizardforcel.gitbooks.io/slim3-doc/content/index.html
使用composer安装,编辑composer.json,修改为:
{
"require":{
"slim/slim": "3.9.0"
}
}
或者不指定版本:
{
"require":{
"slim/slim": "*"
}
}
在命令行输入 composer update 获取或者下载依赖包:(注意 需要在D:\WAMP\wamp\www\framework目录下,即对应的composer.json的位置)
composer update
执行完毕,在D:\WAMP\wamp\www\framework\vendor下看到已经安装的slim文件夹
在frame文件夹下新建App.php,内容:
<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
// 载入composer自动加载
require ROOT_PATH . '/vendor/autoload.php';
class App {
public static function run() {
// 启用 slim路由
$configuration = [
'settings' => [
'displayErrorDetails' => true, // 开启错误信息
],
];
$c = new \Slim\Container($configuration);
$app = new \Slim\App($c);
$app->get('/', function (Request $request, Response $response, array $args) {
echo '11111';
});
$app->run(); // 启动路由配置
}
}
浏览器输入 http://127.0.0.1/framework/index.php/ 显示11111则表示路由配置成功