コンテンツにスキップ

ユーティリティパッケージ@PHP

はじめに

本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。


01. Carbonパッケージ

Carbonとは


データ型

▼ Date型

厳密にはデータ型ではないが、便宜上、データ型とする。

タイムスタンプとは、協定世界時(UTC)を基準にした1970年1月1日の0時0分0秒からの経過秒数を表したもの。

フォーマット 実装方法 備考
日付 2019-07-07 区切り記号なし、ドット、スラッシュなども可能
時間 19:07:07 区切り記号なし、も可能
日時 2019-07-07 19:07:07 同上
タイムスタンプ (秒) 1562494027 1970年1月1日の0時0分0秒から2019-07-07 19:07:07 までの経過秒数


メソッド

instanceメソッド

DateTimeインスタンスを引数として、Carbonインスタンスを作成する。

<?php

$datetime = new \DateTime("2019-07-07 19:07:07");
$carbon = Carbon::instance($datetime);

echo $carbon; // 2019-07-07 19:07:07

createメソッド

日時の文字列からCarbonインスタンスを作成する。

*実装例*

<?php

$carbon = Carbon::create(2019, 07, 07, 19, 07, 07);

echo $carbon; // 2019-07-07 19:07:07

createFromXXXメソッド

指定の文字列から、Carbonインスタンスを作成する。

*実装例*

日時数字からCarbonインスタンスを作成する。

<?php

// 日時数字から、Carbonインスタンスを作成する。
$carbonFromeDate = Carbon::createFromDate(2019, 07, 07);

echo $carbonFromeDate; // 2019-07-07

時間数字からCarbonインスタンスを作成する。

<?php

// 時間数字から、Carbonインスタンスを作成する。
$carbonFromTime = Carbon::createFromTime(19, 07, 07);

echo $carbonFromTime; // 19:07:07

日付、時間、日時フォーマットからCarbonインスタンスを作成する。

第一引数でフォーマットを指定する必要がある。

<?php

// 日付、時間、日時フォーマットから、Carbonインスタンスを作成する。
// 第一引数でフォーマットを指定する必要がある。
$carbonFromFormat = Carbon::createFromFormat("Y-m-d H:m:s", "2019-07-07 19:07:07");

echo $carbonFromFormat; // 2019-07-07 19:07:07

タイムスタンプフォーマットからCarbonインスタンスを作成する。

<?php

// タイムスタンプフォーマットから、Carbonインスタンスを作成する。
$carbonFromTimestamp = Carbon::createFromTimestamp(1562494027);

echo $carbonFromTimestamp; // 2019-07-07 19:07:07

parseメソッド

日付、時間、日時フォーマットから、Carbonインスタンスを作成する。

createFromFormatメソッドとは異なり、フォーマットを指定する必要がない。

*実装例*

<?php

$carbon = Carbon::parse("2019-07-07 19:07:07")


02. Pinqパッケージ:Php Integrated Query

Pinqとは

配列データやオブジェクトデータに対して、クエリを実行できるようになる。

他の同様パッケージとして、Linqがある。


Traversable::fromメソッド

SQLのSELECTWHEREといった単語を使用して、foreachのように、配列データやオブジェクトデータの各要素に対して、処理を行える。

*実装例*

<?php

use Pinq\Traversable;

class Foo
{

    public function getData(array $entities)
    {

        return [
          "data" => Traversable::from($entities)
            // 1つずつ要素を取り出し、関数に渡す。
            ->select(
              function ($entity) {
                  return $this->convertToArray($entity);
              })
            // indexからなる配列として返却。
            ->asArray(),
        ];
    }
}


03. Guzzleパッケージ

Guzzleパッケージとは

通常、リクエストの送受信は、クライアントからサーバに対して、Postmanやcurl関数などを使用して行う。

しかし、GuzzleパッケージのClientを使えば、サーバから他サーバ (例:外部のAPIなど) に対して、リクエストの送受信できる。


リクエスト

▼ GET送信

*実装例*

<?php

use GuzzleHttp\Client;

$client = new Client();

// GET送信
$response = $client->request(
    "GET",
    "https://example.com",
    [
        "query" => [
            "id" => 1
        ]
    ]
);

▼ POST送信

<?php

use GuzzleHttp\Client;

$client = new Client();

$json = json_encode([
    "message" => "Hello World!"
]);

// POST送信
$response = $client->request(
    "POST",
    "https://example.com",
    [
        "headers"     => [
            "Authorization"  => $this->token,
            "Content-Length" => strlen($json),
            "Content-Type"   => "application/json",
        ],
        "form_params" => [
            "body" => $message
        ]
    ]
);


レスポンス

▼ レスポンスからボディを取得

*実装例*

<?php

use GuzzleHttp\Client;

$client = new Client();

$json = json_encode([
    "message" => "Hello World!"
]);

// POST送信
$response = $client->request(
    "POST",
    "https://example.com",
    [
        "headers"     => [
            "Authorization"  => $this->token,
            "Content-Length" => strlen($json),
            "Content-Type"   => "application/json",
        ],
        "form_params" => [
            "body" => $message
        ]
    ]
);

$body = json_decode($response->getBody(), true);


04. KnpLabs/Snappyパッケージ

KnpLabs/Snappyとは

ローカルまたは指定したURLの.htmlファイルから、PDFや画像のファイルを作成するパッケージ。


メソッド

generateFromHtmlメソッド

ローカルディレクトリ配下に、.htmlファイルを基にしたPDFファイルを作成する。

*実装例*

<?php

$snappy = new Pdf("/usr/local/bin/wkhtmltopdf");

$snappy->generateFromHtml("foo.html", ".../foo.pdf");


05. Respect/Validationパッケージ

Respect/Validationとは

リクエストされたデータが正しいかを、サーバサイド側で検証する。

フロントエンドからリクエストされるデータに関しては、JavaScriptとPHPの両方によるバリデーションが必要である。

<?php

// ここに実装例


06. linecorp/line-bot-sdk

linecorp/line-bot-sdkとは

ボットサーバーにて、LINEプラットフォームに返信するためのレスポンスを作成する。

line_messaging-api