Progate PHP

PHP I

  • 機能はHTMLだが, 拡張子はphp
    • 冒頭は <!DOCTYPE html>
  • <?php ?> の中がphpが有効な領域。この領域がHTMLに変換された上で埋め込まれて解釈される。
  • 文末;。ただし, 一行の<?php ?>に1文であれば省略できる。
  • コメントは //
  • 文字列のクォートは不問
  • 変数定義 変数名 = 値; ただし, 変数名は $ から始まり, 次は英字。
  • ++, -- もある
  • 変数は <?php ?> をまたいでも有効。
  • 文字列や変数の連結は 文字列.文字列
    • .= も存在する。
  • ダブルクォーテーションで文字列を囲んだ場合、文字列の中で{変数名}として変数を埋め込み可能
    • シングルクォーテーションで文字列を囲んだ場合は変数展開されない。
  • true, false, &&, ||, !
  • if(条件){} elseif(条件) {} else {}: elseif の間にスペースがないことに注意
  • switch(式){} 仕様は C++ に同じ。
  • for($i=0;$i<5;$i++){}
  • while(条件){}
  • break;, continue;: while, for, foreach 等の繰り返しで利用
  • 配列
    • 配列の初期化: 配列名 = array(値1, 値2, ・・・);
    • 末尾に追加: 配列名[] = 値;
    • 値の上書き: 配列名[2] = 値;
  • 連想配列
    • 配列の初期化: 配列名 = array('キー名' => '値1', ・・・);
    • 値の追加, 上書き: 配列名[キー] = 値;
  • 配列ループ
    • foreach(配列 as $value): 配列の要素値(または連想配列)を次々$valueに渡してループ
    • foreach(配列 as $key => $value)
      • $key: 配列のインデックス または 連想配列のキー
      • $value: 配列の要素値 または 連想配列の値
  • echo: 後ろに置いたものが評価されて埋め込まれる。(echo "hoge";, echo 2 + 3;)
    • 埋め込まれるだけで, 改行はされない。
      • echo '<br>'; や, echo $hoge."<br>"; など改行タグを埋め込めばよい。
  • 組み込み関数
    • strlen(文字列): 文字列の文字数を返す。
    • count(配列): 配列の要素数を返す。
    • rand(2,4): 2,3,4 のいずれかをランダムに返す。
<?php
    // 使い方
    $radius = 4;
    $area = $radius * $radius * 3.14;
    echo $area;
?>
  • 関数定義
<?php
    function add($arg1, $arg2){ // 関数名に $ 不要
        $tmp = $arg1 + $arg2
        echo $tmp;
        return $tmp; // 呼び出しは add(3,5)
    }
?>
<!-- php 要素を持たない部分は <?php ?> は不要-->
<form method="post" action="sent.php"> <!-- {AAA:"...",BBB:"..."} をphpに渡す -->
    <input type="text" name="AAA">
    <!-- name属性がjsonのキー, 記述(単一行)がvalueとなる -->
    <textarea name="BBB"></textarea>
    <!-- name属性がjsonのキー, 記述(複数行可)がvalueとなる -->
    <!-- この下に送信ボタンを作りましょう -->
    <select name="CCC">
        <?php 
            for($i=0;$i<100;$i++) {
                echo "<option value='opt{$i}'>選択肢{$i}</option>";
                // 変数展開されて, <option value='opt1'>選択肢1</option> とかが埋め込まれる
                // ブラウザに表示されるのは「選択肢0」から「選択肢99」
            }
        ?>
    </select>
    <input type="submit" value="送信">
    <!-- 送信ボタンで, value属性でボタンの文字を指定 -->
</form>
<!-- sent.php
送信ボタンを押すと, phpが埋め込まれたhtmlが表示される -->
<?php
    echo $_POST["CCC"]."<br>"; // opt0.<br> , opt1.<br>, ... のいずれかが埋め込まれる。
    // $_POST に post した json が格納されている。
?>

PHP II

  • クラス
class Hoge { //クラス名に $ 不要
    // public, private は Java 等と同じ。
    public $prop1; // $ 必要
    private $prop2 = ""; // 初期化も可能
    public function __construct($prop1){ // コンストラクタの名前は __construct で固定
        $this->prop1 = $prop1;
    }
    public function method1(){ // メソッド名に $ 不要
        echo $this->prop1."<br>";
        // $this はクラス内のメソッドの定義の中でのみ使用可能
        return $this->prop1; // return も可能
    }
}
$hoge = new Hoge("hoge");
$hoge->prop1 = "fuga"; // プロパティ名に $ 不要
$hoge->method1();
  • PHP のコードを各部分は, 埋め込まない部分は大きな塊で書き, 埋め込む部分は小さく書く。
  • 次の二つは等価(下のようにすると, HTML の埋め込みが分かりやすい)
    • { を :
    • } を endforeach
      • endif endfor endwhile endswitch
    • ちなみに, if(): else: endif
<?php
$words = array("hoge", "fuga");
foreach($words as $word){
    echo "<p>".$word."</p>";
}
?>
<?php
$words = array("hoge", "fuga");
?>
<?php foreach($words as $word): ?>
    <p><?php echo $word ?></p>
<?php endforeach ?>
  • 他のファイルの埋め込み
    • require("ファイルパス"): 埋め込む
    • require_once("ファイルパス"): 1回目に呼び出された時だけ埋め込む

PHP III

  • クラスプロパティ
    • 定義: public static $hoge = 0; のように static をつける(Javaと同様)
    • クラス外でのアクセスは $instance->hoge ではなく Hoge::$hoge ($ の位置に注意)
    • クラス内でのアクセスは $this->hoge ではなく self::$hoge ($ の位置に注意)
  • クラスメソッド(個々のインスタンスのデータに関係ない処理を行いたい時)
    • 定義: public static function fn() {} のように static をつける(Javaと同様)
    • アクセスは $instance->fn() ではなく, Hoge::fn() ($ 無しに注意)
  • 継承
    • 継承する前に親クラスのファイルをrequire_once()すること。
    • class サブクラス名 extends スーパークラス名 : Java と同じ
    • protected, オーバーライド も Java と同じ。
    • 親クラスで定義したメソッドを呼び出したいとき parent::メソッド名() で呼び出せる
      • parent->メソッド名 ではない
      • super ではなく parent
  • インスタンス instanceof クラス名 -> true, false

PHP IV

  • クエリパラメータ URL?キー=値&キー=値