edmondscommerce/mock-server

v2.0.4 2018-11-20 17:05 UTC

This package is auto-updated.

Last update: 2024-09-22 23:12:11 UTC


README

Edmonds Commerce 提供

Codacy Badge Build Status Scrutinizer Code Quality Code Coverage

安装

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.phprouterBottom.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文件夹中的文件,这是没有意义的。这主要是为了保持向后兼容而保留的。