• Stars
    star
    107
  • Rank 323,587 (Top 7 %)
  • Language
    PHP
  • License
    MIT License
  • Created over 9 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A minimal package for working with HTTP statuses.

Httpstatus

Latest Version on Packagist Software License Build Status Build Status Total Downloads

The Httpstatus package provides an easy and convinent way to retrieve the standard status text (english) for any given HTTP status code. You can also get the HTTP status code for any valid status text. Additionally this package provides all status codes as constants, to use for a better readability of your code (HTTP_OK is just much easier to understand than 200).

Install

Via Composer

$ composer require lukasoppermann/http-status

Usage

$Httpstatus = new Lukasoppermann\Httpstatus\Httpstatus();

// (optional) specify language, default: en
$Httpstatus->setLanguage('en'); // Currently supported: en, fr

// get status text from code
echo $Httpstatus->getReasonPhrase(301); // Moved Permanently

// get the status code by text
echo $Httpstatus->getStatusCode('Method Not Allowed'); // 405

// check if status code exists
echo $Httpstatus->hasStatusCode(404); // true
echo $Httpstatus->hasStatusCode(601); // false

// check if reason phrase exists
echo $Httpstatus->hasReasonPhrase('Method Not Allowed'); // true
echo $Httpstatus->hasReasonPhrase('Does not exist'); // false

// determine the type (or "class") of the code
echo $Httpstatus->getResponseClass(503); // Httpstatus::CLASS_SERVER_ERROR

This package provides an interface with all status codes as constanst for your convenience. When developing a class that deals with HTTP status codes, simply implement the interface and start using constants instead of magic numbers for more readable and understandable code.

use Lukasoppermann\Httpstatus\Httpstatuscodes;

class Response implements Httpstatuscodes{

  public function someMethod(){
      // ... some logic
      return respond(self::HTTP_CREATED, $json);
  }

}

It is also possible to directly use a constant from the Interface if you so desire.

use Lukasoppermann\Httpstatus\Httpstatuscodes as Status;

class UserTest{

  public function test_create_new_user(){
      $this->assertEquals(Status::HTTP_CREATED, $response->status());
  }

}

Configure

If you want to localize status texts, you can supply an array when initiating the class. You may overwrite all or just some codes. A reason phrase has to be unique and may only be used for one status code.

// add custom texts
$Httpstatus = new Lukasoppermann\Httpstatus\Httpstatus([
    200 => 'Kein Inhalt',
    404 => 'Nicht gefunden',
]);

HTTP status code classes (from RFC7231)

The first digit of the status-code defines the class of response. The last two digits do not have any categorization role. There are five values for the first digit:

Digit Category Meaning
1xx Informational The request was received, continuing process
2xx Successful The request was successfully received, understood, and accepted
3xx Redirection Further action needs to be taken in order to complete the request
4xx Client Error The request contains bad syntax or cannot be fulfilled
5xx Server Error The server failed to fulfill an apparently valid request

Available HTTP status codes

Code Message RFC
100 Continue [RFC7231, Section 6.2.1]
101 Switching Protocols [RFC7231, Section 6.2.2]
102 Processing [RFC2518]
103-199 Unassigned
200 OK [RFC7231, Section 6.3.1]
201 Created [RFC7231, Section 6.3.2]
202 Accepted [RFC7231, Section 6.3.3]
203 Non-Authoritative Information [RFC7231, Section 6.3.4]
204 No Content [RFC7231, Section 6.3.5]
205 Reset Content [RFC7231, Section 6.3.6]
206 Partial Content [RFC7233, Section 4.1]
207 Multi-Status [RFC4918]
208 Already Reported [RFC5842]
209-225 Unassigned
226 IM Used [RFC3229]
227-299 Unassigned
300 Multiple Choices [RFC7231, Section 6.4.1]
301 Moved Permanently [RFC7231, Section 6.4.2]
302 Found [RFC7231, Section 6.4.3]
303 See Other [RFC7231, Section 6.4.4]
304 Not Modified [RFC7232, Section 4.1]
305 Use Proxy [RFC7231, Section 6.4.5]
306 (Unused) [RFC7231, Section 6.4.6]
307 Temporary Redirect [RFC7231, Section 6.4.7]
308 Permanent Redirect [RFC7538]
309-399 Unassigned
400 Bad Request [RFC7231, Section 6.5.1]
401 Unauthorized [RFC7235, Section 3.1]
402 Payment Required [RFC7231, Section 6.5.2]
403 Forbidden [RFC7231, Section 6.5.3]
404 Not Found [RFC7231, Section 6.5.4]
405 Method Not Allowed [RFC7231, Section 6.5.5]
406 Not Acceptable [RFC7231, Section 6.5.6]
407 Proxy Authentication Required [RFC7235, Section 3.2]
408 Request Timeout [RFC7231, Section 6.5.7]
409 Conflict [RFC7231, Section 6.5.8]
410 Gone [RFC7231, Section 6.5.9]
411 Length Required [RFC7231, Section 6.5.10]
412 Precondition Failed [RFC7232, Section 4.2]
413 Payload Too Large [RFC7231, Section 6.5.11]
414 URI Too Long [RFC7231, Section 6.5.12]
415 Unsupported Media Type [RFC7231, Section 6.5.13]
416 Range Not Satisfiable [RFC7233, Section 4.4]
417 Expectation Failed [RFC7231, Section 6.5.14]
418 I'm a teapot [RFC2324, Section 2.3.2]
419-420 Unassigned
421 Misdirected Request [RFC7540, Section 9.1.2]
422 Unprocessable Entity [RFC4918]
423 Locked [RFC4918]
424 Failed Dependency [RFC4918]
425 Too Early [RFC8740, Section 5.2]
426 Upgrade Required [RFC7231, Section 6.5.15]
427 Unassigned
428 Precondition Required [RFC6585]
429 Too Many Requests [RFC6585]
430 Unassigned
431 Request Header Fields Too Large [RFC6585]
432-499 Unassigned
500 Internal Server Error [RFC7231, Section 6.6.1]
501 Not Implemented [RFC7231, Section 6.6.2]
502 Bad Gateway [RFC7231, Section 6.6.3]
503 Service Unavailable [RFC7231, Section 6.6.4]
504 Gateway Timeout [RFC7231, Section 6.6.5]
505 HTTP Version Not Supported [RFC7231, Section 6.6.6]
506 Variant Also Negotiates [RFC2295]
507 Insufficient Storage [RFC4918]
508 Loop Detected [RFC5842]
509 Unassigned
510 Not Extended [RFC2774]
511 Network Authentication Required [RFC6585]
512-599 Unassigned

Change log

Please see CHANGELOG for more information what has changed recently.

Testing

$ composer test

Contributing

Please see CONTRIBUTING for details.

Security

If you discover any security related issues, please email [email protected] instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.

More Repositories

1

html5sortable

VanillaJS sortable lists and grids using native HTML5 drag and drop API.
TypeScript
1,617
star
2

design-tokens

🎨 Figma plugin to export design tokens to json in an amazon style dictionary compatible format.
TypeScript
956
star
3

design-token-transformer

Base repo to transform json design tokens from the figma design token plugin via amazon style dictionary.
TypeScript
116
star
4

style-dictionary-utils

Utilities to use in your style dictionary config
TypeScript
34
star
5

browser-preview

🔍 Open a preview of your Sketch artboard in your browser.
HTML
27
star
6

mark

A markdown HTML5 wysiwyg editor.
JavaScript
11
star
7

elevation-scale

Figma plugin to create elevation systems based on functions.
TypeScript
10
star
8

contentful-key-value-editor

A form for editing json data
HTML
9
star
9

articles

Collection of my published articles as backup
6
star
10

mac-setup

The perfect bash setup with installation. You can easily add your own files.
Shell
4
star
11

lukasoppermann

Portfolio website based on next.js
TypeScript
4
star
12

veare-pre-next

Portfolio of Lukas Oppermann — Design Lead from Berlin.
TypeScript
3
star
13

formandsystem-cms

The Form&System cms.
PHP
2
star
14

node-file-rev

Simple node cli tool to revision files and write them to a manifest.json
JavaScript
2
star
15

figma-design-token-importer

Import a design token json file into Figma
TypeScript
2
star
16

language-mplus

Mplus language package for the atom editor
CoffeeScript
2
star
17

engine

A paste in place selector wrapper/engine
JavaScript
1
star
18

figmaWebhook

1
star
19

hourglass

The ultimate timing app.
Objective-C
1
star
20

formandsystem-api

The Form&System api.
PHP
1
star
21

figma-plugin-design-presets

Design presets for figma plugins with light & dark mode.
1
star
22

proxy

Nginx Proxy for Docker
Shell
1
star
23

m.veare

a quick and dirty small little mobile version of veare for the time being
1
star