PHPの基本を「みるみるPHPがわかる本」で学んでみた

「みるみるPHPがわかる本」読了です。
http://amzn.to/j9Ao2j

3か月前にも読んだけど、オブジェクト指向関連本等に目を通した後で、もう一度読もうと思っていました。
やっぱり理解しやすくなった気がします。

ということで、備忘メモ。


1章 PHPを手に入れよう!
PHPスクリプト言語。EXEファイルは、コンパイラで作られたもの。
Windowsコマンドプロンプトは、「shift-JIS」が基本。この上で、実行する際のスクリプトファイルは、「Shift-JIS」にすること。

2章 PHPの基本文法を覚えよう!
・プログラムの基本は値。値にも種類がある:整数、浮動小数、テキスト、真偽値、配列、オブジェクト、リソース、null
・直接スクリプトの中に書かれている値=リテラル
・'でくくったテキストはそのままの値として認識するが、"でくくったテキストは制御コードや変数などを組み込むことができる
・%は、剰余計算。例 10%3 は余りの1をさす
・テキストの演算(つなげる)のは、.
・変数は最初に$をつける。
・引数は、関数を呼び出すときに渡す値のこと
・関数を実行した結果、得られる値のことを、返り値・戻り値とよぶ
・{}は、複数の文を1つにまとめるために使う
・while文の基本形は:
while (条件){
繰り返す処理
}
または
while(条件):
繰り返す処理
}
・do-whileの基本形は:
do {
繰り返す処理
} while (条件);
・do-whileでは、条件は最後に出てくるので、条件が成立しようがしまいが、最初の1回は必ず繰り返し部分を実行する
・インクリメンタル演算子(デクリメンタル演算子)= $n++, $n-- それぞれ変数nの値を1増やす(減らす)
++$n, --$nとの違い:変数名の前に++をつけると、まずその場ですぐ値が1増える(減る)
 $X = ++$A;
とやると、まず$Aを1増やしてから$Xに値を設定する。
 $X = $A++;
 だと、まず$Aの値が$Xに設定され、その後で、$Aを1増やすという違いがある
・forの基本形:
for (初期化処理;条件;繰り返しごとの処理){
繰り返す処理
}

・配列を作る:
$変数名 = array (値1,値2,・・・・);
・値を設定する:
$配列[番号] = 値;
・値を取り出す
取り出し先(変数名) = $配列[番号];

・わかりやすさのために、最初に $arr = array();と、空っぽの配列を用意してから利用することも多い

・foreachの基本形:配列から順に値を取り出して処理して、変数に入れる
foreach ( $配列 as $変数 ){
実行する処理
}

連想配列を作る:
$変数 = array ( キー1 => 値1, キー2 => 値2, ・・・);
連想配列に値を設定する:
$配列 [キー] = 値;
連想配列から値を取り出す
取り出し先 = $配列 [キー];

連想配列では、番号の代わりに名前で管理するため、forによる繰り返し処理は使えない。必ず、foreachでの繰り返しを使って処理しないといけない

連想配列のforeachの基本形:
foreach ( 配列 as $キー => $値 ){・・・・}


3章 プログラムを整理しよう!

・ユーザ定義関数の基本形:
function 関数名 ( 引数1, 引数2, ・・・){
 処理を書く
}
・特に引数はいらない場合も()は書く

・クラスの基本形:
class クラス名 {

$変数 = 値;
必要な数だけ変数を用意

function 関数名 ( 引数 ){
処理
 }
必要な数だけ関数を用意
}

・クラス内の変数には、public、privateで、クラスの外から自由に使える・使えないを設定できる
・$thisは、「このオブジェクト自身」を表す 例 $this->nameで、このオブジェクト(クラス)で設定しているnameという変数をさしている

・クラスを基に、「インスタンス」を作って操作
インスタンスの基本形:
$ data = new クラス名();

・配列へのデータ追加の関数:
array_push ( 配列, 値 );

・コンストラクタ(__construct)
 =newでインスタンスを作成すると、自動的に呼び出され実行されるメソッド。
 基本形:
function __construct (引数の指定){
初期化処理
}

・継承を使ったクラス定義の基本形:
class クラス名 extends 継承するクラス名 {
クラスの内容
}

・継承して新しく作ったメソッドが新しいメソッドを作ると、それまであったメソッドに置き換わる(=オーバーライド)

・いくつもインスタンスを作って利用する必要がないもの(1つあれば十分)は、クラスから直接メソッドなどを呼び出して利用できるようにすることができる
 =staticと宣言の最初につけて書く
 その際の呼び出し方法:
クラス::プロパティ
クラス::メソッド ( 引数 );

・staticは、メソッドだけでプロパティがないオブジェクトに使うと便利。

・クラスの抽象化=実際の具体的な処理ではなく、こういうメソッドを定義することといったことだけをまとめたクラス
 =必ず用意しないといけないものを書いておき、継承してクラスを作る
 すると、必ずこれとこれが入っている、ということが保証されるので、クラスの種類は違うけれど、同じように扱うことができる
・抽象クラスの基本形:
abstract class クラス{

abstract function メソッド(引数);
必要なだけ書く

}


・継承は1つしかできない(これとこれを使ったサブクラスを作りたい、はNG)
 そこで、「インターフェイス
・インタフェイスの基本形:
interface インターフェイス名 {
内容
}

インターフェイスには、抽象メソッドしかおけない
 (抽象クラスは、抽象とはいえ、クラスなので、普通のメソッドやプロパティを置くことは可能。継承すれば、それらも使える
 しかし、インターフェイスはプロパティを置いても、implementsしたクラスで使えるわけではない(エラーとなる))

・(メモ:p125のarray_splice関数は、「配列から、指定した位置のインデックスを削除し、別のインデックスに置換えます」
 array_splice( 配列, 削除位置, 長さ, 置換える配列);


4章:あらゆる操作を「3行」でマスターしよう!
・p128〜p195は省略。
XMLは、「UTF-8」が基本。

5章:webアプリケーション超入門
・現在のwebは、「UTF-8」が基本
・header関数:他のページに移動するため、スクリプトを使って他のページに移動するときよく使われる
header ('location: 移動先 ');