PHPクックブック

―モダンPHPによるWebアプリケーション実用レシピ集

[cover photo]
TOPICS
Web , PHP
発行年月日
PRINT LENGTH
408
ISBN
978-4-8144-0062-1
原書
PHP Cookbook
FORMAT
Print PDF EPUB
Ebook
3,960円
Ebookを購入する
Print
3,960円

PHPを使う上で、約140の遭遇しがちな問題とその解決策をまとめたレシピ集です。PHPの基本的な文法から、暗号化、エラー処理、デバッグ、パフォーマンスチューニングといった重要な概念、型システム、非同期処理まで、効率的でモダンなWebアプリケーションを構築するためのレシピを網羅しています。パフォーマンスの改善、安全性の強化など、機能が大幅に向上したPHP 8を使いこなす上で、信頼できるリファレンスとして、常に手元に置いておきたい一冊です。

目次

はじめに

1章 変数
    レシピ1.1 定数の定義
    レシピ1.2 可変変数の作成
    レシピ1.3 変数の交換

2章 演算子
    論理演算子
    ビット演算子
    比較演算子
    型キャスト
    レシピ2.1 if/elseブロックの代わりに三項演算子を使用する
    レシピ2.2 null値を合体する
    レシピ2.3 値が等しいか評価する
    レシピ2.4 宇宙船演算子により値をソートする
    レシピ2.5 演算子によりエラー出力を抑制する
    レシピ2.6 整数内でビットを比較する

3章 関数
    レシピ3.1 関数パラメータへアクセスする
    レシピ3.2 関数のデフォルト引数を設定する
    レシピ3.3 名前付き引数を使用する
    レシピ3.4 関数の引数および戻り値の型付けを強制する
    レシピ3.5 可変長の引数を持つ関数を定義する
    レシピ3.6 複数の値を返す
    レシピ3.7 関数内からグローバル変数へアクセスする
    レシピ3.8 複数の呼び出しをまたいで関数内の状態を管理する
    レシピ3.9 動的関数を定義する
    レシピ3.10 関数をパラメータとして他の関数に渡す
    レシピ3.11 簡潔な関数定義(アロー関数)を使用する
    レシピ3.12 戻り値のない関数を作成する
    レシピ3.13 何も返さない関数を作成する

4章 文字列
    レシピ4.1 部分文字列にアクセスする
    レシピ4.2 ある文字列を別の文字列の中から抽出する
    レシピ4.3 文字列の一部を置換する
    レシピ4.4 一度に1バイトずつ文字列を処理する
    レシピ4.5 ランダムな文字列を生成する
    レシピ4.6 文字列内の変数を補間する
    レシピ4.7 複数の文字列を連結する
    レシピ4.8 文字列に格納されているバイナリデータを管理する

5章 数値
    レシピ5.1 変数内の数を検証する
    レシピ5.2 浮動小数点数を比較する
    レシピ5.3 浮動小数点数を四捨五入する
    レシピ5.4 真にランダムな数を生成する
    レシピ5.5 予測可能な乱数を生成する
    レシピ5.6 重み付き乱数を生成する
    レシピ5.7 対数を計算する
    レシピ5.8 指数を計算する
    レシピ5.9 数値を文字列に書式付ける
    レシピ5.10 非常に大きい数または非常に小さい数を扱う
    レシピ5.11 基数の異なる数へ変換する

6章 日付と時刻
    オブジェクト指向
    タイムゾーン
    Unixタイムスタンプ
    レシピ6.1 現在の日付と時刻を取得する
    レシピ6.2 日付と時刻に書式を付ける
    レシピ6.3 日付と時刻をUnixタイムスタンプに変換する
    レシピ6.4 Unixタイムスタンプを日付と時刻に変換する
    レシピ6.5 2つの日付の差を計算する
    レシピ6.6 任意の文字列から日付と時刻をパースする
    レシピ6.7 日付を検証する
    レシピ6.8 日付の加算や減算を行う
    レシピ6.9 タイムゾーンをまたいで時間を計算する

7章 配列
    配列の種類
    構文
    レシピ7.1 配列の中でキー毎に複数の要素を関連付ける
    レシピ7.2 配列を数の範囲で初期化する
    レシピ7.3 配列内の要素を反復する
    レシピ7.4 連想配列と数値添字配列から要素を削除する
    レシピ7.5 配列のサイズを変更する
    レシピ7.6 配列を別の配列に追加する
    レシピ7.7 既存配列の一部から配列を作成する
    レシピ7.8 配列を文字列に、文字列を配列に変換する
    レシピ7.9 配列を逆順にする
    レシピ7.10 配列をソートする
    レシピ7.11 関数を用いて配列をソートする
    レシピ7.12 配列内の要素をランダムに並べ変える
    レシピ7.13 配列のすべての要素に関数を適用する
    レシピ7.14 配列を単一値に縮退する
    レシピ7.15 無限または非常に大規模/高価な配列を反復処理する

8章 クラスとオブジェクト
    手続き型プログラミング
    オブジェクト指向プログラミング
    マルチパラダイム言語
    可視性(アクセス権)
    レシピ8.1 カスタムクラスからのオブジェクトをインスタンス化する
    レシピ8.2 デフォルトを定義するためにオブジェクトを作成する
    レシピ8.3 クラスの中で読み出し専用プロパティを定義する
    レシピ8.4 オブジェクトが不要になったら破棄してクリーンアップする
    レシピ8.5 マジックメソッドを使って動的プロパティを提供する
    レシピ8.6 追加の機能を定義するためにクラスを拡張する
    レシピ8.7 クラスに提示した振る舞いを強制する
    レシピ8.8 抽象基底クラスを作成する
    レシピ8.9 クラスとメソッドの変更を防ぐ
    レシピ8.10 オブジェクトの複製を作成する
    レシピ8.11 静的なプロパティと静的なメソッドを定義する
    レシピ8.12 オブジェクトのprivateプロパティやprivate メソッドのイントロスペクション
    レシピ8.13 クラス間で任意のコードを再利用する

9章 セキュリティと暗号
    従来の暗号化機能
    Sodium
    ランダム性
    レシピ9.1 ユーザ入力のフィルタ、検証、サニタイズ
    レシピ9.2 アプリケーションのコードから機密性の高い認証情報を保護する
    レシピ9.3 パスワードのハッシュを作成、検証する
    レシピ9.4 データを暗号化および復号する
    レシピ9.5 暗号化されたデータをファイルに保存する
    レシピ9.6 メッセージに電子署名を行い、他のアプリケーションに送信する
    レシピ9.7 電子署名を検証する

10章 ファイル処理
    WindowsとUnix
    レシピ10.1 ローカルファイルを作成または開く
    レシピ10.2 ファイルを文字列に読み込む
    レシピ10.3 ファイルの指定したスライスを読み込む
    レシピ10.4 ファイルを直接更新する
    レシピ10.5 多くのファイルに同時に書き込む
    レシピ10.6 他のプロセスからアクセスまたは更新されないようファイルをロックする

11章 ストリーム
    ラッパーとプロトコル
    フィルタ
    レシピ11.1 一時ファイルとの入出力データストリーム
    レシピ11.2 PHP入力ストリームからデータを読み出す
    レシピ11.3 PHP入力ストリームにデータを書き込む
    レシピ11.4 ストリームからデータを読み出して、別のストリームに書き込む
    レシピ11.5 異なるストリームのハンドラを組み合わせる
    レシピ11.6 カスタムストリームラッパー

12章 エラー処理
    レシピ12.1 パース時のエラーを特定し、修正する
    レシピ12.2 カスタム例外を作成、処理する
    レシピ12.3 エンドユーザからエラーメッセージを隠す
    レシピ12.4 カスタムエラーハンドラを使用する
    レシピ12.5 外部ストリームにエラーを記録する

13章 デバッグとテスト
    レシピ13.1 デバッグ拡張モジュールを利用する
    レシピ13.2 ユニットテストを記述する
    レシピ13.3 ユニットテストを自動化する
    レシピ13.4 静的コード解析を利用する
    レシピ13.5 デバッグ情報を記録する
    レシピ13.6 変数の内容を文字列にダンプする
    レシピ13.7 アプリケーションを簡易的に実行するために組み込みWebサーバを利用する
    レシピ13.8 ユニットテストによりgit-bisectでバージョン管理されたプロジェクトのリグレッションを検出する

14章 性能チューニング
    ジャストインタイムコンパイル
    オペコードキャッシュ
    レシピ14.1 実行時間を計測する
    レシピ14.2 アプリケーションの性能をベンチマーク計測する
    レシピ14.3 オペコードキャッシュでアプリケーションを高速化する

15章 パッケージと拡張モジュール
    標準モジュール
    ライブラリ/Composer
    レシピ15.1 Composerプロジェクトを定義する
    レシピ15.2 Composerパッケージを探す
    レシピ15.3 Composerパッケージをインストール/更新する
    レシピ15.4 ネイティブPHP拡張モジュールをインストールする

16章 データベース
    リレーショナルデータベース
    キーバリューストア
    グラフデータベース
    ドキュメントデータベース
    レシピ16.1 SQLiteデータベースに接続する
    レシピ16.2 PDOにより外部データベースプロバイダに接続する
    レシピ16.3 データベースクエリ用ユーザ入力のサニタイズ
    レシピ16.4 モックデータを用いてデータベースとの統合テストを行う
    レシピ16.5 Eloquent ORMでSQLデータベースにクエリを実行する

17章 非同期PHP
    ライブラリとランタイム
    非同期処理の理解
    ファイバー
    レシピ17.1 リモートAPIから非同期にデータを取得する
    レシピ17.2 複数の非同期処理の結果を待つ
    レシピ17.3 他の処理を実行するために一方の処理を中断する
    レシピ17.4 別のスレッドでコードを実行する
    レシピ17.5 スレッド間でメッセージを送受信する
    レシピ17.6 ファイバーによりストリームからのコンテンツを管理する

18章 PHPコマンドライン
    レシピ18.1 プログラムの引数をパースする
    レシピ18.2 ユーザ入力を対話的に読み込む
    レシピ18.3 コンソール出力に色を付ける
    レシピ18.4 Symfonyコンソールでコマンドラインアプリケーションを作成する
    レシピ18.5 PHPのネイティブなRead-Eval-Print-Loopを使用する

索 引