为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
PHP

再继续。
大家看到了,我的App.php文件是用了单例模式。这么做有一个好处就是不会被大量的实例化,能节省内存。也是为了能满足我之前立的FLAG。

继续撸代码

我希望尽可能少的用全局变量,比如$_GET,$_POST之类的。反正SWOOLE已经提供了很好的方法,为什么不用它呢,咱们接下来先搞搞$request。
创建文件 frame/Lib/Request.php,贴

<?php
namespace Piz;
class Request
{
    /**
     * 对象实例
     * @var object
     */
    private static $instance;
    /**
     * 为了防止在请求的过程发生一些不愉快事情,全给它private
     * @var array
     */
    private $server;
    private $header;
    private $request;
    private $post;
    private $get;
    private $cookie;
    private $files;
    private $tmpfiles;
    private $rawContent;
    private $getData;

    private function __construct (){}

    public static function get_instance(){
        if(is_null (self::$instance)){
            self::$instance = new self();
        }
        return self::$instance;
    }
    //先拿到$request,然后挨个给它变身
    public function set($request){
        $this->server       = $request->server;
        $this->header       = $request->header;
        $this->tmpfiles     = $request->tmpfiles;
        $this->request      = $request->request ;
        $this->cookie       = $request->cookie ;
        $this->get          = $request->get ;
        $this->files        = $request->files ;
        $this->post         = $request->post ;
        $this->rawContent   = $request->rawContent();
        $this->getData      = $request->getData();
    }
    /*
    // 以上变身方法也可以用魔术方法,我写了,可就是不想用它。
    public function __set($name,$value){
        $this->$name = $value;
    }
    */
    //变身后它就不是废物了,那就得让小伙伴们能使用它,这里使用了这么一个魔术方法。
    public function __get($name){
        return $this->$name;
    }
}

试一下它好不好使。直接改frame/Lib/App.php代码

public function http($request,$response){
        $req = Request::get_instance ();
        $req->set($request);
        $response->end(var_export ($req->server,TRUE));
    }

运行start.php, 浏览器查看
图片描述

很无奈,它成功了。。

Request类也是用了单例模式,在这里说一下,用单例模式的目的就是希望在后续的开发中,可以很少限制的随便调用。并且,后续的框架开发中,我会尽可能的用单例模式,没别的原因,就是需要。

点击查看更多内容
3人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
PHP开发工程师
手记
粉丝
77
获赞与收藏
47

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消