PHP初心者 (自分) が知っておくべきだと思ったポイントを書籍『プログラミングPHP』 (オライリー刊) からいくつかピックアップしてみた。

「C言語, Java, Perl, Ruby など他の言語はそれなりに知ってるけどPHPはよく知らない」という状況を改善するために。

知っておくべきポイントあれこれ

PHPでは、ユーザーが定義したクラスや関数名は大文字小文字が区別されない。変数名は大文字小文字が区別される。

ユーザーが定義したクラスや関数名は大文字小文字が区別されない。変数名は大文字小文字が区別される。

変数は名前の前にドル記号「$」を付ける。型チェックなし。異なる型に置き換えることが可能。変数のスコープはローカル、グローバル、スタティック、関数パラメータの4種。

変数は名前の前にドル記号「$」を付ける。型チェックなし。異なる型に置き換えることが可能。変数のスコープはローカル、グローバル、スタティック、関数パラメータの4種。

文字列リテラルはシングルクォートかダブルクォートで囲む。ダブルクォートの中では変数が展開されたり、エスケープシーケンスが使える。

文字列リテラルはシングルクォートかダブルクォートで囲む。ダブルクォートの中では変数が展開されたり、エスケープシーケンスが使える。

文字列の連結にはドット「.」を使う。

文字列の連結にはドット「.」を使う。

文字列の出力には echo, print, printf を使う。デバッグには print_r, var_dump が便利。 error_log も使うけど。

文字列の出力には echo, print, printf を使う。デバッグには print_r, var_dump が便利。 error_log も使うけど。

文字列の比較。 == は数値などを文字列にキャストしてから比較される。 === 演算子はキャストしない。

文字列の比較。 == は数値などを文字列にキャストしてから比較される。 === 演算子はキャストしない。

HTMLエスケープには htmlentities, htmlspecialchars, get_html_translation_table 関数を使う。

HTMLエスケープには htmlentities, htmlspecialchars, get_html_translation_table 関数を使う。

URLエンコードには urlencode, rawurlencode 関数を使う。半角スペース空白文字の扱いに注意。

URLエンコードには urlencode, rawurlencode 関数を使う。半角スペース空白文字の扱いに注意。

配列の初期化は array 関数で。いわゆる普通のインデックス配列と連想配列が同居。内部的にはどちらも連想配列。

配列の初期化は array 関数で。いわゆる普通のインデックス配列と連想配列が同居。内部的にはどちらも連想配列。

配列の末尾に要素を追加するときは [] 構文を使う。

配列の末尾に要素を追加するときは [] 構文を使う。

関数に渡す値を参照渡しにする場合は、引数名の前にアンパサンド「&」を付ける。PHPのバージョンによっては、オブジェクトは自動的に参照渡しになるらしいけど。

関数に渡す値を参照渡しにする場合は、引数名の前にアンパサンド「&」を付ける。PHPのバージョンによっては、オブジェクトは自動的に参照渡しになるらしいけど。

class でクラスを定義。 var でプロパティ(メンバ変数)、 function で関数。 extends で継承。

class でクラスを定義。 var でプロパティ、 function で関数。 extends で継承。

new でクラスのオブジェクトを生成。プロパティやメソッドへのアクセスは矢印 -> を使う。クラス内部からは $this-> でアクセスできる。

new でクラスのオブジェクトを生成。プロパティやメソッドへのアクセスは矢印 -> を使う。クラス内部からは $this で。

コンストラクタは __constract 関数。PHPでは親クラスのコンストラクタは自動的に呼び出されない。

コンストラクタは __constract 関数。PHPでは親クラスのコンストラクタは自動的に呼び出されない。

グローバル定数は define 関数で定義。クラス内では const で定義。オブジェクト内からは self 記法でアクセス。

グローバル定数は define 関数で定義。クラス内では const で定義。オブジェクト内からは self 記法でアクセス。

PHPのガベージコレクション(GC)。リファレンスカウント。copy-on-write方式のメモリ管理。

PHPのGC。リファレンスカウント。copy-on-write方式のメモリ管理。

外部ファイルのコードを読み込むには require_once か include_once を使う。ファイルが無いときに致命的エラーになるのがrequire。

外部ファイルのコードを読み込むには require_once か include_once を使う。ファイルが無いときに致命的エラーになるのがrequire。

参考書籍

これらの知っておくべきポイントは O'Reilly Japan - プログラミングPHP 第2版 の第1章~第6章からピックアップした。

  • 1章 PHPについて
  • 2章 PHP言語の基本
  • 3章 関数
  • 4章 文字列
  • 5章 配列
  • 6章 オブジェクト
  • 7章 ウェブに関するテクニック
  • 8章 データベース
  • 9章 グラフィックス
  • 10章 PDF
  • 11章 XML
  • 12章 セキュリティ
  • 13章 アプリケーションに関するテクニック
  • 14章 PHPの拡張
  • 15章 WindowsでのPHP

7章以降は必要な場面になってから把握すればいい領域だと判断した。

Webアプリケーション開発の定番言語であるPHP言語を、言語仕様から実用的なプログラミングテクニックまで詳細に解説―「本書を読み終えることで、PHP言語の動作原理を知ることができます。また、PHPに付属する多くの拡張モジュールの使用方法を身に付け、自分でPHPのウェブアプリケーションを設計して作成できるようになるでしょう。」(本書「はじめに」より)
PHP言語を扱うすべてのユーザのための本格的解説書。

O'Reilly Japan - プログラミングPHP 第2版

もう1冊、O'Reilly Japan - 初めてのPHP5 増補改訂版 という書籍も読んでみたけど、こっちは『PHP初心者』というより『プログラミング初心者』向けに近い印象。言語仕様とか内部の挙動とかあんまり書いてなかったので。クラスの説明は3ページしかなかったし。。。

PHP関連記事

さいきん調べたPHP関連の記事をピックアップしておく。

tags: php book

Posted by NI-Lab. (@nilab)