接下来该写什么呢,改造App.php吧。
首先创建配置文件config/app.php,代码如下
'server',//项目名称
'namespace' => 'app', //项目命名空间
'path' => realpath (__DIR__.'/../app/'), //项目所在路径
'gzip' => 0, //gzip 等级, 请查看 https://wiki.swoole.com/wiki/page/410.html
//server设置
'ip' => '0.0.0.0', //监听IP
'port' => 9527, //监听端口
'server' => 'websocket' , //服务,可选 websocket 默认http
'set'=> [ //配置参数 请查看 https://wiki.swoole.com/wiki/page/274.html
'daemonize' => 0 ,
'enable_static_handler' => TRUE ,
'document_root' => realpath (__DIR__.'/../static/') ,
'worker_num' => 4,
'max_request' => 10000,
'task_worker_num'=> 4,
],
];
修改 frame/base.php,读取config/app.php,向框架注册命名空间和其所在路径 ,增加如下代码
//注册项目命名
PizLoader::addNamespace (config('app.namespace'),config('app.path'));
修改frame/Lib/App.php ,修改后的代码如下
server['request_uri'] == '/favicon.ico') return ;
$req = Request::get_instance ();
$req->set($request);
$router = Router::get_instance ()->http($req->server['request_uri']);
$app_namespace = Config::get_instance ()->get('app.namespace');
$module = $router['m'] ;
$controller = $router['c'] ;
$action = $router['a'] ;
$param = $router['p'] ;
$classname = "\{$app_namespace}\modules\{$module}\{$controller}" ;
if(!isset(self::$map[$classname])){
$class = new $classname ;
self::$map[$classname] = $class;
}
try{
//测试效果
if(!empty(ob_get_contents ())) ob_end_clean ();
ob_start();
self::$map[$classname]->$action($param);
$content = ob_get_contents();
ob_end_clean();
$response->end($content);
}catch(Exception $e){ //在此处返回 404错误的原因是因为加载器已经在查找不到文件时有说错误说明
$response->header('Content-type',"text/html;charset=utf-8;");
$response->status(404);
$response->end('404 NOT FOUND');
return ;
}
}
}
App->http方法增加了一个参数$server,所以frame/Lib/Server.php的onRequest方法也要同时修改,修改后的代码如下
public function onRequest($request,$response){
App::get_instance()->http ($this->server,$request,$response);
}
创建项目文件app/modules/index/index.php,代码如下
';
echo __CLASS__;
}
}
运行效果如下图
今天就写到这了,累了。明天开始修改frame/Lib/Server.php



