2017 © Pedro Peláez
 

library psr7-http-message-hhi

Typechecker definitions for PSR-7

image

hack-psr/psr7-http-message-hhi

Typechecker definitions for PSR-7

  • Friday, February 9, 2018
  • by fredemmott
  • Repository
  • 4 Watchers
  • 5 Stars
  • 7,374 Installations
  • Hack
  • 8 Dependents
  • 0 Suggesters
  • 2 Forks
  • 0 Open issues
  • 5 Versions
  • 51 % Grown

The README.md

HHI Definitions For PSR7, HTTP Messages

This repository contains .hhi files for the interfaces defined in PSR-7. It is based on the PHP interface definitions and comments available here:, (*1)

https://github.com/php-fig/http-message, (*2)

HHI files are ignored by HHVM, however they give the typechecker information about the interfaces. This allows usage of the canonical PHP interface at runtime, while also giving the benefits of static type checking., (*3)

Installation

composer require hack-psr/psr7-http-message-hhi

Notes

  • RequestInterface::getRequestTarget() is marked as @return string, however this is not always accurate, given that RequestInterface::withRequestTarget() explicitly allows any type for the request target, which must be preserved verbatim - https://github.com/php-fig/http-message/issues/67
  • ServerRequestInterface::getParsedBody() is specified as returning null|array|object so is typed here as mixed. There has been some discussion about banning the object case as any usage couples you to a specific implementation or stack, which would allow it to be typed as ?array<string,mixed>. This is not done because PHP implementations would not have to honor this type.
  • ServerRequestInterface::getQueryParams() and getUploadedFiles() return untyped arrays as they return a tree-like structure instead of a key-value structure - eg ?a[b][c]=123. They could be typed as array<string,mixed>, however this would make them much more inconvenient to use.
  • The return value of these functions is not defined in PSR7; this project defines them as returning void to prevent users depending on unspecified behavior (https://github.com/php-fig/http-message/issues/68):
    • StreamInterface::seek()
    • StreamInterface::rewind()
    • UploadedFileInterface::moveTo()
  • The combination of these means that the most user-friendly (and safe) hack definition of this interface isn't suitable for use by implementations (see #2)

Future Work

Create a derived standard for Hack, addressing the above notes. Ideas include:, (*4)

  • banning non-string request targets
  • banning object parsed bodies
  • flattening getUploadedFiles, getParsedBody, getQueryParams

This would be a separate project., (*5)

The Versions

09/02 2018

dev-master

9999999-dev https://github.com/fredemmott/psr7-http-message-hhi

Typechecker definitions for PSR-7

  Sources   Download

MIT

The Requires

 

psr psr-7 psr7 hack hhvm http-message hhi

09/02 2018

v1.0.1

1.0.1.0 https://github.com/fredemmott/psr7-http-message-hhi

Typechecker definitions for PSR-7

  Sources   Download

MIT

The Requires

 

psr psr-7 psr7 hack hhvm http-message hhi

22/09 2016

v1.0.0

1.0.0.0 https://github.com/fredemmott/psr7-http-message-hhi

Typechecker definitions for PSR-7

  Sources   Download

MIT

The Requires

 

psr psr-7 psr7 hack hhvm http-message hhi

03/11 2015

v0.2

0.2.0.0 https://github.com/fredemmott/psr7-http-message-hhi

Typechecker definitions for PSR-7

  Sources   Download

MIT

The Requires

 

psr psr-7 psr7 hack hhvm http-message hhi

28/08 2015

v0.1

0.1.0.0 https://github.com/fredemmott/psr7-http-message-hhi

Typechecker definitions for PSR-7

  Sources   Download

MIT

The Requires

 

psr psr-7 psr7 hack hhvm http-message hhi