前のページ

PHPの$_SERVERの役割についてのアウトプット

みなさんこんにちは、あべ いさぢです。

現在個人開発をしているのですがフロントにreactを使ってバックエンドにPHPを使っている時にアウトプットしないといけなくなったのでこの記事を残します。


使用するコード

下記とします。

<?php
declare(strict_types=1);

session_start();

require_once __DIR__ . '/../src/database.php';
require_once __DIR__ . '/../src/http.php';

try {
    $pdo = getPdo();

    $method = $_SERVER['REQUEST_METHOD'];

    $path = parse_url(
        $_SERVER['REQUEST_URI'],
        PHP_URL_PATH
    );

    // ユーザー登録
    if ($method === 'POST' && $path === '/api/register') {
        require __DIR__ . '/../src/api/register.php';

        exit;
    }
} catch (Throwable $e) {
    jsonResponse(
        [
            'message' => 'サーバーエラーが発生しました'
        ],
        500
    );
}

下記のコードについてのアウトプットです。

$method = $_SERVER['REQUEST_METHOD'];

$path = parse_url(
    $_SERVER['REQUEST_URI'],
    PHP_URL_PATH
);


コードの意味

「$_SERVER」はPHPに用意された変数でブラウザやReactなどからアクセスされたときの情報が入っています。

例えば下記はGET・POST・PUT・DELETEなどのHTTPメソッドが入っています。

$_SERVER['REQUEST_METHOD']

下記にはアクセスされたURLの「パス部分」が入ります。

$_SERVER['REQUEST_URI']

例えばReactなどから「POST http://localhost:8080/api/register」というリクエストが送られてきたとします。

この時「$_SERVER['REQUEST_METHOD']」はPOSTが入るので下記の「$method」はPOSTになります。

$method = $_SERVER['REQUEST_METHOD'];

下記の「$_SERVER['REQUEST_URI']」に関しては例えば「http://localhost:8080/api/register?id=10」にアクセスすると「/api/register?id=10」を取得します。

$path = parse_url(
    $_SERVER['REQUEST_URI'],
    PHP_URL_PATH
);

クエリパラメーターの「?id=10」を取り除いて「/api/register」だけを取得したい場合は「parse_url」と「PHP_URL_PATH」を使います。

よって「$path」は「/api/register」になり下記の部分に対応させることが可能になります。

if ($method === 'POST' && $path === '/api/register')


戻る