栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP

SWOOLE 从入门到放弃之写个小框架(十)

PHP 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SWOOLE 从入门到放弃之写个小框架(十)

接下来该写什么呢,改造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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/228628.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号