基于workerman做最简单的访问route实现简单的mvc框架之二(原创)

46 篇文章 0 订阅
15 篇文章 0 订阅

接上篇。

继续改进代码。

在views下创建目录user

里面增加一个文件 go.html,内容如下:

<html>
<body>
code:<?php echo $code?>
<hr>
</body>

控制器中文件增加user2.php

<?php
class user2{
    function index($request){
        $depts=array("code"=>200,"msg"=>"index success!");
        //echo json_encode($depts);
        return ($depts);
    }
    function go($request){
        $depts=array("code"=>200,"msg"=>"module user go success!","module"=>$request->sessionId(),"aaa"=>$request->session()->get("aaa"),"get"=>$request->get("a"));
        //echo json_encode($depts);
        return mvc_display($depts,"app","user","go");
    }
}
mvc_display位于主文件http_route_view.php中,调用方法类似,内容如下:

<?php
chdir(dirname(__FILE__));//先切换到正确的目录
include("../inc/para.php");
//include("pdo_conn.php");include("pdo_conn_init.php");
require_once("vendor/autoload.php");
use Workerman\Worker;
use Workerman\Protocols\Http\Response;
//require_once './Workerman/Autoloader.php';
define('APPPATH',__dir__."/");
function mvc_display($data_arr=array(),$M="app",$C,$A){
    if(is_array($data_arr))
    foreach($data_arr as $k=>$v){
        $$k=$v;
    }
    $ph=APPPATH."app/views/".$C."/".$A.".html";
    ob_start();
    include($ph);
    $content=ob_get_contents();
    @ob_end_clean();
    return $content;
}
//include("mvccore/core.php");
$worker = new Worker('http://0.0.0.0:8888');
$i=0;
$worker->onMessage = function($connection, $request)
{
    global $i;
    $i++;
    $mvc_urls=explode("/",$request->path());

    $mvc_len=count($mvc_urls);
    $c="app";
    $a="index";
    if($mvc_len>1){
        if($mvc_len==2&&!empty($mvc_urls[0])){$c=!empty($mvc_urls[0])?$mvc_urls[0]:"app";$a=!empty($mvc_urls[1])?$mvc_urls[0]:"index";}
        if($mvc_len==3&&empty($mvc_urls[0])){$c=!empty($mvc_urls[1])?$mvc_urls[1]:"app";$a=!empty($mvc_urls[2])?$mvc_urls[2]:"index";}
        $request->session()->set("aaa",2222);
        if(file_exists("app/controllers/".$c.".php")){
        include_once("app/controllers/".$c.".php");
        $cls=new $c();
        if(method_exists($c,$a)){
                $return=$cls->$a($request);
                if(file_exists("app/views/".$c."/".$a.".html"))
            $response = new Response(200, [
                'Content-Type' => 'text/html',
                'X-Header-One' => 'Header Value'
                ], $return);
            else
            $response = new Response(200, [
                'Content-Type' => 'text/json',
                'X-Header-One' => 'Header Value'
                ], json_encode($return));
            $connection->send($response);
            }
            else
            {
                $response = new Response(404, [
                'Content-Type' => 'text/html',
                'X-Header-One' => 'Header Value'
                ], "module:".$c." action:".$a." 404 can't found!");
                
            $connection->send($response);
            }
        }else
        {
            $response = new Response(404, [
                'Content-Type' => 'text/html',
                'X-Header-One' => 'Header Value'
                ], "module file not found 404 error!");
                
            $connection->send($response);
        }
    }else
    {
        print_r($mvc_urls);
        $response = new Response(404, [
                'Content-Type' => 'text/html',
                'X-Header-One' => 'Header Value'
                ], "module not found mvc_len error!");
            $connection->send($response);
    }

};

// 运行worker
Worker::runAll();

即可实现访问 

访问地址:http://localhost:8888/user2/go

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lwprain

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值