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

Book description

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

Table of contents

  1. 表紙
  2. 大扉
  3. 原書大扉
  4. クレジット
  5. 献辞
  6. はじめに
    1. 本書が想定する読者
    2. 本書の内容
    3. 本書の表記について
    4. オライリー学習プラットフォーム
    5. 連絡先
    6. 謝辞
  7. 1章 変数
    1. レシピ1.1 定数の定義
    2. レシピ1.2 可変変数の作成
    3. レシピ1.3 変数の交換
  8. 2章 演算子
    1. 論理演算子
    2. ビット演算子
    3. 比較演算子
    4. 型キャスト
    5. レシピ2.1 if/elseブロックの代わりに三項演算子を使用する
    6. レシピ2.2 null値を合体する
    7. レシピ2.3 値が等しいか評価する
    8. レシピ2.4 宇宙船演算子により値をソートする
    9. レシピ2.5 演算子によりエラー出力を抑制する
    10. レシピ2.6 整数内でビットを比較する
  9. 3章 関数
    1. レシピ3.1 関数パラメータへアクセスする
    2. レシピ3.2 関数のデフォルト引数を設定する
    3. レシピ3.3 名前付き引数を使用する
    4. レシピ3.4 関数の引数および戻り値の型付けを強制する
    5. レシピ3.5 可変長の引数を持つ関数を定義する
    6. レシピ3.6 複数の値を返す
    7. レシピ3.7 関数内からグローバル変数へアクセスする
    8. レシピ3.8 複数の呼び出しをまたいで関数内の状態を管理する
    9. レシピ3.9 動的関数を定義する
    10. レシピ3.10 関数をパラメータとして他の関数に渡す
    11. レシピ3.11 簡潔な関数定義(アロー関数)を使用する
    12. レシピ3.12 戻り値のない関数を作成する
    13. レシピ3.13 何も返さない関数を作成する
  10. 4章 文字列
    1. レシピ4.1 部分文字列にアクセスする
    2. レシピ4.2 ある文字列を別の文字列の中から抽出する
    3. レシピ4.3 文字列の一部を置換する
    4. レシピ4.4 一度に1バイトずつ文字列を処理する
    5. レシピ4.5 ランダムな文字列を生成する
    6. レシピ4.6 文字列内の変数を補間する
    7. レシピ4.7 複数の文字列を連結する
    8. レシピ4.8 文字列に格納されているバイナリデータを管理する
  11. 5章 数値
    1. レシピ5.1 変数内の数を検証する
    2. レシピ5.2 浮動小数点数を比較する
    3. レシピ5.3 浮動小数点数を四捨五入する
    4. レシピ5.4 真にランダムな数を生成する
    5. レシピ5.5 予測可能な乱数を生成する
    6. レシピ5.6 重み付き乱数を生成する
    7. レシピ5.7 対数を計算する
    8. レシピ5.8 指数を計算する
    9. レシピ5.9 数値を文字列に書式付ける
    10. レシピ5.10 非常に大きい数または非常に小さい数を扱う
    11. レシピ5.11 基数の異なる数へ変換する
  12. 6章 日付と時刻
    1. オブジェクト指向
    2. タイムゾーン
    3. Unixタイムスタンプ
    4. レシピ6.1 現在の日付と時刻を取得する
    5. レシピ6.2 日付と時刻に書式を付ける
    6. レシピ6.3 日付と時刻をUnixタイムスタンプに変換する
    7. レシピ6.4 Unixタイムスタンプを日付と時刻に変換する
    8. レシピ6.5 2つの日付の差を計算する
    9. レシピ6.6 任意の文字列から日付と時刻をパースする
    10. レシピ6.7 日付を検証する
    11. レシピ6.8 日付の加算や減算を行う
    12. レシピ6.9 タイムゾーンをまたいで時間を計算する
  13. 7章 配列
    1. 配列の種類
    2. 構文
    3. レシピ7.1 配列の中でキー毎に複数の要素を関連付ける
    4. レシピ7.2 配列を数の範囲で初期化する
    5. レシピ7.3 配列内の要素を反復する
    6. レシピ7.4 連想配列と数値添字配列から要素を削除する
    7. レシピ7.5 配列のサイズを変更する
    8. レシピ7.6 配列を別の配列に追加する
    9. レシピ7.7 既存配列の一部から配列を作成する
    10. レシピ7.8 配列を文字列に、文字列を配列に変換する
    11. レシピ7.9 配列を逆順にする
    12. レシピ7.10 配列をソートする
    13. レシピ7.11 関数を用いて配列をソートする
    14. レシピ7.12 配列内の要素をランダムに並べ変える
    15. レシピ7.13 配列のすべての要素に関数を適用する
    16. レシピ7.14 配列を単一値に縮退する
    17. レシピ7.15 無限または非常に大規模/高価な配列を反復処理する
  14. 8章 クラスとオブジェクト
    1. 手続き型プログラミング
    2. オブジェクト指向プログラミング
    3. マルチパラダイム言語
    4. 可視性(アクセス権)
    5. レシピ8.1 カスタムクラスからのオブジェクトをインスタンス化する
    6. レシピ8.2 デフォルトを定義するためにオブジェクトを作成する
    7. レシピ8.3 クラスの中で読み出し専用プロパティを定義する
    8. レシピ8.4 オブジェクトが不要になったら破棄してクリーンアップする
    9. レシピ8.5 マジックメソッドを使って動的プロパティを提供する
    10. レシピ8.6 追加の機能を定義するためにクラスを拡張する
    11. レシピ8.7 クラスに提示した振る舞いを強制する
    12. レシピ8.8 抽象基底クラスを作成する
    13. レシピ8.9 クラスとメソッドの変更を防ぐ
    14. レシピ8.10 オブジェクトの複製を作成する
    15. レシピ8.11 静的なプロパティと静的なメソッドを定義する
    16. レシピ8.12 オブジェクトのprivateプロパティやprivateメソッドのイントロスペクション
    17. レシピ8.13 クラス間で任意のコードを再利用する
  15. 9章 セキュリティと暗号
    1. 従来の暗号化機能
    2. Sodium
    3. ランダム性
    4. レシピ9.1 ユーザ入力のフィルタ、検証、サニタイズ
    5. レシピ9.2 アプリケーションのコードから機密性の高い認証情報を保護する
    6. レシピ9.3 パスワードのハッシュを作成、検証する
    7. レシピ9.4 データを暗号化および復号する
    8. レシピ9.5 暗号化されたデータをファイルに保存する
    9. レシピ9.6 メッセージに電子署名を行い、他のアプリケーションに送信する
    10. レシピ9.7 電子署名を検証する
  16. 10章 ファイル処理
    1. WindowsとUnix
    2. レシピ10.1 ローカルファイルを作成または開く
    3. レシピ10.2 ファイルを文字列に読み込む
    4. レシピ10.3 ファイルの指定したスライスを読み込む
    5. レシピ10.4 ファイルを直接更新する
    6. レシピ10.5 多くのファイルに同時に書き込む
    7. レシピ10.6 他のプロセスからアクセスまたは更新されないようファイルをロックする
  17. 11章 ストリーム
    1. ラッパーとプロトコル
    2. フィルタ
    3. レシピ11.1 一時ファイルとの入出力データストリーム
    4. レシピ11.2 PHP入力ストリームからデータを読み出す
    5. レシピ11.3 PHP出力ストリームにデータを書き込む
    6. レシピ11.4 ストリームからデータを読み出して、別のストリームに書き込む
    7. レシピ11.5 異なるストリームのハンドラを組み合わせる
    8. レシピ11.6 カスタムストリームラッパー
  18. 12章 エラー処理
    1. レシピ12.1 パース時のエラーを特定し、修正する
    2. レシピ12.2 カスタム例外を作成、処理する
    3. レシピ12.3 エンドユーザからエラーメッセージを隠す
    4. レシピ12.4 カスタムエラーハンドラを使用する
    5. レシピ12.5 外部ストリームにエラーを記録する
  19. 13章 デバッグとテスト
    1. レシピ13.1 デバッグ拡張モジュールを利用する
    2. レシピ13.2 ユニットテストを記述する
    3. レシピ13.3 ユニットテストを自動化する
    4. レシピ13.4 静的コード解析を利用する
    5. レシピ13.5 デバッグ情報を記録する
    6. レシピ13.6 変数の内容を文字列にダンプする
    7. レシピ13.7 アプリケーションを簡易的に実行するために組み込みWebサーバを利用する
    8. レシピ13.8 ユニットテストによりgit-bisectでバージョン管理されたプロジェクトのリグレッションを検出する
  20. 14章 性能チューニング
    1. ジャストインタイムコンパイル
    2. オペコードキャッシュ
    3. レシピ14.1 実行時間を計測する
    4. レシピ14.2 アプリケーションの性能をベンチマーク計測する
    5. レシピ14.3 オペコードキャッシュでアプリケーションを高速化する
  21. 15章 パッケージと拡張モジュール
    1. 標準モジュール
    2. ライブラリ/Composer
    3. レシピ15.1 Composerプロジェクトを定義する
    4. レシピ15.2 Composerパッケージを探す
    5. レシピ15.3 Composerパッケージをインストール/更新する
    6. レシピ15.4 ネイティブPHP拡張モジュールをインストールする
  22. 16章 データベース
    1. リレーショナルデータベース
    2. キーバリューストア
    3. グラフデータベース
    4. ドキュメントデータベース
    5. レシピ16.1 SQLiteデータベースに接続する
    6. レシピ16.2 PDOにより外部データベースプロバイダに接続する
    7. レシピ16.3 データベースクエリ用ユーザ入力のサニタイズ
    8. レシピ16.4 モックデータを用いてデータベースとの統合テストを行う
    9. レシピ16.5 Eloquent ORMでSQLデータベースにクエリを実行する
  23. 17章 非同期PHP
    1. ライブラリとランタイム
    2. 非同期処理の理解
    3. ファイバー
    4. レシピ17.1 リモートAPIから非同期にデータを取得する
    5. レシピ17.2 複数の非同期処理の結果を待つ
    6. レシピ17.3 他の処理を実行するために一方の処理を中断する
    7. レシピ17.4 別のスレッドでコードを実行する
    8. レシピ17.5 スレッド間でメッセージを送受信する
    9. レシピ17.6 ファイバーによりストリームからのコンテンツを管理する
  24. 18章 PHPコマンドライン
    1. レシピ18.1 プログラムの引数をパースする
    2. レシピ18.2 ユーザ入力を対話的に読み込む
    3. レシピ18.3 コンソール出力に色を付ける
    4. レシピ18.4 Symfonyコンソールでコマンドラインアプリケーションを作成する
    5. レシピ18.5 PHPのネイティブなRead-Eval-Print-Loopを使用する
  25. 著者・訳者紹介
  26. 奥付

Product information

  • Title: PHPクックブック ―モダンPHPによるWebアプリケーション実用レシピ集
  • Author(s): Eric A. Mann, 廣川 類, 桑村 潤
  • Release date: March 2024
  • Publisher(s): O'Reilly Japan, Inc.
  • ISBN: 9784814400621

You might also like

book

ドメイン駆動設計をはじめよう ―ソフトウェアの実装と事業戦略を結びつける実践技法

by Vlad Khononov, 増田 亨, 綿引 琢磨

ドメイン駆動設計はエリック・エヴァンスにより提唱されたソフトウェア設計の手法です。対象とする事業活動(ドメイン)とその課題の観点から、より良いソフトウェアを構築するために関係者が協力する方法を提供します。本書は4部構成になっており、第Ⅰ部「設計の基本方針」では、ソフトウェアの設計方針を大きな視点から決めるための考え方とやり方を取り上げます。第Ⅱ部「実装方法の選択」ではソースコードに焦点を合わせ、業務ロジックをどう実装するかの選択肢を学びます。第Ⅲ部「ドメイン駆動設計の実践」では、ソフトウェア開発の現場にドメイン駆動設計を実践的に取り入れるための方法を紹介します。第Ⅳ部「他の方法論や設計技法との関係」では、ドメイン駆動設計とそれ以外の方法論や設計技法との関係を検討します。最新の技術トレンドを取り入れながら、ドメイン駆動設計の基本概念と実践方法をわかりやすく解説します。

book

ベタープログラマ ―優れたプログラマになるための38の考え方とテクニック

by Pete Goodliffe, 柴田 芳樹

本書は、優れたコードを作りだし、人々と効率的に働く生産性の高いプログラマになるための考え方とテクニックを38のテーマで紹介します。個人的な活動として、継続的な学習方法と停滞を避けるための課題の見つけ方など、自らを成長させる方法も紹介。さらに組織の中で他の人とコミュニケーションを取りながら、効果的に働くための習慣を解説します。『Code Craft』の著者Pete Goodliffeが、自らの経験を元に「優れたプログラマ」になるための考え方と習慣をまとめた本書は、プログラミングを愛し、長く続けながら、優れたプログラマになりたいと思うすべての人に必携の一冊です。

book

ハンズオンNode.js

by 今村 謙士

Node.jsの入門書。対象読者は、フロントエンド開発の知識はあってもサーバサイド開発は知らないエンジニアや、他言語の経験はあってもNode.jsは触ったことがないプログラマー。本書ではターミナルのプロンプトにコマンドを入力してその反応を確認したり、簡単なスクリプトをNode.js環境で実行したりしながら、Node.jsプログラミングの基本からWebアプリケーションの開発、テスト、デプロイまでをハンズオン形式で学びます。また、コードの背景にある設計思想や、プログラムの挙動の仕組みについてもしっかり掘り下げます。本書のゴールは、読者がNode.jsの全体像を掴み、業務レベルでのアプリケーション開発に対応可能な知識を身につけることです。

book

Python機械学習クックブック 第2版

by Kyle Gallatin, Chris Albon, 中田 秀基

Pythonによる機械学習を行う上で、頻繁に遭遇すると思われる216の問題とその解決策を紹介します。データ構造、数値データ、カテゴリデータ、テキスト、画像、日時データの取り扱いといった基本から、特徴量抽出、次元削減、モデルの評価と選択、線形回帰、決定木、ランダムフォレスト、k-最近傍法、SVM、ナイーブベイズ、クラスタリング、ニューラルネットワークまで幅広い内容をカバー。この改訂版では、最新のフレームワークに対応するとともに、ニューラルネットワーク関連の項目をPyTorchベースで大幅に増量。「やりたいこと」「困っていること」に答えてくれる一冊です。