Search

検索したいワードを入力してください

2019年04月10日

PHPの便利なライブラリ10選!目的別に紹介します

PHPには便利なライブラリがたくさんありますが、その中から厳選した10個を紹介しています。決済用ライブラリのStripeやHTTPリクエストライブラリのGuzzle、2段階認証用ライブラリのTwoFactorAuthなど紹介しています。

ライブラリとは

ライブラリとは、少ないコードで誰でも利用できるようにしたプログラム集です。

ライブラリは、よく使うコードをプログラム集として事前に用意することで、開発工数の効率化を行なったり、逆に自分でプログラミングするには難しい実装や面倒な場合に、ライブラリを利用することで簡単にプログラミングを組み込むことができます。

ライブラリを提供しているのは、個人や企業が提供している場合もあります。また、有償や無償の場合など様々です。

ライブラリとフレームワークの違い

PHPには、ライブラリと似たもので「フレームワーク」があります。ライブラリとフレームワークの違いは、「ライブラリ」は、ある目的の実装を事前に用意したプログラム集であるのに対して、「フレームワーク」は、開発の一連の流れに必要な基本的な仕組みを事前に用意したものです。そのため、フレームワークはプログラムの全体的な処理の流れに必要なものが一通り用意されています。

PHPライブラリを目的別に紹介

それでは、実際にPHPのライブラリのなかで厳選したものを紹介します。ライブラリは簡単に利用できますが、導入方法や利用するにあたっての注意点がありますので、あわせて紹介します。

画像投稿:PHP Image Upload Class

まずは、SNSなど様々なところで使われている「画像投稿」に関するPHPライブラリを紹介します。「PHP Image Upload Class」は、画像の拡大縮小や回転、ぼかし、切り取りなど画像加工に関する機能やアップロードの成功失敗の確認や拡張子の判別を行うことができます。

PHP Image Upload Classの使い方

PHP Image Upload Classライブラリの使い方について紹介します。次のPHPサンプルコードをご覧ください。

【サンプルコード】
$rename = new upload($_FILES['form_image']);
if ($rename->uploaded) {
$rename->file_new_name_body = 'image_resized';
$rename->image_resize = true;
$rename->image_convert = gif;
$rename->image_x = 100;
$rename->image_ratio_y = true;
$rename->process('/home/user/files/');
if ($rename->processed) {
echo 'image renamed, resized x=100
and converted to GIF';
$rename->clean();
} else {
echo 'error : ' . $rename->error;
}
}

上記のサンプルコードは、HTMLから送信された画像をリサイズしてファイル形式をGIFに変更しています。処理が成功した場合にはログを出力して、失敗の場合はエラーの内容を表示しています。

画像のリサイズやファイル形式の変更の実装は、0から作るのは大変なので、ライブラリを使うことで簡単に実装することができます。

チャット:Ratchet

Ratchetは、簡単にチャット機能を導入できるPHPライブラリです。チャットの実装には手間がかかるため、Ratchetは多くのPHPアプリケーションで導入されています。

Ratchetの使い方

Ratchetライブラリの使い方について紹介します。次のPHPサンプルコードをご覧ください。

【サンプルコード】
<?php
namespace MyApp;
use Ratchet\MessageComponentInterface;
use Ratchet\ConnectionInterface;

class Sample implements MessageComponentInterface {
public function onOpen(ConnectionInterface $conn) {
}
public function onMessage(ConnectionInterface $from, $msg) {
}
public function onClose(ConnectionInterface $conn) {
}
public function onError(ConnectionInterface $conn, \Exception $e) {
}
}
?>

上記のサンプルコードは、Ratchetのベースとなる実装部分です。それぞれのメソッドについて説明すると、「onOpen」は、新しいクライアントから接続があった場合に呼ばれるメソッドです。

「onMessage」は、接続してメッセージを受け取った場合に呼ばれるメソッドです。「onClose」は、接続が切断された場合に呼ばれるメソッドです。「onError」は、接続中にエラーが発生した場合に呼ばれます。

ファイルのアップロード:Upload

「Upload」は、ファイルをアップロードする機能を導入できるPHPライブラリです。ライブラリを利用しなくてもファイルのアップロードは可能ですが、「Upload」を使用することで、ファイルサイズの上限の設定や対応可能なファイル形式の設定を簡単に行うことができます。

ファイルサイズの上限設定はPHP経験が浅い方にとって面倒な部分も多いので、「Upload」は便利なライブラリです。

Uploadの使い方

Uploadライブラリの使い方について紹介します。次のPHPサンプルコードをご覧ください。

【サンプルコード】

<?php
$storage = new \Upload\Storage\FileSystem('/path/to/directory');
$file = new \Upload\File('file', $storage);

$new_filename = uniqid();
$file->setName($new_filename);
$file->addValidations(array(
new \Upload\Validation\Mimetype('image/png'),
new \Upload\Validation\Size('5M')
));

$data = array(
'name' => $file->getNameWithExtension(),
'extension' => $file->getExtension(),
'mime' => $file->getMimetype(),
'size' => $file->getSize(),
'md5' => $file->getMd5(),
'dimensions' => $file->getDimensions()
);
// Try to upload file
try {
// Success!
$file->upload();
} catch (\Exception $e) {
// Fail!
$errors = $file->getErrors();
}

上記のサンプルコードは、HTMLからファイルが送信された場合の処理です。送信されたファイルは設定した制限を満たしているかどうか判定され問題なければアップロード処理を行います。

ユーザー登録:Sentinel

「Sentinel」は、ユーザー登録やログイン、パスワードのリマインダー、ユーザー認証などユーザー管理機能を導入できるPHPライブラリです。ユーザー管理機能を0から実装するのはなかなかハードルが高いですが、「Sentinel」を導入することで開発の効率化をはかることができます。

Sentinelの使い方

Sentinelライブラリの使い方について紹介します。次のPHPサンプルコードをご覧ください。

【サンプルコード】
use Cartalyst\Sentinel\Native\Facades\Sentinel;
use Illuminate\Database\Capsule\Manager as Capsule;

require 'vendor/autoload.php';

$capsule = new Capsule;
$capsule->addConnection([
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'sentinel',
'username' => 'user',
'password' => 'secret',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
]);

$capsule->bootEloquent();


// ユーザー新規登録
Sentinel::register([
'email' => 'test@example.com',
'password' => 'foobar',
]);

上記のサンプルコードは、先にユーザー情報を管理するデータベースの設定を行います。注意点としては、「database」「username」「password」については、接続する環境に合わせて設定する必要があります。その後、ユーザーの新規登録を行なっています。

API開発:Guzzle バージョン6

「Guzzle」は、PHPを使ってAPI開発時に役立つHTTPリクエスト簡単に導入できるPHPライブラリです。通信方式は、同期/非同期両方に対応しています。

Guzzle バージョン6の使い方

Guzzleライブラリの使い方について紹介します。次のPHPサンプルコードをご覧ください。

【サンプルコード】
// 同期通信の場合
$client = new GuzzleHttp\Client();
// githubにリクエスト送信
$res = $client->request('GET', 'https://api.github.com/user', [
'auth' => ['user', 'pass']
]);
// ステータスコードを出力
echo $res->getStatusCode();
// 'application/json; charset=utf8'
echo $res->getHeader('content-type')[0];
// レスポンスを出力
echo $res->getBody();

// 非同期通信の場合
$request = new \GuzzleHttp\Psr7\Request('GET', 'http://httpbin.org');
$promise = $client->sendAsync($request)->then(function ($response) {
// レスポンスを出力
echo 'I completed! ' . $response->getBody();
});
$promise->wait();

上記のサンプルコードは、大きく「同期通信」と「非同期通信」のコードに分かれています。ただし、分かれていますが、基本的なコードの書き方は同じです。「非同期通信」では、「then」以降の$responseでサーバからのレスポンスを受け取っています。

データベース管理:Propel

「Propel」は、オブジェクトリレーショナルマッパー(ORM)で、データベースにデータへの保存や取得などできるPHPライブラリです。「Propel」を利用すればSQL文を書く必要がなく、データベースへのアクセスを簡単に実現することができます。

Propelの使い方

Propelライブラリの使い方について紹介します。次のPHPサンプルコードをご覧ください。

【サンプルコード】
[テーブル定義]
<table name="book">
<column name="id" type="BIGINT" primaryKey="true" autoIncrement="true" />
<column name="title" type="VARCHAR" size="150" required="true" />
<column name="detail" type="VARCHAR" size="500" required="true" />
<column name="created" type="TIMESTAMP" defaultExpr="CURRENT_TIMESTAMP" />
</table>

$book = new Book();
$book->setTitle("Title_sample");
$book->setDetail("Detail_sample");
$book->save();

上記のサンプルコードは、最初に保存するテーブルをXMLで定義します。その後、テーブルに必要なカラムの値をセットしてsave()を行います。これだけでデータベースに書き込むことができます。

2段階認証:Two Factor Auth

「Two Factor Auth」は、2段階認証システムを手軽に導入できるPHPライブラリです。セキュリティの重要性が問われている昨今で、銀行のインターネットバンキングなどで使われている複雑な2段階認証システムを「Two Factor Auth」で使用できます。

Two Factor Auth

Two Factor Authライブラリの使い方について紹介します。次のPHPサンプルコードをご覧ください。

【サンプルコード】
// TwoFactorAuthインスタンス生成
$tfa = new RobThree\Auth\TwoFactorAuth('My Company');
// キー生成
$secret = $tfa->createSecret();
// キーをもとに認証実行
$result = $tfa->verifyCode($_SESSION['secret'], $_POST['verification']);

上記のサンプルコードは、まず公開するキーを生成します。そして、そのキーと認証情報をもとに認証を行うコードになっています。公開するキーは、そのままWebサイトに表示する以外にも、QRコードで表示することも公開方法として説明されています。

デバッグ:PHP Debug Bar

「PHP Debug Bar」は、デバック出力を画面下のメッセージバーに表示することができるPHPライブラリです。エラー表示だけでなく、例外処理も出力できます。

PHP Debug Barの使い方

PHP Debug Barライブラリの使い方について紹介します。次のPHPサンプルコードをご覧ください。

【サンプルコード】
<?php
use DebugBar\StandardDebugBar;

$debugbar = new StandardDebugBar();
$debugbarRenderer = $debugbar->getJavascriptRenderer();
$debugbar["messages"]->addMessage("hello world!");
?>
<html>
<head>
<?php echo $debugbarRenderer->renderHead() ?>
</head>
<body>
...
<?php echo $debugbarRenderer->render() ?>
</body>
</html>

上記のサンプルコードは、DebugBarのインスタンスを生成して「hello world!」を表示するコードです。実際に出力する場合は「addMessage()」にエラーメッセージをセットすれば確認することができます。

決済サービス:Stripe

「Stripe」は、決済処理を導入することができるPHPライブラリです。Webアプリだけでなくモバイルアプリも対応しています。また、PHPだけでなくJavaやRubyなどのプログラミング言語に対応しており、他のライブラリと比較して開発者向けのリファレンスが充実しています。

Stripeの使い方

PHP Debug Barライブラリの使い方について紹介します。次のPHPサンプルコードをご覧ください。

【サンプルコード】
<?php
require_once('vendor/autoload.php');
// APIキーをセットする
\Stripe\Stripe::setApiKey('sk_test_***********************');
// 決済処理を行う
$charge = \Stripe\Charge::create([
'amount' => 2000,
'currency' => 'usd',
'source' => 'tok_***********************']
);
echo $charge;
?>

上記のサンプルコードは、「composer」で導入した場合のサンプルコードです。まず、APIキーをセットして決済内容を作成するだけです。最低限の決済処理であれば上記のコードだけで処理が行われます。

まとめ

PHPの便利なライブラリを紹介してきました。ライブラリは自分では難しい機能を少ない実装で導入することができます。他にもPHPには便利なライブラリがたくさんありますので、ぜひ活用してください。

【PR】多くの人がプログラミングを諦めてしまう理由をご存知ですか?



近年プログラミングを勉強する人が増えています。

プログラミング学習者の多くは独学から取り組もうとしますが、だいたい80%ほどは3ヶ月も続かずに諦めてしまいます。早い人は1日目で。

多くの人がプログラミングを独学しようとして諦める理由は、次の3つ。
●モチベーションが維持できない
●エラーの原因・解決方法が分からない
●どう学習すればよいか分からない

TechBoostというプログラミングスクールでは、みんなと一緒にプログラミングをするのでモチベーションの維持ができ、分からないことがあればマンツーマンで教えてくれ、徹底的に研究された初心者向けの教材が揃っています。

TechBoostを卒業後、実際にエンジニアとして転職した方もいるほど。

本気でプログラミングを学びたい方は、一度無料のカウンセリングでご相談ください。プログラミングを嫌いになる前に。

tech boostについて

オーダーメイド型の学習コンテンツを提供する「tech boost」 は、エンジニアのキャリア支援に特化したサービスを複数展開している株式会社Branding Engineerが運営しているプログラミングスクールです。最短3ヶ月間で、未経験から『プログラミングの基礎』、『実際に業務で必要となるスキル』、『今のトレンドとなっている知識』まで学べ、ご希望の方にはプロのキャリアアドバイザーによる就業支援を行うことができます。

tech boost卒業生インタビュー

tech boostの卒業生の声を聞きました。あなたがプログラミングを学びたい理由を、一度考えてみてください。
営業→Javaエンジニア→Rubyエンジニアと転向し、第一志望のFinTech企業で働く山下さん
元営業、ビジネスのわかるエンジニアを目指す菅原さん
サンフランシスコに交換留学し、シリコンバレーのVCでインターン中の梅本さん
予備校の営業から半年でエンジニア転職を果たした小田島さん

tech boostの口コミ



Related