在swoole中制作一款仿制laravel的框架
发布日期:2021-05-09 09:32:34 浏览次数:25 分类:博客文章

本文共 4032 字,大约阅读时间需要 13 分钟。

������������������������������������������������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������������������������������������������������������������������������������������������������������

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);    }    }

���������������������������������������������������������������������

start_ws();
上一篇:Qt4K高分屏自适应,解决字体没有跟随组件增大的问题
下一篇:std::async的使用总结

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年04月23日 16时06分09秒