返回顶部
首页 > 资讯 > 精选 >如何在swoole中制作一款仿制laravel的框架
  • 224
分享到

如何在swoole中制作一款仿制laravel的框架

2023-06-14 05:06:11 224人浏览 泡泡鱼
摘要

这篇文章将为大家详细讲解有关如何在swoole中制作一款仿制laravel的框架,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。首先需要确定一下思路:我希望基于swoole的扩展开发的代码在run起来的时候

这篇文章将为大家详细讲解有关如何在swoole中制作一款仿制laravel的框架,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

首先需要确定一下思路:我希望基于swoole的扩展开发的代码在run起来的时候,在接收到ws或是tcp等消息时,自动路由到某个类上,同时类可以实现加载类的依赖注入功能。目前市面上占据主流的一款框架Laravel,其中有一个依赖注入的功能非常的便捷。一般在通常的框架中拉取Class是这样做的:

class a {  public $bClassInstance;  public function __construct(Class b) {    $classInstance = new b();  }  public function doSth() {    return $this->bClassInstance->xxx();  }}$b = new b();$a = new a($b)$a->doSth();

而在Laravel中则可以省略一些实例化的步骤, 直接通过类型约束的语法在方法的形参上指定某类的命名空间就自动实例化该类进来了。

class a {  public function doSth(b $b) {    return $b->xxx();  }}

想要实现这一点,必须要了解PHP反射机制。反射是一个比较冷门的类,他可以做到:使用namespace实例化一个类、调用类的方法等,利用这一点,可以构造一个自动装箱的类。

<?phpnamespace App\Server;class Container{  public $config;  public $reflection;  public function __construct($namespace)  {    try    {      $this->reflection = new \ReflectionClass($namespace);    }    catch (Exception $e)    {      echo $namespace;    }  }  public function builderController($fn, $server, $frame, $userMessage)  {    //从route中得到的control名称    $this->reflection->getMethod($fn)->invoke($this->autoBuilder(), $server, $frame, $userMessage);  }  public function builderTask($fn, $server, $userMessage)  {    $this->reflection->getMethod($fn)->invoke($this->autoBuilder(), $server, $userMessage);  }  public function autoBuilder()  {    #对构造函数赋值    return $this->batchInstantiation($this->getPrototypeController($this->reflection)#获得字串    );  }  protected final function getPrototypeController(\ReflectionClass $object)  {    $prototype = false;    //批量从反射类中获取原型字串    foreach ($object->getConstructor()->getParameters() as $parameter)    {      $prototype[] = $parameter->getClass()->name;    }    return $prototype ?: [];  }  protected final function batchInstantiation(array $prototypeArr)  {    foreach ($prototypeArr as $item)    {      $container = new container($item);      $insArr[] = $container->autoBuilder();//进行递归注入    }    return empty($prototypeArr) ? $this->reflection->newInstance() : $this->reflection->newInstanceArgs($insArr);  }}

有了这个简易的装箱类后,可以着手实现类的路由功能,我们首先创建composer.JSON,键入如下内容。

{  "require": {   },  "autoload": {    "psr-4": {    "App\\": "App/"    }  }}

下一步,我们需要创建一个处理路由的类,这个类在常规的框架中,一般用来映射Http请求到对应的类的函数上,而在swoole里,请求会来自长连接。那么在route类中则需要做相应的处理。

class Route{  public $websocketServer;  public $model;  public $cache;  public function __construct() {    $this->WEBSocketServer = new \swoole_websocket_server("0.0.0.0", "8002");  }  public function start_ws() {    // 这里设置一些swoole的参数 ...    // 最后执行启动swoole    $this->websocketServer->start();  }    public function ws_onMessage(\swoole_websocket_server $server, $frame)  {    $userMessage = $this->filter_arr(json_decode($frame->data, true));    if (!$userMessage) {      return false;    }        if (!$userMessage['type'] || !$userMessage['action']) {      return $this->call_shell("Type or action not found! ");    }    //使用依赖注入容器做伪路由    $App = new Container('\App\Controller\\'.$userMessage['type']);    return $App->builderController($userMessage['action'], $server, $frame,$userMessage);  }  }

最后一步,创建一个入口文件,引导路由类的执行。

<?phprequire "vendor/autoload.php";use App\Server\Route;$App = new Route();$App->start_ws();

关于“如何在swoole中制作一款仿制laravel的框架”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: 如何在swoole中制作一款仿制laravel的框架

本文链接: https://lsjlt.com/news/268079.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何在swoole中制作一款仿制laravel的框架
    这篇文章将为大家详细讲解有关如何在swoole中制作一款仿制laravel的框架,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。首先需要确定一下思路:我希望基于swoole的扩展开发的代码在run起来的时候...
    99+
    2023-06-14
  • 在swoole中制作一款仿制laravel的框架的实例代码
    首先需要确定一下思路:我希望基于swoole的扩展开发的代码在run起来的时候,在接收到ws或是tcp等消息时,自动路由到某个类上,同时类可以实现加载类的依赖注入功能。目前市面上占据...
    99+
    2024-04-02
  • Frontpage如何制作网页框架
    这篇文章给大家分享的是有关Frontpage如何制作网页框架的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。框架    框架(Frame)在網頁上的應用很普遍 , 因為它可以同時顯示出多個獨立網...
    99+
    2023-06-08
  • 一个酷炫的Android图表制作框架
    一、概述 最近项目中需要制作柱形图以及折线图,所以便在网上搜索了一下这方面的开源框架,最后找到了这个酷炫的框架,不仅支持各种各样的图形制作,包括折线图、柱形图、饼状图等,而且提...
    99+
    2022-06-06
    android图表 框架 Android
  • 【新手教程】如何在Win11上制作一个模仿MacOS的桌面?
    起因是早上蹲坑的时候偶然间在小红书上刷到一篇文章,看了下效果图感觉还不错,所以按照文章作者的流程来了一遍。过程中也遇到了一些小问题,正好放假了有空就写一篇文章记录一下。先放一下效果: 1. 创建下方Dock栏 Dock栏是啥玩意?作为一...
    99+
    2023-08-31
    windows
  • PHP数组在Laravel框架中的作用是什么?
    Laravel是一个非常流行的PHP框架,它以简单易用、灵活性强、可扩展性好等优点受到了广泛的欢迎。PHP数组是Laravel框架中最重要的数据结构之一,它在Laravel框架中扮演着至关重要的角色,本文将从以下三个方面来阐述PHP数组在...
    99+
    2023-08-25
    数组 shell laravel
  • Python并发编程中的同步机制详解:如何应用到Laravel框架中?
    Python并发编程是一种高级编程技术,可以用于提高程序的性能和响应能力。在多线程和多进程编程中,同步机制是非常重要的一部分。本文将详细介绍Python并发编程中的同步机制,并且探讨如何将其应用到Laravel框架中。 一、Python并...
    99+
    2023-09-16
    并发 同步 laravel
  • PHP中使用Laravel框架的索引版本控制技巧
    Laravel是一个流行的PHP框架,它提供了许多强大的功能,其中之一就是索引版本控制。索引版本控制允许我们轻松地管理数据库中的数据版本,以便于数据的备份和恢复。本文将介绍如何在Laravel中使用索引版本控制。 安装Laravel框架...
    99+
    2023-08-08
    索引 laravel git
  • 如何在Laravel框架中处理响应数据?
    Laravel框架是一个流行的PHP框架,它提供了许多有用的功能,其中之一是处理响应数据。在本文中,我们将讨论如何在Laravel框架中处理响应数据。 一、返回字符串数据 在Laravel框架中,你可以通过简单的返回字符串来处理响应数据。这...
    99+
    2023-09-11
    编程算法 laravel 响应
  • 学习如何在Laravel Elixir中运用Gulp框架
    Laravel Elixir是一个较为流行的前端自动化工具集,它基于Gulp,简化了许多以前需要手动进行的任务。但Laravel Elixir的优雅API设计,并不意味着开发人员完全不用了解Gulp的使用。相反,了解Gulp的使...
    99+
    2024-01-22
    laravel Elixir Gulp
  • 如何用Matlab制作一款简单的龙舟小游戏
    今天小编给大家分享一下如何用Matlab制作一款简单的龙舟小游戏的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。效果图:步骤1...
    99+
    2023-06-29
  • ASP重定向是如何在Laravel框架中实现的?
    ASP重定向是指将用户从一个URL地址重定向到另一个URL地址。在Laravel框架中,可以使用Redirect类来实现重定向功能。在本文中,我们将介绍如何在Laravel框架中实现ASP重定向。 使用Redirect类进行重定向 在La...
    99+
    2023-08-24
    重定向 laravel windows
  • 如何在Bash和Java开发中使用Laravel框架?
    Laravel框架是一个流行的PHP框架,它提供了许多有用的功能和工具,使得开发人员可以更加高效地进行Web应用程序的开发。虽然Laravel框架主要用于PHP开发,但是它也可以在Bash和Java开发中使用。在本文中,我们将探讨如何在Ba...
    99+
    2023-06-03
    bash 开发技术 laravel
  • 如何利用Matlab制作一款真正的拼图小游戏
    效果: 简单原理介绍: 1构造0,1矩阵作为每片拼图的透明度,可以构造出不规则形状的拼图(image函数有alphaData属性可以设置) jigsawMask=zeros...
    99+
    2024-04-02
  • 如何在Go语言中使用Laravel框架的响应类?
    Laravel框架是一款非常流行的PHP框架,它提供了许多便捷的功能和工具,可以帮助我们快速构建高质量的Web应用程序。在Laravel框架中,响应类是一个非常重要的概念,它可以帮助我们管理和返回HTTP响应。在本文中,我们将介绍如何在G...
    99+
    2023-09-11
    编程算法 laravel 响应
  • Dreamweaver如何使用框架结构快速制作网页
    这篇文章将为大家详细讲解有关Dreamweaver如何使用框架结构快速制作网页,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。方法如下打开Dreamweaver 软件,设置好站点,建立新文件,类型为HTML...
    99+
    2023-06-08
  • 如何利用Matlab制作一款刮刮乐抽奖特效
    这篇文章给大家分享的是有关如何利用Matlab制作一款刮刮乐抽奖特效的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.效果展示程序运行效果如下:如图所示,按住鼠标不松开并滑动鼠标,即可刮开图层:2.程序原理说明2...
    99+
    2023-06-29
  • Apache 和 Laravel 这两个框架在 Python 面试中有何作用?
    在 Python 面试中,经常会涉及到 Web 开发方面的问题,而 Apache 和 Laravel 作为两个著名的 Web 框架,可以在面试中发挥重要作用。本文将介绍 Apache 和 Laravel 的特点及在 Python 面试中的...
    99+
    2023-06-06
    面试 apache laravel
  • 如何用jquery制作一个带是否的提示框
    今天小编给大家分享一下如何用jquery制作一个带是否的提示框的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、概述在很多网...
    99+
    2023-07-05
  • ASP 文件在 Laravel 框架中的应用:值得一试吗?
    Laravel 是一款流行的 PHP 框架,它以简单、优雅和富有表现力的语法为特点,因此被广泛使用。但是,在 Laravel 框架中,我们也可以使用 ASP 文件来进行开发。ASP 文件是一种 Microsoft 开发的动态网页技术,它使...
    99+
    2023-09-01
    文件 laravel 框架
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作