edmondscommerce / mock-server
...
Requires
- php: ~7.1
- ext-fileinfo: *
- symfony/http-foundation: ~4
- symfony/routing: ~4
Requires (Dev)
- edmondscommerce/phpqa: ^2.0
- guzzlehttp/guzzle: ~6
- phpstan/phpstan-phpunit: ^0.10.0
This package is auto-updated.
Last update: 2024-09-22 23:12:11 UTC
README
由 Edmonds Commerce 提供
安装
PHP 7.0
通过 composer 安装
composer require edmondscommerce/mock-server:~1 --dev
PHP 7.1+
通过 composer 安装
composer require edmondscommerce/mock-server:~2 --dev
使用方法
要启动网络服务器,您需要实例化 \EdmondsCommerce\MockServer\MockServer
并调用 startServer
<?php $mockServer=\EdmondsCommerce\MockServer\Factory::getMockServer(); $mockServer->startServer();
配置
当使用工厂时,MockServer 的配置将从 MockServerConfig
中获取,该配置将检查 $_SERVER
超全局变量的值 - 通常包含从您的环境中导出的任何内容。
默认值相当合理。基于项目根目录,默认配置期望您有一个 tests
文件夹,该文件夹包含一个 MockServer
文件夹。在 MockServer 文件夹中,我们期望有一个 router.php
文件和一个包含要直接服务的静态资源的 htdocs
文件夹。
注意 - 这正是在此库中配置的方式。
路由器
基本路由器设置的一个示例可以在 router.php 中找到
路由器文件应包含一个 \EdmondsCommerce\MockServer\StaticRouter
的实例,该实例是围绕 Symfony 路由类的包装器。该文件应在注册不同 URI 的路由之前加载 Composer 自动加载器并创建静态路由器。
路由器支持静态文件路由、回调路由和文本路由。
注意 - 有助于的包含文件 routerTop.php 和 routerBottom.php,这些文件为您处理了一些基本的模板。
模板
以下是一个模板路由器,您可以从中开始
<?php declare(strict_types=1); require __DIR__.'/../../vendor/edmondscommerce/mock-server/src/include/routerTop.php'; $router = \EdmondsCommerce\MockServer\Factory::getStaticRouter(); //Add your routes here /** * IMPORTANT - you have to `return` the required routerBottom */ return require __DIR__.'/../../vendor/edmondscommerce/mock-server/src/include/routerBottom.php';
手动启动服务器
要手动启动服务器,您可以使用 start-mock-server,它将启动一个后台模拟服务器。如果想在前台运行,只需传递“foreground”作为参数
./bin/start-mock-server foreground
如果您想服务器监听特定的 IP 地址,可以通过导出一个配置变量来实现
export MockServer_Ip="0.0.0.0"
路由器类型
静态文件(css/js/html 等...)
位于 htdocs 文件夹中的静态文件将不进行任何进一步配置即可提供服务
有关支持的文件类型完整列表,请参阅: StaticRouter::STATIC_EXTENSIONS_SUPPORTED
回调
回调路由设置一个闭包,该闭包将传递请求对象并必须返回一个响应对象。
请参阅 此测试 以获取回调示例。
文件下载
下载路由器将返回一个文件以供下载。内部它设置一个回调,然后返回一个 BinaryFileResponse 对象
静态文本
addRoute($uri, $response)
的第二个参数是在访问指定的 URI 后返回的文本。
请参考此测试以了解文本路由的示例。
静态
addStaticRuote($uri, $response)
的第二个参数是访问指定URI后将返回的文件内容。
不要用这个方法返回位于htdocs文件夹中的文件,这是没有意义的。这主要是为了保持向后兼容而保留的。