WINGS(Www INtegrated Guide on Server-architecture)
Www INtegrated Guide on Server-architecture :
   ホーム お問い合わせ サーバーサイド環境構築設定 つぶやき ブックマーク レンタルサーバー 総合FAQ/訂正&ダウンロード このエントリーをはてなブックマークに追加        
  • 刊行書籍情報  [書籍マップ
  • オンライン公開 技術記事
  • シリーズ別書籍リスト
  • 「WINGS News」登録/解除
  • WINGSプロジェクト紹介
  • WINGSプロジェクトメンバ募集





【カテゴリ】 PHP


独習PHP 第4版  

独習PHP 第4版

山田祥寛/著
株式会社 翔泳社/発行
定価 3,740円
B5変版・ 664ページ・ 1色
ISBN 978-4-7981-6849-4
発刊日: 2021年6月14日

[Amazon.co.jpからオンライン購入する]

[お知らせ] 2023/02/12、配布サンプルのバグを修正。旧バージョンをご利用の方はお手数ですが、再ダウンロードしてください。

   FAQ 本書訂正 アンケート ダウンロード

本書の特徴

基礎からきっちり身に付くPHP入門書。PHP8対応

PHP8の基本構文から、クラス、DB連携、セキュリティ対策まで、しっかり学習。
解説→例題→練習問題(理解度チェック)の3ステップで、基本テクニックをしっかり習得。
実際にサンプルコードを入力し、動作を確かめながら学習することで、いっそう理解が深まります。サンプルはサポートページからダウンロード可能。
分野・レベル別マップ

本書について取り上げていただいたブログさま

・Yuu's Memo - Yuu's Memoさま
【独習PHP 第4版】を読んで(2021年7月29日)
・70歳からの学び - Hagiwaraさま
独習PHP第4版を読んで:(2021年7月14日)
・HIDEG - 風の民さま
『独習PHP 第4版』の感想(2021年7月13日)
・エンバインド株式会社 - 小林昌弘さま
独習PHP -第4版(2021年7月11日)
・栄諧情報システム株式会社 - 槌本裕二さま
レビュー : 独習PHP 第4版(2021年7月03日)
・モノゴト体験記。 - aoさま
独習PHP第4版を読んでみて思ったこと(2021年6月17日)

  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 Visual Studio Codeのインストール
 1.3.4 サンプル実行のための準備
1.4 PHPの基本構文
 1.4.1 基本的なアプリの作成
 1.4.2 拡張子は「.php」が基本
 1.4.3 文字コードの設定
 1.4.4 改行コードの設定
 1.4.5 PHPはインタプリター型の言語
 1.4.6 PHPはHTML埋め込み型言語
 1.4.7 文を区切るのはセミコロン(;)
 1.4.8 大文字/小文字は区別しない
 1.4.9 コメントは開発者のための備忘録
 この章の理解度チェック

第2章 PHPの基本
 
2.1 変数
 2.1.1 変数の宣言
 2.1.2 変数の命名規則
 2.1.3 より良い識別子のためのルール
 2.1.4 [補足]可変変数
2.2 定数
 2.2.1 定数の基本
 2.2.2 定数のルール
 2.2.3 [補足]define関数
 2.2.4 定義済みの定数
2.3 データ型
 2.3.1 論理リテラル(bool)
 2.3.2 整数リテラル(int)
 2.3.3 浮動小数点数リテラル(float)
 2.3.4 文字列リテラル
 2.3.5 シングルクォート文字列とダブルクォート文字列の違い
 2.3.6 ヒアドキュメント
 2.3.7 ヌル(null)
2.4 配列
 2.4.1 配列の基本
 2.4.2 [補足]配列の内容を確認する
 2.4.3 連想配列の基本
 2.4.4 多次元配列
 2.4.5 [補足]通常配列と連想配列の関係
2.5 型の相互変換
 2.5.1 暗黙的な変換
 2.5.2 明示的な変換(キャスト)
 2.5.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.2.2 分割代入
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.5.3 [応用]ビットフィールドによるフラグ管理
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 条件式を指定する場合の注意点
 4.1.6 [補足]if命令によるコメントアウト
 4.1.7 switch命令―多岐分岐
 4.1.8 [補足]switch命令の判定方法
 4.1.9 値を返す新しい「switch」―match式[8.0]
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.2.7 foreach命令での分割代入
4.3 ループの制御
 4.3.1 break命令
 4.3.2 continue命令
 4.3.3 入れ子のループを中断/スキップする
 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.2 文字列関数
 5.2.1 文字列の長さを取得する―mb_strlen関数
 5.2.2 文字列を大文字⇔小文字で変換する―mb_convert_case関数
 5.2.3 部分文字列を取得する①―mb_substr関数
 5.2.4 部分文字列を取得する②―mb_strstr関数
 5.2.5 部分文字列を置換する―str_replace関数
 5.2.6 文字列を特定の区切り文字で分割する―explode関数
 5.2.7 特定の文字位置を検索する―mb_strpos/mb_strrpos関数
 5.2.8 部分文字列の登場回数をカウントする―mb_substr_count関数
 5.2.9 文字列に特定の文字列が含まれるかを判定する―str_contains/str_starts_with/str_ends_with関数[8.0]
 5.2.10 文字列の前後から空白を除去する―trim/ltrim/rtrim関数
 5.2.11 文字列を整形する―printf関数
 5.2.12 文字列を変換する―mb_convert_kana関数
 5.2.13 文字エンコーディングを変換する―mb_convert_encoding関数
 5.2.14 電子メールを送信する―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.3.12 配列の内容を順に処理する―array_walk関数
 5.3.13 配列内の要素を加工する―array_map関数
 5.3.14 配列の内容を特定の条件で絞り込む―array_filter関数
 5.3.15 配列内の要素を順に処理して1つにまとめる―array_reduce関数
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 正規表現で置き換えたコールバック関数で処理する―preg_replace_callback関数
 5.4.7 正規表現で文字列を分割する―preg_split関数
 5.4.8 正規表現パターンの修飾子
 5.4.9 [例]正規表現による検索
5.5 ファイルシステム関数
 5.5.1 [例]テキストファイルへの書き込み
 5.5.2 ファイルを開く―fopen/fclose関数
 5.5.3 fopen関数でのエラー処理―エラー制御演算子
 5.5.4 ファイルへの書き込み―fwrite関数
 5.5.5 ファイルのロック―flock関数
 5.5.6 [例]タブ区切りテキストの読み込み―fgetcsv関数
 5.5.7 [例]タブ区切りテキストの読み込み(別解)―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 関数名
 6.1.3 仮引数と実引数
 6.1.4 戻り値
 6.1.5 引数/戻り値の型宣言
 6.1.6 複合的な型宣言
 6.1.7 スクリプトの外部化
 6.1.8 [補足]関数を定義する位置
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 名前付き引数[8.0]
 6.3.4 可変長引数の関数
 6.3.5 [例]可変長引数と通常の引数の混在
 6.3.6 [例]可変長引数で「1個以上の引数を渡す方法」
 6.3.7 「...」演算子による引数のアンパック
6.4 関数呼び出しと戻り値
 6.4.1 複数の戻り値
 6.4.2 再帰関数
 6.4.3 可変関数
 6.4.4 無名関数(クロージャー)
 6.4.5 親スコープの変数を引き継ぐ―use命令
 6.4.6 アロー関数[7.4]
6.5 ジェネレーター
 6.5.1 [例]素数を求めるジェネレーター
 6.5.2 ジェネレーターの結果を取得する
 6.5.3 一部の処理を他のジェネレーターに委譲する
 この章の理解度チェック

第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 ライブラリのインストール
 7.4.3 composerコマンドのその他のサブコマンド
7.5 HTTPクライアントGuzzle
 7.5.1 HTTP通信の基本
 7.5.2 HTTP POSTによる通信
 7.5.3 [例]JSONデータを取得する
 この章の理解度チェック

第8章 リクエスト情報
 
8.1 リクエスト情報
 8.1.1 HTTP通信の確認
 8.1.2 HTTPメソッドとHTTPステータス
 8.1.3 スーパーグローバル変数
8.2 ポストデータ―$_POST
 8.2.1 [例]ポストデータを取得する
 8.2.2 エスケープ処理の必要性
 8.2.3 [例]複数の値を持つ要素にアクセスする
8.3 クエリ情報―$_GET
 8.3.1 [例]クエリ情報を取得する
 8.3.2 [例]ハイパーリンク経由で値を受け渡しする
 8.3.3 ポストデータとクエリ情報
8.4 ヘッダー情報―$_SERVER
 8.4.1 ヘッダー情報の種類
 8.4.2 ヘッダー情報の利用方法
 8.4.3 [例]リクエストヘッダーを取得する
 8.4.4 [補足]レスポンスヘッダーを設定する①―リダイレクト
 8.4.5 [補足]レスポンスヘッダーを設定する②―その他の用法
8.5 サーバー環境変数―$_ENV
8.6 クッキー情報―$_COOKIE
 8.6.1 [例]クッキーの基本的な読み書き
 8.6.2 クッキー授受の仕組み
8.7 セッション情報―$_SESSION
 8.7.1 [例]基本的なセッション情報の読み書き
 8.7.2 セッションの仕組み
 8.7.3 セッションを破棄する
 8.7.4 セッション関連の設定パラメーター
8.8 アップロード処理の実装―$_FILES
 8.8.1 [例]画像ファイルのアップロード
 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キーワード①
 10.3.4 スーパークラスのコンストラクターを呼び出す―parentキーワード②
 10.3.5 オーバーライドの禁止―final修飾子
 10.3.6 委譲
 10.3.7 遅延静的束縛
10.4 ポリモーフィズム
 10.4.1 抽象メソッド
 10.4.2 インターフェイス
 10.4.3 instanceof演算子
 10.4.4 無名クラス
10.5 トレイト
 10.5.1 トレイトの基本
 10.5.2 トレイトと多重継承
 10.5.3 [例]アクセサーメソッドの実装
 10.5.4 名前競合時の挙動
10.6 オブジェクトの操作
 10.6.1 オブジェクトの代入
 10.6.2 オブジェクトの比較
 10.6.3 オブジェクトの反復処理
 10.6.4 [例]反復処理のカスタマイズ
 10.6.5 [例]素数を求めるイテレーター
10.7 例外処理
 10.7.1 例外クラスの型
 10.7.2 例外をスローする―throw命令
 10.7.3 例外をスローする場合の注意点
 10.7.4 エラー報告の処理
 10.7.5 スタックトレース情報
 10.7.6 独自の例外クラス
10.8 マジックメソッド
 10.8.1 未定義のプロパティを処理する①―__get/__setメソッド
 10.8.2 未定義のプロパティを処理する②―__isset/__unsetメソッド
 10.8.3 未定義のメソッドを処理する―__call/__callStaticメソッド
 10.8.4 オブジェクトの文字列表現を規定する―__toStringメソッド
 10.8.5 オブジェクトを関数として実行する―__invokeメソッド
 10.8.6 オブジェクトの複製方法をカスタマイズする―__cloneメソッド
 10.8.7 デバッグ情報をカスタマイズする―__debugInfoメソッド
10.9 名前空間
 10.9.1 名前空間の基本
 10.9.2 名前の記法と名前解決のルール
 10.9.3 インポート
10.10 クラスの自動ローディング
 10.10.1 spl_autoload_register関数
 10.10.2 spl_autoload_register関数の自動呼び出し
 10.10.3 [補足]Composerによる自動ローディングの実装
 この章の理解度チェック

第11章 高度なプログラミング
 
11.1 属性[8.0]
 11.1.1 属性の基本構文
 11.1.2 属性の自作
 11.1.3 [補足]リフレクションの主なメソッド
11.2 セキュリティ対策
 11.2.1 クロスサイトスクリプティング
 11.2.2 SQLインジェクション
 11.2.3 クロスサイトリクエストフォージェリ
 11.2.4 パストラバーサル
 11.2.5 メールヘッダーインジェクション
 11.2.6 [補足]php.iniによる予防
 11.2.7 その他の攻撃と予防策
11.3 ドキュメンテーションコメント
 11.3.1 ドキュメンテーションコメントの例
 11.3.2 ドキュメントの生成
11.4 VSCode+PHP Debug拡張によるデバッグ
 11.4.1 デバッグ機能の有効化
 11.4.2 デバッグの実行
 この章の理解度チェック

付録A 「練習問題」「この章の理解度チェック」解答

Column
Apache/MariaDBが起動しない場合
PHPの歴史 ―PHP 1.0~5.6
PHPの歴史 ―永久欠番のPHP 6と、最新のPHP 8
PHPをより実践的に活用したい人のための関連書籍
きれいなプログラム、書いていますか? ―コーディング規約
アプリケーションフレームワークの歴史
よく見かけるエラーとその対処法
OPcacheによるアプリ高速化

本ページへのリンクには、このロゴをご利用ください。


著作権情報個人情報保護について広告掲載についてRSSフィードについて
出版社の方々へ会社概要スタッフ紹介サイトマップ  
書籍/記事に関するご質問/お問い合わせは「WINGSお問い合わせフォーム」をご利用ください。
Copyright(c) 1998-2024,Yamada Yoshihiro.  All Right Reserved.