PHP_ PHP マニュアル – ManualPHPのドキュメントはここです。順番に進めて一通りやります。
PHP_ 言語リファレンス – Manual今回はこの上から見ていきます。ただしドキュメントがかなり詳しいので、私が読んだ順番と復習のためのコードだけを示しておきます。
読んだ順番
- 基本的な構文 : 上から
- 型:導入~配列まで。「配列」で「制御構造>foreach」をチラ見。
- 変数:上から
- 定数:上から
ここまでのコードを下に示す。 - 演算子:上から
- 制御構造:上から
- 関数
- クラスとオブジェクト:クラスの抽象化まで
大体把握したのでこれ以降は必要に応じてドキュメントを見ることにします。
復習用コード
1.基本的な構文~4.定数まで
test.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
<form action="post.php" method="post"> Name: <input type="text" name="username" /><br /> Email: <input type="text" name="email" /><br /> <input type="submit" name="submit" value="Submit me!" /> </form> <?php #header('Content-Type: text/html; charset=UTF-8'); $a_bool = true; $an_int = 44; $a_string = "hoge"; $a_float = 1.5; $arr = ["神風型", "睦月型", "特型", 10 => "初春型", "白露型"]; define("TAX", 0.08); // ブロック内でも定義可能 const CAP = 300; // 関数、if文、ループ、try文内では定義不可 # 配列の操作 println("-----配列の操作-----");# 配列の操作 $arr[] = "朝潮型"; // 最後の要素に追加 unset($arr[0]); // 要素の削除, インデックスはそのまま # 元の変数の値には影響しない print '$arrの中身 : '; var_dump($arr); println(""); println("--元の変数の値に影響しない--"); $b_arr = $arr; $b_arr[1] = $a_string; print '$b_arr変更後の$arrの中身: '; print_r($arr); echo "<br>"; print '$b_arr変更後の$b_arrの中身 :'; print_r($b_arr); echo "<br><br>"; # 参照渡し(元の変数に影響する) println("--参照渡し--"); $b_arr = &$arr; $b_arr[1] = "hoge"; print '$b_arr変更後の$arrの中身'; print_r($arr); echo "<br>"; print '$b_arr変更後の$b_arrの中身'; print_r($b_arr); br(); # 変数のスコープ println("--変数のスコープ--"); scope(); br(); # static変数 println("--staticな変数--"); count_down(); br(); function println($string){ echo "$string"."<br>"; } function scope(){ $an_int = 50; // ローカル変数 // この関数内で$a_stringはグローバル変数$a_stringを表す global $a_string; // $a_string => "hoge" println("ローカルint : " . $an_int); println("グローバルint : " . $GLOBALS['an_int']); println("グローバル変数 : $a_string"); } # 再帰関数 function count_down(){ static $an_int = 10; echo "$an_int, "; if($an_int-- > 0){ count_down(); } } function br(){ echo "<br><br>"; } |
post.php
1 2 3 4 5 |
<?php echo $_POST['username']; echo "<br><br>"; echo $_REQUEST['username']; |
表示結果は
5.演算子~8.クラスとオブジェクト
以前Rubyで書いたようなやつですが。主にクラスの書き方です。
test.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?php spl_autoload_register(function ($class_name){ include $class_name . '.php'; }); $ship = new Destroyer(); $equipment = new Equipment(); $ship->name = "睦月"; $equipment->name = "12.7cm連装砲"; println($ship->type); println($ship->name); println($equipment->name); function println($str){ echo "$str<br>"; } |
ship.php
1 2 3 4 5 6 7 8 9 |
<?php abstract class Ship { public $name = "ship"; public $equipments_arr; public $type; } |
equipment.php
1 2 3 4 5 6 7 8 |
<?php class Equipment { public $id; public $name = "equipemnt"; } |
destroyer.php
1 2 3 4 5 6 7 |
<?php include "ship.php"; class Destroyer extends Ship{ public $type = "駆逐艦"; } |
Javaとの相違点
元々Javaer(言い方はしらない)なので馴染みのJavaとの相違点を書いたほうが記憶に残ると思うので。いっぱいありますが忘れそうなことだけメモしておきます。
・配列とハッシュを区別しない
・javaの==, equal()はphpではそれぞれ==, ===
・関数内で関数を定義可能
・関数のオーバーロードなし
・フィールド変数→プロパティ
・アクセス修飾子はpublic, private, protected
・PHPファイル一つにクラス一つ
・コンストラクタでプロパティに値を代入できない
終わりに
割とJavaerでもわかりやすい感じでした。演算子の辺りはちら見して困ったら見返す感じで良いかと思います。そろそろサクラエディタに書くの面倒なのでEclipseにPDT入れようと思います。