|
【カテゴリ】 PHP
独習PHP 第3版
サポート終了
|
山田祥寛/著
株式会社 翔泳社/発行
定価
3,520円
B5変版・
576ページ・
1色
ISBN 978-4-7981-3547-2
発刊日:
2016年4月08日
|
[お知らせ] 2017/04/25、配布サンプルを修正。旧バージョンをご利用の方はお手数ですが、再ダウンロードしてください。
本書の特徴
基礎からきっちり身に付くPHP入門書。PHP7対応
PHP7の基本構文から、クラス、DB連携、セキュリティ対策まで、しっかり学べます。
解説→例題→練習問題(理解度チェック)という3ステップで、基礎/基本テクニックをしっかり習得できます。
実際にサンプルコードを入力し、動作を確かめながら学習することで、いっそう理解が深まります。サンプルはサポートページからダウンロードできます。
まとめて読んで 更にスキルアップのこんな書籍
- ・マイクロフレームワークSlimの解説書
- 「PHPマイクロフレームワークSlim Webアプリケーション開発」(ソシム)
- ・人気のPHPフレームワークLaravel 6の解説書
- 「速習 Laravel 6」(WINGSプロジェクト)
- ・PHPのライブラリを使ってスマートにアプリを作ろう
- 「PHPライブラリ&サンプル実践活用[厳選100]」(技術評論社)
- ・SQLに自信がない方へ書いて覚えるドリル
- 「書き込み式SQLのドリル 改訂新版」(日経BP)
- ・Apache HTTP Server について調べたいなら
- 「Apacheポケットリファレンス」(技術評論社)
本書について取り上げていただいたブログさま
-
・つれずれなるままの開発日記 -
coltwareさま
-
本の紹介「独習PHP 第3版」(2016年5月21日)
-
・びーおーぷんどっとねっと -
beopner12さま
-
独習PHP第3版はPHPの入門におすすめしたい1冊(2016年5月10日)
-
・Qiita -
d-daiさま
-
独習PHP第3版を読んでみた(2016年4月27日)
-
・CodeZine -
CodeZine編集部さま
-
【新刊紹介】『独習PHP 第3版』4月8日発売、基礎からがっつり学べる入門書が最新のPHP 7に対応(2016年4月21日)
-
・WorkaHolic -
大福さま
-
プログラミング初心者に送るPHPのおすすめ入門書3選(2016年4月05日)
Contents |
- 第1章 イントロダクション
-
1.1 PHPとWebアプリケーション
1.1.1 クライアント/サーバ間の通信
1.1.2 静的なページと動的なページ
1.1.3 クライアントサイド技術とサーバサイド技術
1.2 サーバサイド技術におけるPHPの位置付け
1.3 PHP環境を設定するための手順
1.3.1 PHPプログラミングに必要なソフトウェア
1.3.2 XAMPPによる環境設定の手順
1.3.3 サンプル実行のための準備
この章の理解度チェック
- 第2章 PHPの基本
-
2.1 PHPの基本構文
2.1.1 拡張子は「.php」が基本
2.1.2 文字コードの設定
2.1.3 PHPはインタプリタ言語
2.1.4 PHPはHTML埋め込み型言語
2.1.5 文を区切るのはセミコロン(;)
2.1.6 大文字/小文字は区別しない
2.1.7 コメントは開発者のための備忘録
2.2 変数
2.2.1 変数の「宣言」
2.2.2 変数の命名規則
2.2.3 [補足]可変変数
2.3 定数
2.3.1 定数の基本
2.3.2 定義済みの定数
2.4 データ型
2.4.1 論理リテラル(bool)
2.4.2 整数リテラル(int)
2.4.3 浮動小数点リテラル(float)
2.4.4 文字列リテラル
2.4.5 シングルクォート文字列とダブルクォート文字列の違い
2.4.6 ヒアドキュメント
2.4.7 ヌル(null)
2.5 配列
2.5.1 配列の基本
2.5.2 [補足]配列の内容を確認する
2.5.3 連想配列の基本
2.5.4 多次元配列
2.5.5 [補足]通常配列と連想配列の関係
2.6 型の相互変換
2.6.1 暗黙的な変換
2.6.2 明示的な変換(キャスト)
2.6.3 [補足]文字列→数値の型キャスト
この章の理解度チェック
- 第3章 演算子
-
3.1 代数演算子
3.1.1 文字列混在の演算
3.1.2 加算子(++)/減算子(--)
3.1.3 マジカルインクリメント
3.1.4 浮動小数点数の演算に注意
3.1.5 配列の結合
3.2 代入演算子
3.2.1 値による代入と参照による代入
3.3 比較演算子
3.3.1 文字列混在の比較
3.3.2 厳密な等価演算子(===)
3.3.3 浮動小数点数の比較
3.3.4 配列の比較
3.3.5 条件演算子(?:)
3.4 論理演算子
3.4.1 ショートカット演算(短絡演算)
3.5 ビット演算子
3.5.1 ビット論理演算子
3.5.2 ビットシフト演算子
3.6 その他の演算子
3.6.1 文字列演算子
3.6.2 実行演算子
3.6.3 エラー制御演算子
3.7 演算子の優先順位と結合則
3.7.1 優先順位
3.7.2 結合則
この章の理解度チェック
- 第4章 制御構文
-
4.1 条件分岐
4.1.1 if命令─単純分岐
4.1.2 if命令─多岐分岐
4.1.3 if命令─入れ子構造
4.1.4 [補足]中カッコは省略可能
4.1.5 switch命令─多岐分岐
4.1.6 [補足]switch命令の判定方法
4.2 繰り返し処理
4.2.1 while/do〜while命令
4.2.2 [補足]無限ループ
4.2.3 for命令
4.2.4 [補足]カンマ演算子
4.2.5 foreach命令
4.2.6 値変数の参照渡し
4.3 ループの制御
4.3.1 break命令
4.3.2 continue命令
4.3.3 ループのネストとbreak/continue命令
4.3.4 [補足]switch命令でのcontinue命令
4.4 制御命令のその他の話題
4.4.1 goto命令
4.4.2 スクリプトブロックと固定テンプレート
4.4.3 [補足]制御命令の別構文
この章の理解度チェック
- 第5章 組み込み関数
-
5.1 関数の基本
5.1.1 関数の呼び出し
5.1.2 組み込み関数
5.1.3 構文の表記について
5.2 文字列関数
5.2.1 文字列の長さを取得する─mb_strlen関数
5.2.2 文字列を大文字⇔小文字で変換する─strtolower/strtoupper関数
5.2.3 部分文字列を取得する─mb_substr関数
5.2.4 部分文字列を置換する─str_replace関数
5.2.5 文字列を特定の区切り文字で分割する─explode関数
5.2.6 特定の文字位置を検索する─mb_strpos/mb_strrpos関数
5.2.7 文字列を整形する─printf関数
5.2.8 文字列を変換する─mb_convert_kana関数
5.2.9 文字エンコーディングを変換する─mb_convert_encoding/mb_convert_variables関数
5.2.10 電子メールを送信する─mb_send_mail関数
5.3 配列関数
5.3.1 配列の要素数を取得する─count関数
5.3.2 配列の内容を連結する─array_merge関数
5.3.3 配列の各要素を結合する─implode関数
5.3.4 配列の先頭/末尾に要素を追加/削除する─array_push/array_pop/array_shift/array_unshift関数
5.3.5 [補足]スタックとキュー
5.3.6 配列に複数要素を追加/置換/削除する─array_splice関数
5.3.7 配列から特定範囲の要素を取得する─array_slice関数
5.3.8 配列の内容を検索する─array_search関数
5.3.9 配列に特定の要素が存在するかを確認する─in_array関数
5.3.10 配列の内容を並べ替える─sort関数
5.3.11 自作のルールで配列を並べ替える─usort関数
5.4 正規表現(PCRE)関数
5.4.1 正規表現の基本
5.4.2 利用する正規表現関数
5.4.3 正規表現で文字列を検索する─preg_match関数
5.4.4 すべてのマッチ文字列を取得する─preg_match_all関数
5.4.5 正規表現で文字列を置換する─preg_replace関数
5.4.6 [補足]URL文字列の正規表現パターン
5.4.7 正規表現で文字列を分割する─preg_split関数
5.4.8 正規表現パターンの修飾子
5.5 ファイルシステム関数
5.5.1 [例1]テキストファイルへの書き込み
5.5.2 ファイルを開く─fopen/fclose関数
5.5.3 fopen関数でのエラー処理─エラー制御演算子
5.5.4 ファイルへの書き込み─fwrite関数
5.5.5 ファイルのロック─flock関数
5.5.6 [例2]タブ区切りテキストの読み込み─fgetcsv関数
5.5.7 [例3]タブ区切りテキストの読み込み(別解)─fgets/file関数
5.5.8 ファイルシステム関数の設定パラメータ
5.6 その他の関数
5.6.1 数学関数
5.6.2 変数を破棄する─unset関数
5.6.3 変数のデータ型を判定する─is_xxxxx関数
この章の理解度チェック
- 第6章 ユーザ定義関数
-
6.1 ユーザ定義関数とは?
6.1.1 ユーザ定義関数の基本
6.1.2 引数/戻り値の型宣言[7.0]
6.1.3 スクリプトの外部化
6.1.4 [補足]関数を定義する位置
6.2 変数の有効範囲(スコープ)
6.2.1 グローバル変数とローカル変数
6.2.2 関数内でグローバル変数を利用する─global命令
6.2.3 静的変数─static命令
6.2.4 インクルードファイルのスコープ
6.2.5 [補足]unset関数の挙動
6.3 引数のさまざまな記法
6.3.1 引数のデフォルト値
6.3.2 引数の参照渡し
6.3.3 可変長引数の関数[5.6]
6.3.4 [例1]可変長引数と通常の引数の混在
6.3.5 「.」演算子による引数のアンパック
6.4 関数呼び出しと戻り値
6.4.1 複数の戻り値
6.4.2 再帰関数
6.4.3 可変関数
6.4.4 無名関数(クロージャ)
6.4.5 親スコープの変数を引き継ぐ─use命令
6.5 ジェネレータ
6.5.1 [例2]素数を求めるジェネレータ
6.5.2 ジェネレータの結果を取得する[7.0]
6.5.3 一部の処理を他のジェネレータに委譲する[7.0]
この章の理解度チェック
- 第7章 標準クラスライブラリ
-
7.1 オブジェクト指向プログラミングの基本
7.1.1 クラスと関数/変数
7.1.2 クラスとオブジェクトの関係
7.1.3 インスタンス化とメンバの呼び出し
7.1.4 静的プロパティ/静的メソッド
7.2 DateTimeクラス
7.2.1 DateTimeオブジェクトの生成
7.2.2 日付/時刻値を指定のフォーマットで整形する─formatメソッド
7.2.3 日付/時刻文字列を解析する─createFromFormatメソッド
7.2.4 日付/時刻値を加算/減算する─add/subメソッド
7.2.5 日付/時刻値の差分を取得する─diffメソッド
7.2.6 [補足]日付/時刻関数
7.3 DirectoryIteratorクラス
7.3.1 フォルダを開く
7.3.2 フォルダ配下の要素を順に取得する
7.3.3 ファイル情報を取得する
7.4 外部ライブラリの活用─Composer
7.4.1 Composerのインストール
7.4.2 Composerで利用できる主なコマンド
7.5 テンプレートエンジンSmarty
7.5.1 [例]テンプレートエンジンの基本
7.5.2 [補足]Smartyの拡張セットアップ
7.5.3 テンプレートの構成要素
この章の理解度チェック
- 第8章 リクエスト情報
-
8.1 リクエスト情報
8.1.1 HTTP通信の確認
8.1.2 HTTPメソッドとHTTPステータス
8.1.3 スーパーグローバル変数
8.2 ポストデータ─$_POST
8.2.1 [例1]ポストデータを取得する
8.2.2 エスケープ処理の必要性
8.2.3 [例2]複数の値を持つ要素にアクセスする
8.3 クエリ情報─$_GET
8.3.1 [例3]クエリ情報を取得する
8.3.2 [例4]ハイパーリンク経由で値を受け渡しする
8.3.3 ポストデータとクエリ情報
8.4 ヘッダ情報─$_SERVER
8.4.1 ヘッダ情報の種類
8.4.2 ヘッダ情報の利用方法
8.4.3 [例5]リクエストヘッダを取得する
8.4.4 [補足]レスポンスヘッダを設定する(1)─リダイレクト
8.4.5 [補足]レスポンスヘッダを設定する(2)─その他の用法
8.5 サーバ環境変数─$_ENV
8.6 クッキー情報─$_COOKIE
8.6.1 [例6]クッキーの基本的な読み書き
8.6.2 クッキー授受の仕組み
8.7 セッション情報─$_SESSION
8.7.1 [例7]基本的なセッション情報の読み書き
8.7.2 セッションの仕組み
8.7.3 セッションを破棄する
8.7.4 セッションにかかわる諸設定
8.8 アップロード処理の実装─$_FILES
8.8.1 [例8]画像ファイルのアップロード
8.8.2 入力フォームでの注意点
8.8.3 アップロードの実処理
8.8.4 アップロードのエラー処理
8.8.5 アップロードに関連する設定パラメータ
この章の理解度チェック
- 第9章 データベース連携
-
9.1 データベースの種類
9.1.1 リレーショナルデータベースの種類
9.2 データベース操作の基本
9.2.1 MariaDB monitorの使い方
9.2.2 SQLの基本
9.3 データベース抽象化レイヤ
9.3.1 PDO(PHP Data Objects)
9.4 データベースへの接続
9.4.1 接続と切断
9.4.2 例外処理の基本─try〜catch〜finally命令
9.4.3 接続スクリプトの外部化
9.4.4 接続オプション
9.5 SQLクエリの発行
9.5.1 [例]入力値を基にデータベースに登録する
9.5.2 名前付きパラメータと名前なしパラメータ
9.5.3 オートインクリメント値を取得する
9.6 結果セットの取得
9.6.1 フェッチメソッド
9.6.2 フェッチモード
9.7 パラメータ値のバインド
9.7.1 パラメータのデータ型を宣言する─バイナリデータの操作
9.7.2 bindValueメソッドとbindParamメソッド
9.8 トランザクション処理
9.8.1 トランザクションの活用
この章の理解度チェック
- 第10章 オブジェクト指向構文
-
10.1 クラスの定義
10.1.1 最も簡単なクラス
10.1.2 プロパティ
10.1.3 メソッド
10.1.4 コンストラクタ
10.1.5 デストラクタ
10.1.6 静的メソッド
10.1.7 静的プロパティ
10.1.8 クラス定数
10.2 カプセル化
10.2.1 アクセス修飾子
10.2.2 アクセサメソッド
10.3 継承
10.3.1 継承の基本
10.3.2 メソッドのオーバライド
10.3.3 スーパークラスのメソッドを呼び出す─parentキーワード(1)
10.3.4 スーパークラスのコンストラクタを呼び出す─parentキーワード(2)
10.3.5 オーバライドの禁止─final修飾子
10.4 ポリモーフィズム
10.4.1 抽象メソッド
10.4.2 インターフェイス
10.4.3 instanceof演算子
10.4.4 無名クラス[7.0]
10.5 トレイト
10.5.1 トレイトの基本
10.5.2 トレイトと多重継承
10.5.3 [例1]アクセサメソッドの実装
10.5.4 名前競合時の挙動
10.6 オブジェクトの操作
10.6.1 オブジェクトの代入
10.6.2 オブジェクトの比較
10.6.3 オブジェクトの反復処理
10.6.4 [例2]反復処理のカスタマイズ
10.7 例外処理
10.7.1 例外をスローする─throw命令
10.7.2 例外クラスを拡張する
10.7.3 エラー報告の処理
10.8 マジックメソッド
10.8.1 未定義のプロパティを処理する(1)─__get/__setメソッド
10.8.2 未定義のプロパティを処理する(2)─__isset/__unsetメソッド
10.8.3 未定義のメソッドを処理する─__call/__callStaticメソッド
10.8.4 オブジェクトの文字列表現を規定する─__toStringメソッド
10.8.5 オブジェクトを関数として実行する─__invokeメソッド
10.8.6 オブジェクトの複製方法をカスタマイズする─__cloneメソッド
10.8.7 デバッグ情報をカスタマイズする─__debugInfoメソッド[5.6]
10.9 名前空間
10.9.1 名前空間の基本
10.9.2 名前の記法と名前解決のルール
10.9.3 インポート
10.10 クラスの自動ローディング
10.10.1 spl_autoload_register関数
10.10.2 [例3]名前空間対応のオートローダ
10.10.3 spl_autoload_register関数の自動呼び出し
この章の理解度チェック
- 第11章 セキュリティ対策
-
11.1 クロスサイトスクリプティング
11.1.1 原因
11.1.2 対策
11.1.3 [補足]タグ文字列の許可
11.2 SQLインジェクション
11.2.1 原因
11.2.2 対策
11.2.3 [補足]OSコマンドインジェクション
11.3 クロスサイトリクエストフォージェリ
11.3.1 原因
11.3.2 対策
11.4 パストラバーサル
11.4.1 原因
11.4.2 対策
11.4.3 [補足]nullバイト攻撃
11.5 メールヘッダインジェクション
11.5.1 原因
11.5.2 対策
11.6 その他の攻撃と予防策
11.6.1 セッションハイジャック
11.6.2 ファイルアップロード攻撃
11.6.3 eval攻撃
11.6.4 インクルード攻撃
11.6.5 [補足]php.iniによる予防
11.7 入力値の検証
11.7.1 検証の前提
11.7.2 [例]入力フォームの検証処理
この章の理解度チェック
- 付録A 「練習問題」「この章の理解度チェック」解答
- Column
-
Apache/MariaDBが起動しない場合
PHPの歴史─PHP1.0〜PHP5.6
PHPの歴史─永久欠番のPHP6と、最新のPHP7
きれいなプログラム、書いていますか?─コーディング規約
PHPをより実践的に活用したい人のための関連書籍
アプリケーションフレームワークの歴史
PHPアプリ開発に役立つ統合開発環境─Eclipse PDT
PHPが利用可能なレンタルサーバー
printとechoの違いとは?
|
|