- 機能はHTMLだが, 拡張子はphp。
<?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;
}
?>
- リクエストの受け取り
- 以下, 送信フォームと受信部
<?php ?>
<form method="post" action="sent.php">
<input type="text" name="AAA">
<textarea name="BBB"></textarea>
<select name="CCC">
<?php
for($i=0;$i<100;$i++) {
echo "<option value='opt{$i}'>選択肢{$i}</option>";
}
?>
</select>
<input type="submit" value="送信">
</form>
<?php
echo $_POST["CCC"]."<br>";
?>
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回目に呼び出された時だけ埋め込む
- クラスプロパティ
- 定義:
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