您是否需要Composer用于异步PHP和HTTP服务器(例如ReactPHP或Swoole)?

时间:2019-04-30 11:27:30

标签: php reactphp swoole

据我了解,Composer用于通过PHP提供的SPL函数自动加载类,或者至少注册不存在该类时要调用的方法。然后必须在每次请求使用Laravel或CakePHP进行传统设置时发生这种情况。

我的问题是,在您可以自由地预先加载所有内容的Swoole HTTP Server情况下,Composer将如何工作?在这种情况下甚至需要Composer吗?

基本的Swoole HTTP PHP服务器如下:

<?php

// Load all your classes and files here?

$http = new swoole_http_server("127.0.0.1", 9501);

$http->on("start", function ($server) {
    echo "Swoole http server is started at http://127.0.0.1:9501\n";
});

$http->on("request", function ($request, $response) {
    $response->header("Content-Type", "text/plain");
    $response->end("Hello World\n");
});

$http->start();

因此,我可以事先加载所有内容,而不必担心必须调用任何自动加载脚本吗?

所有类都将位于全局范围内,因此,所有内容均已预先加载并可以在->on("request")函数回调中使用。

1 个答案:

答案 0 :(得分:0)

您可以在Swoole的CLI上下文中使用composer及其自动加载功能。

PHP的执行没有变化,因此自动加载器可以正常工作,只需在相关脚本中包含vendor/autoload.php

<?php

// Autoloader is now up, you can use new Your/Class;
require_once('vendor/autoload.php'); 

$http = new swoole_http_server("127.0.0.1", 9501);

$http->on("start", function ($server) {
    echo "Swoole http server is started at http://127.0.0.1:9501\n";
});

$http->on("request", function ($request, $response) {
    $response->header("Content-Type", "text/plain");
    $response->end("Hello World\n");
});

$http->start();

免责声明:我将swoole与Laravel,Lumen和自定义解决方案(CLI和fastcgi)/ web结合使用,它的效果很好,并且在这种情况下使用PHP的方式也没有任何改变。