PHP:Hypertext Preprocessor を再帰的に略したもので、htmlのプリプロセッサーという意味
PHPは基本的にCGIとして実行される → サーバーサイドで実行される
一般的なCGIのように、WEBサーバーからshell経由でphpが起動される経由されるのが基本であったが、WEBサーバーに統合されて高速なしくみで実行するのが一般的になっている。
lighttpdなど:常駐する php プロセスにスクリプトを渡して出力を得る fastcgi apacheなど:組み込みモジュールとして実行される(mod_php)
一般的に、拡張子phpのファイルはphpスクリプトとして処理されるようにWEBサーバーを設定する。
一般的に、WEBサーバーの設定で拡張子phpをPHPスクリプトのファイルと定義し、phpファイルにスクリプトを記述する。
phpファイルは、形式的にはhtmlそのものであり、JavaScript?と同じように「<?php」と「?>」で囲まれた範囲にPHPのスクリプトを記載します。(開始終了の形式は複数あり)
例 http://hoge.com/sample.php <html><head><title>PHP Test</title></head> <body> <?php echo '<p>Hello World</p>'; ?> </body> </html>
http://hoge.com/sample.php にブラウザからアクセスすると、WEBサーバーは sample.php をphpインタープリターに渡し、その出力をWEBブラウザに返す。
例 WEBブラウザに返されるデータ <html><head><title>PHP Test</title></head> <body> <p>Hello World<p> </body> </html>
HTMLの記載部分はそのまま出力されている。
phpスクリプト部分はサーバー側で解釈されてhtmlに置き変わっているので、ユーザーにphpの実装が見られることはない。(C言語のdefineがプリプロセッサで置き換わるのと同じような挙動)
なお、*.html に「<?php」と「?>」で囲まれたPHPのスクリプトを記載しても、WEBサーバーはphpに渡さずにそのまま出力されてしまう。
構文は、C/C++やJavaライクなものになっている。
「<?php」と「?>」で囲まれた部分が上から順番に実行されるが、関数を使用することもできるし、C++のようにクラスとインスタンスを用いたオブジェクト志向なプログラミングも使用できる。
例)
<?php
function outputName( ){
$name = “山田”;
echo “私の名前は” . $name . “です。<br>”;
}
outputName( );
?>
実行結果 私の名前は山田です。
例)
<?php
// クラスの定義
class abc
{
public $a = null;
public function b() {
echo "Class abc, Method b", PHP_EOL;
return "abc->b";
}
public function __construct() {
echo "abc: constructor", PHP_EOL;
}
}
// クラスabcを継承したクラスdefを定義
class def extends abc
{
public function __construct() {
parent::__construct(); // 親クラスのコンストラクタを呼ぶ
echo "def: constructor", PHP_EOL;
}
// 親クラスのメソッドbをオーバーライドする
public function b() {
echo "Class def, Method b", PHP_EOL;
}
public function c() {
parent::b();
}
}
$c = new abc();
$c->b();
$f = new def();
$f->b();
$f->c();
実行結果 abc: constructor Class abc, Method b abc: constructor def: constructor Class def, Method b Class abc, Method b
コンテンツエディターのGUIがWEBブラウザアプリとして実装されている。(MMS作)
上記のコードを流用し、複数台監視アプリからのコンテンツアップロード、及び PC版のコンテンツエディタのコンテンツアップロードを実装している。
フォームのPOST実行で指定する送信先にphp拡張子のURLが指定されている。
<html><head><title>フォームからデータを受け取る</title></head> <body> <form action = “upload.php” method = “post”> <input type = “text” name =“comment/“><br/> <input type = “submit” value =“送信/“> </form> </body></html>
いて、POSTのアップロードが終了した時点で実行される。
phpプログラムは、アップロードされたファイルをSDカードの所定の位置に展開する。 今後は、ファイル一覧をやり取りして、差分がある部分のみを転送するなどの機能アップを計画している。