tbolner/flex-php-io 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

tbolner/flex-php-io

最新稳定版本:1.0.0

Composer 安装命令:

composer require tbolner/flex-php-io

包简介

IO library for web and CLI applications.

README 文档

README

An example of an I/O library. This project shows an alternative to handling output through the router framework. Most router frameworks expect the output to be passed back in the controllers in a "return" statement. Then for example they would convert the array to JSON.

In my opinion that solution becomes too problematic, when changes and new output modes are introduced later on to the project. Routing and IO are better be separated into 2 distinct libraries.

Functions:

  • Help handling output buffering
  • Handy methods to change content type
  • Access HTTP/GET parameters in a type-safe manner.
  • Help with the JSON format (input / output)
Request Response
Request::getPostedJson(): array Response::printJson(array $json, $http_status_code = 200)
Request::getIntParameter(string $paramName): int Response::bufferStart()
Request::getFloatParameter(string $paramName): float Response::bufferEndClean()
Request::getStringParameter(string $paramName): string Response::isBufferEnabled(): bool
Request::getBoolParameter(string $paramName): bool Response::JsonContentType($http_status_code = 200)
Request::isParameterSet(string $paramName): bool Response::HtmlContentType($http_status_code = 200)
Request::getHttpRequestMethod(): string Response::TextContentType($http_status_code = 200)

For everything else, use the built-in functions of PHP.

Recommended IDE: PhpStorm

Packagist page: https://packagist.org/packages/tbolner/flex-php-io

Example usages

<?php declare(strict_types=1);

namespace MyProject;

use FlexPhpIO\Response;


Response::bufferStart();
Response::HtmlContentType();

echo '<html><body><p>Hello World!</p></body></html>';
<?php declare(strict_types=1);

namespace MyProject;

use FlexPhpIO\Request;
use FlexPhpIO\Response;

try {
    Response::bufferStart();

    $input_data = Request::getPostedJson();
    $message = @trim((string)$input_data["message"]);

    if ($message == "") {
        throw new \Exception("Missing or invalid 'message' field in input.");
    }

    Response::printJson([
        "status" => "ok",
        "message" => $message
    ]);

} catch (\Exception $ex) {
    Response::printJson([
        "status" => "error",
        "message" => $ex->getMessage();
    ], 400);
}

An example for using it in a controller of FlexPhpRouter:

  • project1/src/Controller/items.php
<?php declare(strict_types=1);

namespace MyProject\Controller;

use FlexPhpRouter\Router;
use FlexPhpIO\Response;


Router::get(
    "items/{id:int}/info",
    function (int $id) {
        Response::printJson([
            "item_id" => $id
        ]);
    }
);

Notes:

  • When the output buffering is enabled, then you can change the headers any time, even after you have printed some output.
  • When the output buffering is disable, then you cannot change the headers anymore after data was written to the output.
  • In the FlexPhpRouter example, the output buffering should've already been set up in the main initialization file or entry point.

Installation

{
    "require": {
        "tbolner/flex-php-io": "dev-master"
    }
}

Then execute:

composer update

This library requires PHP 7.1 or newer.

统计信息

  • 总下载量: 7.68k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: Apache-2.0
  • 更新时间: 2018-05-05