【PHP入門講座】 目次

**【2021/10/15 追記】**
**この記事は更新が停止されています。<font color="red">PHP を分かった気になって書いていた不正確な内容が多いため，過去の情報として参考程度にご覧ください。</font>また，完成にたどり着けなかったことをお詫びします。原則的には，[公式マニュアル](https://www.php.net/manual/ja/index.php)の参照をおすすめします。**

# 前書きとか

## ターゲット層は？

最低限 **HTML** についてある程度理解をされている方が対象です。 **XHTML** や **CSS** についての理解もあった方が望ましいと思います。 **C言語** などの基本的なプログラミング言語の経験もあれば幾分か理解がラクになるでしょう。なお、本講座では **XHTML5** の書き方で統一することにします。以下に有用な参考サイトを紹介します。

**XHTML5 移行メモ**
http://kanow.jp/web/xhtml5-memo.xhtml

**HTMLクイックリファレンス**
http://www.htmq.com/

**W3G**
https://w3g.jp/

## 他に入門サイトとか既にあるんじゃないの？

入門向けといえども、[スパゲティコード](http://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%91%E3%82%B2%E3%83%86%E3%82%A3%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0)を量産するようなものでは納得がいかないので、今回この講座の作成にあたることになりました。なお、私は普段から **例外処理** (想定外のリクエストが来たときの対応) をガチガチに固めるコーディングを心がけています。 「そこまでしなくてもいいだろ」と思う箇所もあるかもしれませんが、この講座では徹底していきたいと思います。エラーを全く出させないコーディングをしましょう。<ins>熟練者が分かっていて手抜きをするのと、初心者が手抜きと知らずに手抜きしてしまうのでは全く事情が異なります。</ins>

## 何故にQiita上で？

だって書くのめっちゃラクじゃんｗｗｗｗｗｗｗｗｗｗｗｗ

# 目次

## 1. PHP概論

1. [PHPを使うための準備](http://qiita.com/items/4508dc677b11e487effc)
1. [PHPで出来ることと処理の流れ](http://qiita.com/mpyw/items/176fb1f6fb75da74339f)
1. [変数と定数](http://qiita.com/mpyw/items/95e205056e25b7a59dfa)

## 2. Webフォームでの実践(入門編)

1. [XSS攻撃への対策](http://qiita.com/mpyw/items/565b3670dd0c7f9162fa)
1. [ユーザーに挨拶してみよう](http://qiita.com/mpyw/items/55369c245b0d22755151)
1. [想定外の入力への対応](http://qiita.com/mpyw/items/f298828002bbc488fe89)
1. [ちょっとひといき](http://qiita.com/mpyw/items/85f930cd893ddb27ff12)

## 3. 型と演算子

1. [デバッグ用関数](http://qiita.com/mpyw/items/96ed939a208e3cb95472)
1. [文字列](http://qiita.com/mpyw/items/d61b50d90e84e289e2be)
1. [数値・論理値・リソース](http://qiita.com/mpyw/items/346c535ade9dcf6e1b12)
1. [配列](http://qiita.com/mpyw/items/5a30250ba2d622352959)
1. [NULLと未定義の違い](http://qiita.com/mpyw/items/0a4ea0bc9a695da33f0c)
1. [型変換](http://qiita.com/mpyw/items/3aac811629622f7f4d8b)
1. [ビット演算](http://qiita.com/mpyw/items/ce626976ec4dc07dfec2)
1. [演算子](http://qiita.com/mpyw/items/1ea553fea092f597169a)
1. 緩やかな比較・厳密な比較

## 4. 制御構造と関数

1. 条件分岐とループ処理
1. 関数とクロージャ
1. ジェネレータ
1. 関数に似た言語構造
1. 変数初期化の必要性
1. 配列操作関数とその応用的な使い方
1. マジック定数

## 5. 参照

1. PHPにおけるプリミティブ型
2. シンボルテーブル
3. 値渡しと参照渡し
4. 参照カウント法とガベージコレクション

## 6. スーパーグローバル変数

1. GET・POST・COOKIE・REQUEST
1. FILES・SERVER・ENV
1. SESSION

## 7. エラーと例外

1. エラーの種類
1. 例外処理の基本
1. エラーと例外の違い
1. 例外スタックを用いた応用

## 8. Webフォームでの実践(応用編)

1. ユーザー入力をフィルタリングする汎用関数の作成
1. カレンダー表示スクリプトの作成
1. メールフォームの作成(3ファイルに分割)
1. メールフォームの作成(1ファイルに梱包)

## 9. クラスとオブジェクト(前半)

1. クラス・オブジェクトとアクセス権
1. 動的メソッドと動的プロパティ
1. 静的メソッドと静的プロパティ・クラス定数
1. 静的クラスとシングルトンの実現

## 10. 画像アップロード機能付きの掲示板作成

1. 基本的な機能の実装
1. ファイルロック処理の実装
1. 画像ファイルアップロード処理の実装
1. CSRF攻撃への対策

## 11. クラスとオブジェクト(後半)

1. マジックメソッド
1. オブジェクトと参照渡し
1. クラスの継承と遅延静的束縛
1. 抽象クラス・インターフェース・トレイト
1. 名前空間

## 12. 正規表現

1. 正規表現を使うかどうかの検討
1. PCRE正規表現構文の基本
1. エスケープ処理
1. 各PCRE正規表現関数とサブパターンの扱い
1. 最短マッチと最長マッチ
1. 独占的最長マッチと再試行無しサブパターン
1. 後方参照と先読み・後読み
1. コメントと再帰パターン
1. 条件付きサブパターン

## 13. データベース

1. リレーショナルデータベースとは
1. phpMyAdminの基本的な使い方
1. PDOの基本
1. PDOの応用

## 14. Twitter風SNS作成

1. データベースと設定ファイルの作成
1. 汎用関数モジュールの作成
1. 汎用的な変数構造フィルタリング関数の作成
1. 致命的なエラー発生時のためのページを準備
1. ユーザー・ログイン機能の実装
1. セッション固定攻撃への対策
1. ツイートの実装
1. ユーザーページの実装
1. フォロー機能の実装
1. タイムラインの実装
1. 返信と非公式リツイートの実装
1. お気に入りの実装
1. 公式リツイートの実装
1. ログアウトの実装
1. ツイートダウンロード機能の実装