パーフェクトPHP読みました(その1)

これからPHPを学んでいこうと思い、下記の理由からパーフェクトPHPを購入しました。

  • PHPは久しく触っていなかったため、体系的に学べる書籍がほしい
  • 他の言語でプログラミングの基礎は理解している

gihyo.jp

この本の最初のページに書いてあるとおり本書籍の対象となる読者はプログラミングの基本をある程度理解している中級者向けの本となります。

ネットで調べたところ、この本の特徴として、

があるみたいですが、とりあえず、フレームワークとセキュリティ以外の章を読みました。

 フレームワークとセキュリティ以外の章では、他言語を学んでいればあまり特筆すべき点はありませんが、PHPとの特徴というか気になったところを上げていきたいと思います。

変数スコープ

PHPのスコープは、グローバルスコープと関数やメソッド内のローカルスコープのみ。PHPではブロックスコープはないため、下記の通り、if文やfor文内で宣言した変数がそれらを抜けたあとでも使うことができる。

for($i = 0; $i < 10; $i++){
// ループ内処理
}
echo $i; // $i=10となる
配列

一般的に配列といえば、添字が整数で" val[i] "のようなものをイメージしますが、PHPでは、いわゆる連想配列(val['index']のようなもの)も配列であり、両者は区別されない。

タイプヒンティング

JavaやCなどでは関数の引数に型を指定しなければなりませんが、PHPでは、関数の引数に型を指定しなくても良いです。タイプヒンティングは、Java,Cのように関数の引数に型を指定する方法です。クラス名やインターフェース名はPHP5.0.0から利用できます。。intやstringなどプリミティブな型はPHP7.0.0から利用できます。また、関数の戻り値についてもPHP7.0.0から型を指定できるようです。

// intやMyClassがタイプヒンティング。指定しなくても良い
function func(int $arg1, MyClass $arg2) : string
{
// 関数内処理.
// .....

return "Return String";
}

 

名前空間、オートロード

名前空間は、Javaで言うところのpackageに相当するもの。”namespace Hoge\Fuga"  のように書く。PHP5.3.0から利用できるようになったみたいです。

オートロードはクラスを読み込むための仕組みのこと。Composerを使えばオートローダーが自動で作成されいい感じにクラスを読み込んでくれる。

終わりに

これからは下記の手順で進めていこうと思います。

  1. デザインパターン(下記リンクの内容)

d.hatena.ne.jp

  1. CLIアプリ作成

qiita.com

  1. PHPUnit (単体テスト)
  2. パーフェクトPHP (フレームワーク, セキュリティ編)
  3. Webアプリ作成
  4. Laravel

www.shuwasystem.co.jp

 

学んでいく手順については下記のページを参考にしました。

github.com