PerfectPHP

Created: 2011-07-16 16:36
Updated: 2014-02-05 02:00
php

readme.md

パーフェクトPHPの読書記録

http://gihyo.jp/book/2010/978-4-7741-4437-5

各Chapterのreadme.mdに章ごとの記録をつけた。

#Part-1 PHP ~overview

#1章 PHP概論 #1.1 PHPとは ##1.1.1 PHPとは ##1.1.2 PHPの歴史 ##1.1.3 本書の概要 ##1.1.4 コーディングスタイル #1.2 Webアプリケーションの仕組み ##1.2.1 WebサーバとWebブラウザ ##1.2.2 インストールとドキュメントルートの設定 ##1.2.3 Linux(CentOS/Fedora) ##1.2.4 Linux(Debian/Ubuntu) ##1.2.5 Mac OS X ##1.2.6 Windows ##コラム Skypeを利用している場合の注意点 ##1.2.7 ドキュメントルートの設定確認 ##1.2.8 ソースからのインストール #1.3 PHPの処理の流れ ##1.3.1 モジュールとCGI ##1.3.2 CLI ##1.3.3 コンパイルと実行

#Part 2 PHPの言語仕様

#2章 PHPの基本 #2.1 基本的な構文 ##2.1.1 サンプルプログラム ##2.1.2 PHPブロック ##2.1.3 文 ##2.1.4 コメント ##2.1.5 出力 ##2.1.6 echo文とvar_dump()関数 ##2.1.7 識別子 ##2.1.8 予約語 ##2.1.9 エラー #2.2 変数 ##2.2.1 PHPの変数 ##2.2.2 可変変数 ##2.2.3 変数のスコープ ##2.2.4 定義済み変数 ##2.2.5 スーパーグローバル変数 #2.3 定数 ##2.3.1 定数定義 ##2.3.2 constants()関数 ##2.3.3 定義済み定数 #2.4 エラー ##2.4.1 エラーとは ##2.4.2 エラーの種類とエラー定数 ##2.4.3 例外 ##2.4.4 エラーに関する設定

#3章 型と演算子 #3.1 型 ##3.1.1 PHPの型 ##3.1.2 整数 ##3.1.3 浮動小数点 ##3.1.4 文字列 ##コラム 比較演算を行う場合の注意点 ##3.1.5 論理型 ##3.1.6 配列 ##3.1.7 オブジェクト ##3.1.8 リソース ##3.1.9 null ##3.1.10 型変換 #3.2 演算子 ##3.2.1 PHPの演算子 ##3.2.2 三項演算子 ##3.2.3 演算子の優先順位 ##3.2.4 その他の演算子 #3.3 配列 ##3.3.1 PHPの配列 ##3.3.2 配列の初期化 ##3.3.3 連想配列 ##3.3.4 多次元配列 ##3.3.5 PHPの配列の特徴のまとめ ##3.3.6 配列の演算

#4章 制御構造と関数 #4.1 制御構造 ##4.1.1 プログラムの構成要素と制御構造 ##4.1.2 if-elseif-else ##4.1.3 制御構造に関する別の構文 ##4.1.4 while ##4.1.5 do-while ##4.1.6 for ##4.1.7 foreach ##4.1.8 break ##4.1.9 continue ##4.1.10 switch ##4.1.11 return ##4.1.12 exit ##4.1.13 require/require_once ##4.1.14 include/include_once ##4.1.15 goto #4.2 関数 ##4.2.1 関数の基本 ##4.2.2 関数の定義 ##4.2.3 関数の呼び出し ##4.2.4 参照による引数と返り値 ##4.2.5 無名関数 ##4.2.6 定義済み関数

#5章 クラスとオブジェクト #5.1 クラス ##5.1.1 PHPのクラス ##5.1.2 クラスの定義 ##5.1.3 プロパティ ##5.1.4 定数 ##5.1.5 メソッド ##5.1.6 コンストラクタとデストラクタ ##コラム PHP 4とPHP 5のコンストラクタ ##5.1.7 継承 ##5.1.8 標準クラスとキャスト ##5.1.9 抽象クラス #5.2 インターフェイス ##5.2.1 インターフェイスの定義と実装 ##5.2.2 定義済みインターフェイス ##5.2.3 インターフェイスのチェック #5.3 クラスとオブジェクトの機能と特徴 ##5.3.1 マジックメソッド ##5.3.2 遅延性的束縛 ##5.3.3 オートロード #5.4 名前空間 ##5.4.1 PHPの名前空間 ##5.4.2 名前空間の定義 ##5.4.3 インポートルール ##5.4.4 名前解決 #5.5 例外 ##5.5.1 PHPの例外 ##5.5.2 定義済みの例外 ##5.5.3 例外の拡張 ##5.5.4 PHPのエラーと例外 #5.6 参照 ##5.6.1 参照とは ##5.6.2 参照変数の扱い ##5.6.3 オブジェクトの参照 ##コラム PHP 4のオブジェクトの参照 ##5.6.4 リファレンスカウントとオブジェクトの寿命 ##5.6.5 変数のリファレンスとコピーオンライト

#Part 3 実践Webアプリケーション

#6章 Webアプリケーション入門 #6.1 Webアプリケーション概要 ##6.1.1 Webアプリケーションとは ##6.1.2 HTMLとフォーム ##コラム PHPの標準関数 ##6.1.3 HTTPメソッド ##6.1.4 HTTPメソッドの使い分け ##6.1.5 スーパーグローバル変数 #6.2 ひとこと掲示板作成 ##6.2.1 アプリケーション概要 ##6.2.2 データベースの作成 ##6.2.3 テーブルの作成 ##6.2.4 アプリケーションを配置するディレクトリの作成 ##6.2.5 コメント投稿フォームの作成 ##6.2.6 保存処理 ##6.2.7 エラーメッセージ出力 ##6.2.8 投稿されたひとことの表示 ##6.2.9 投稿後のリダイレクト #6.3 レガシーPHPからの脱却 ##6.3.1 レガシーPHPコード ##6.3.2 ロジックとビューの分離 ##6.3.3 役割に応じたファイルの分割 #6.4 さらなる役割の分割 ##6.4.1 役割の分割と共通化 ##6.4.2 フレームワーク

#7章 フレームワークによる効率的な開発 #7.1 開発の流れ ##7.1.1 フレームワークとは ##コラム オープンソースのフレームワーク ##7.1.2 開発効率の向上 ##7.1.3 フレームワークとオブジェクト指向 #7.2 フレームワーク作成 ##7.2.1 フレームワークの要件 ##7.2.2 MVCモデル ##7.2.3 フレームワークの構造 ##7.2.4 フレームワークの処理の流れ ##7.2.5 ディレクトリ構成 ##7.2.6 クラスとオートロード ##7.2.7 ClassLoaderクラス ##7.2.8 bootstrap.php ##コラム bootstrap.phpの配置場所について ##7.2.9 フロントコントローラと.htaccess ##7.2.10 Requestクラス ##7.2.11 ベースURLとPATH_INFO ##7.2.12 RequestクラスでのURL制御 ##7.2.13 ルーティング ##7.2.14 Routerクラス ##7.2.15 Responseクラス ##7.2.16 データベースアクセスとPDO ##7.2.17 DbManagerクラス ##7.2.18 DbRepositoryクラス ##7.2.19 Sessionクラス ##7.2.20 Applicationクラス ##7.2.21 コントローラの呼び出しと実行 ##7.2.22 例外の活用 ##7.2.23 コントローラとビュー ##7.2.24 Controllerクラス ##7.2.25 Controller::run()メソッド ##7.2.26 ビューの仕組み ##7.2.27 Viewクラス ##7.2.28 Controller::render()メソッド ##7.2.29 Controllerクラスとリダイレクト ##コラム リダイレクトのステータスコード ##7.2.30 CSRF対策 ##7.2.31 ログイン状態の制御 ##7.2.32 フレームワークの完成

#8章 ミニブログアプリケーション開発 #8.1 設計とセットアップ ##8.1.1 アプリケーション概要 ##8.1.2 機能一覧 ##8.1.3 コントローラ設計 ##8.1.4 ミニブログアプリケーションの作成 ##コラム レンタルサーバを使う場合 ##コラム ドメインとアンダースコア ##8.1.5 データベースの作成 ##8.1.6 MiniBlogApplicationクラス ##コラム データベースとユーザ ##8.1.7 フロントコントローラの書き換え ##8.1.8 レイアウトビューファイルの作成 #8.2 ユーザ登録機能作成 ##8.2.1 アクションの作成手順 ##8.2.2 ユーザ登録とデータベースアクセス ##8.2.3 Repositoryクラスの役割 ##8.2.4 UserRepositoryクラス ##コラム パスワードのハッシュ化 ##8.2.5 ユーザIDからレコードを取得する処理 ##8.2.6 signupアクション ##8.2.7 登録処理の流れ ##8.2.8 registerアクション ##8.2.9 ビューファイルの修正/signupAction()メソッドの修正 #8.4 ホームページと投稿 ##8.4.1 StatusRepositoryクラス ##8.4.2 indexアクション ##8.4.3 ビューファイルの共通化 ##8.4.4 postアクション #8.5 ユーザの投稿一覧と投稿詳細 ##8.5.1 StatusRepositoryクラスの拡張 ##8.5.2 ルーティング定義とリンクの記述 ##8.5.3 userアクション ##8.5.4 showアクション #8.6 アカウント情報管理とログイン ##8.6.1 アカウント情報の実装 ##8.6.2 indexアクション ##8.6.3 signinアクション ##8.6.4 authenticateアクション ##コラム ログイン時のバリデーションエラーメッセージ ##8.6.5 signoutアクション ##8.6.6 レイアウトにナビゲーションを追加 ##8.6.7 ログイン状態のみ有効なアクションの制御 #8.7 フォロー ##8.7.1 フォローとは ##8.7.2 FollowingRepositoryクラス ##8.7.3 フォローボタン ##8.7.4 followアクション ##8.7.5 フォローしているユーザの表示 ##8.7.6 フォローしているユーザの投稿表示 #8.8 デザインの修正 ##8.8.1 デザインの改善点 ##8.8.2 おわりに

#Part 4 PHPセキュリティ

#9章 PHPで作るWebアプリケーションのセキュリティ(前編) #9.1 セキュリティ概説 ##9.1.2 Webアプリケーションとセキュリティ ##9.1.3 セキュリティ基礎知識 #9.2 スクリプト挿入攻撃(Script Insertion) ##9.2.1 スクリプト挿入攻撃とは ##9.2.2 脆弱性 ##9.2.3 対応方法 #9.3 クロスサイトスクリプティング(Cross Site Scripting/XSS) ##9.3.1 クロスサイトスクリプティングとは ##9.3.2 脆弱性 ##9.3.3 対応方法 #9.4 クロスサイトリクエストフォージェリ(Cross Site Request Forgeries/CSRF) ##9.4.1 クロスサイトリクエストフォージェリとは ##9.4.2 脆弱性 ##9.4.3 対応方法 #9.5 SQLインジェクション(SQL Injection) ##9.5.1 SQLインジェクションとは ##9.5.2 脆弱性 ##9.5.3 対応方法 #9.6 セッション固定攻撃 ##9.6.1 セッション固定攻撃とは ##9.6.2 脆弱性 ##9.6.3 対応方法 ##コラム セッションIDに利用できる文字と文字数 #9.7 セッションハイジャック ##9.7.1 セッションハイジャックとは ##9.7.2 脆弱性 ##9.7.3 対応方法

#10章 PHPで作るWebアプリケーションのセキュリティ(後編) #10.1 HTTPヘッダインジェクション ##10.1.1 HTTPヘッダインジェクションとは ##コラム HTTPヘッダインジェクションについて ##10.1.2 脆弱性 ##10.1.3 対応方法 #10.2 メールの第三者中継 ##10.2.1 メールの第三者中継とは ##10.2.2 脆弱性 ##10.2.3 対応方法 #10.3 変数汚染攻撃 ##10.3.1 変数汚染攻撃とは ##10.3.2 脆弱性 ##10.3.3 対応方法 #10.4 Nullバイト攻撃 ##10.4.1 Nullバイト攻撃とは ##10.4.2 脆弱性 ##10.4.3 対応方法 ##コラム POSIX互換正規表現関数を使っている際の注意点 #10.5 ディレクトリトラバーサル ##10.5.1 ディレクトリトラバーサルとは ##10.5.2 脆弱性 ##10.5.3 対応方法 #10.6 eval利用攻撃 ##10.6.1 eval利用攻撃とは ##10.6.2 脆弱性 ##10.6.3 対応方法 #10.7 ファイルアップロード攻撃 ##10.7.1 ファイルアップロード攻撃とは ##10.7.2 脆弱性 ##10.7.3 対応方法 #10.8 インクルード攻撃 ##10.8.1 インクルード攻撃とは ##10.8.2 脆弱性 ##10.8.3 対応方法 ##コラム インクルードファイルの拡張子 #10.9 パス・ディスクロージャ ##10.9.1 パス・ディスクロージャとは ##10.9.2 脆弱性 ##10.9.3 対応方法 #10.10 コマンド実行攻撃(Command Injection) ##10.10.1 コマンド実行攻撃とは ##10.10.2 脆弱性 ##10.10.3 対応方法 #10.11 サーバ設定 ##10.11.1 PHPの設定 ##10.11.2 Apacheの設定

#Part5 テクニカルなPHPの活用

#11章 実践オブジェクト指向 #11.1 PHPとオブジェクト指向 ##11.1.1 オブジェクト指向の活用 ##11.1.2 Standard PHP Library(SPL) #11.2 マジックメソッド ##11.2.1 マジックメソッドとは ##11.2.2 __construct()メソッド/__destruct()メソッド ##11.2.3 __get()メソッド/__set()メソッド ##11.2.4 __isset()メソッド/__unset()メソッド ##11.2.5 __call()メソッド/__callStatic()メソッド ##11.2.6 __sleep()メソッド/__wakeup()メソッド ##11.2.7 __toString()メソッド ##11.2.8 __invoke()メソッド ##11.2.9 __clone()メソッド #11.3 配列オブジェクト ##11.3.1 配列オブジェクトとインターフェイス ##11.3.2 Iteratorインターフェイス ##11.3.3 IteratorAggregateインターフェイス ##11.3.4 ArrayAccessインターフェイス ##11.3.5 SPLのクラス/インターフェイス #11.4 例外 ##11.4.1 例外処理 ##11.4.2 SPL例外 #11.5 PDO ##11.5.1 データベースアクセスの抽象化 ##11.5.2 PDO ##11.5.3 接続 ##11.5.4 問い合わせ処理 ##11.5.5 結果セットと取得メソッド ##11.5.6 結果セットとフェッチモード ##11.5.7 更新処理 ##11.5.8 プリペアドステートメント ##11.5.9 トランザクション ##11.5.10 エラー処理 #11.6 オートロード ##11.6.1 オートロードとは ##11.6.2 __autoload()関数 ##11.6.3 SPLとオートロード #11.7 名前空間 ##11.7.1 名前空間とクラス名のルール ##11.7.2 オートローダを作成する

#Part 6 PHPレシピ

#12章 レシピことはじめ #12.1 PHPマニュアルの歩き方 ##12.1.1 PHPのマニュアル ##コラム 日本語のマニュアルに関するコミュニティ ##12.1.2 PHPマニュアルの読み方 ##12.1.3 PHPマニュアルの様々な利用法 ##12.1.4 検索 #12.2 PHPの設定 ##12.2.1 PHPの設定とは ##12.2.2 設定の変更 ##12.2.3 推奨の設定 ##12.2.4 PHPの主な設定

#13章 標準機能 #13.1 文字列 ##13.1.1 文字列に対する操作 ##13.1.2 変数をフォーマットする ##13.1.3 数値をフォーマットする ##13.1.4 HTMLタグをエスケープする ##13.1.5 改行を ##タグに変換する ##13.1.6 文字列の長さを調べる ##13.1.7 文字列の一部を切り出す ##13.1.8 配列を文字列として連結する ##13.1.9 文字列の両端から不要な空白文字を除去する ##13.1.10 大文字や小文字の変換をする ##13.1.11 URL文字列を解析する ##13.1.12 文字列を丸める ##13.1.13 全角・半角を変換する #13.2 文字コード ##13.2.1 文字コードに対する操作 ##13.2.2 文字コードの設定 ##13.2.3 文字コードを変換する #13.3 配列 ##13.3.1 配列に対する操作 ##13.3.2 配列の要素の追加と削除 ##13.3.3 配列の要素を並び替える ##13.3.4 配列の要素数を得る ##13.3.5 文字列を分割して配列にする ##13.3.6 配列の要素を複数の変数へ代入する ##13.3.7 配列を結合する ##13.3.8 配列のキーをすべて取得する ##13.3.9 配列に値が含まれるか調べる ##13.3.10 配列を指定した値で埋める ##13.3.11 配列の一部を切り出す ##13.3.12 配列のすべての要素にコールバックを適用する ##13.3.13 配列の要素をコールバックでフィルタする #13.4 正規表現 ##13.4.1 PCREとPOSIX拡張 ##13.4.2 PCRE正規表現構文 ##13.4.3 preg_match ##コラム その判定,わざわざ正規表現を使う必要があるの? ##コラム メールアドレスと正規表現 ##13.4.4 preg_match_all ##13.4.5 preg_replace ##13.4.6 preg_split ##13.4.7 preg_quote ##13.4.8 mb_ereg

#14章 ライブラリとフォーマット #14.1 ライブラリの利用 ##14.1.1 PHPのライブラリ ##14.2.2 PEAR ##コラム PEAR 2 ##14.2.3 PECL ##14.2.4 APC ##14.2.5 Xdebug #14.3 メール ##14.3.1 PHPでのメール送信 ##14.3.2 mail()関数 ##コラム メールのセキュリティ ##14.3.3 mb_send_mail()関数 ##14.3.4 ライブラリを利用したメールの扱い #14.4 日付と時間 ##14.4.1 日付と時間の注意点 ##14.4.2 DateTimeクラス ##14.4.3 タイムゾーンを指定する ##14.4.4 DateIntervalクラス ##14.4.5 日付の差の計算・加算・減算をする ##14.4.6 日付に対して繰り返し演算を実行する ##14.4.7 date()などの関数 #14.5 ファイルとディレクトリ ##14.5.1 ファイルとディレクトリに対する操作 ##14.5.2 ファイルの内容を文字列として取得する ##14.5.3 文字列をファイルに保存する ##14.5.4 SplFileObject ##14.5.5 ファイル一覧の取得 ##14.5.6 ファイルやディレクトリの操作 ##14.5.7 様々なチェック・情報取得関数 #14.6 XML ##14.6.1 PHPとXML ##14.6.2 SimpleXMLオブジェクト ##14.6.3 変更・追加・XMLとして取得 ##14.6.4 名前空間付きのノードの取得 ##14.6.5 SimpleXMLの弱点 #14.7 データフォーマット ##14.7.1 シリアライズ ##14.7.2 JSON #Appendix ##App-A PHPコンパイルオプション ##App-B php.ini

Cookies help us deliver our services. By using our services, you agree to our use of cookies Learn more