SAK 図書館

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

PHP 基礎編1 - 開発環境、注釈、変数、配列、連想配列、演算子、特殊文字

PHP が使用可能なサイトが増えつつあるので、Perl との相違を検証しておく。
Perl と違い PHP は、SQL RDBMS と連携しやすい。
PHP + MySQL 編も順次検証しながら作成していく。
PostgreSQL についても、MySQL との構文の違いを調査しておく。

■PHP 開発環境

  ・Apache、ActivePerl、PHP、MySQL のセットパッケージ phpdev4_5NT.exe で
    開発環境を構築した。これで、PHP4 ベースの開発が可能である。
    一般的には PHP3 がまだ主流かもしれない。
    PHP4 独自の部分も調査しておく。

  ・phpdev4_5NT.exe は、インストール先を c:\ 固定としてパッケージされて
    いるようである。
    初期化ファイルや各種サンプルがドライブ、パスに依存していた。
    他のドライブやパス構成に移動するには、説明が英語のため、けっこう苦痛
    かもしれない。
    うちのイントラは、IIS、ASP、Perl、Oracle がメインの開発環境なので、
    PHP、MySQL は、おまけと言うことで、初期設定のまま使用することにする。

  ・phpdev4_5NT.exe のインストールは実に単純であった。
    このパッケージは、NT、2000、XP 用である。
    他に 9x 用のパッケージもあった。
    また、ActivePerl や MySQL が含まれないパターンなどのパッケージもある。

  ・インストールすると、
      c:/
        phpdev/
          apache/
          manuals/
          mysql/
          mysqlfront/
          perl/
          php/
          www/
            cgi-bin/
            phpdev4/
            phpMyAdmin/
            public/
            test.htm
            yaks.html
          MYSQL README.txt
          phpdev_start.bat
          phpdev_stop.bat
          PLEASE README.txt
    と環境が構築される。

  ・IIS のサービスはそのままでも、phpdev_start.bat を実行すると、
    Apache、ActivePerl、PHP、MySQL のサービスがプロンプトサービスとして
    起動する。プロンプトサービスを閉じると IIS が再び有効になる。
    尚、メモリの解放を見ると、最後に phpdev_stop.bat を実行した方が
    良さそうである。これで、MySQL 等全てクローズされる。
    実に単純に上げ下げできるので、たまにしか使わない開発環境としては
    手作業で、phpdev_start.bat、phpdev_stop.bat を使用する方が便利である。

■ハロー PHP

  ・お約束の PHP 動作テスト。

<HTML>
<?php
// メッセージ表示
  print "<P>はじめての PHP ですのん。</P>\n";
?>
</HTML>

  ・PHP は、fopen などの関数でファイルが見つからないと、エラーを表示して
    処理が停止してしまう。
    リターンコードで見つからないときの処理がしたいときなど、
    エラートラップするには、関数の前に @ マークを付けて、次のようにする。
    こうするとエラー抑制される。

  $fno = @fopen("path/filename", 'r');

  ・PHP は、パーミッション設定が不要らしい。
    実際にインターネット上で PHP が動作する環境がないので、今のところ
    信じるしかない。(^^;
    イントラネットでは www/ 配下で動作した。
    CGI-Perl と同じに cgi-bin/ 配下に置くと動作しなかった。
    (環境設定のせいかもしれない。)

  ・CGI-Perl の様に先頭に PHP へのパスと言うものはない。

  ・PHP のコード部分は、<?php ... ?> で記述する。
    これは、ASP の書き方に似ている。
    他に
      <? ... ?>
      <% ... %>
      <SCRIPT LANGUAGE="php"> ... </SCRIPT>
    での記述もサーバ設定で許していれば可能である。
    標準的には、<?php ... ?> となっている。

  ・PHP の FTP は、当然ながらアスキー(テキスト) 形式であるが、愛用の
    ffftp.exe の自動判定に .php は含まれていなかった。
    アスキーモードとしてアップロードするファイル拡張子に .php を追加した。
    尚、サイト仕様によっては、.php3、.php4、.phtml など PHP の拡張子が
    指定されている場合があるようである。
    これらも自動判定拡張子に追加しておくと良いかも。

■注釈

  //      『//』以降注釈となる
  /*      複数行注釈開始
  */      複数行注釈終了

<HTML>
<?php

  print "<P>注釈テスト</P>\n";

// 単一行注釈

/*
  複数行注釈
  複数行注釈
*/

?>
</HTML>

■定数

  define ("DATA_MAX", 100);

  $a = DATA_MAX;
  print "<P>$a</P>\n";

■変数タイプ

  $a           単純変数
  $b[]         配列変数
  count($b)    配列の要素数 (最大添字は、count($b) - 1 となる)
  $c['key']    連想配列

  ・変数には、大文字小文字の区別がある。

  ・基本的に Perl と同じ種類がある。
    但し、書き方は少し異なる。
    Perl の配列 @b[] は、PHP では、$b[] となる。
    配列の最大添字 $#b の代わりは、count($b) - 1 となる。
    連想配列 $c{'key'} は、$c['key'] となる。

  ・シングルコーテーション「'」とダブルコーテーション「"」の使い分けは
    Perl と同じである。
    「"」間は、$variable や \n が埋め込み展開される。

<HTML>
<?php

// 変数
  $a = 100;
  $A = 200;
  $b = 'abc';
  $c = "漢字";
  $d[0] = 'd[0]';
  $d[1] = 'd[1]';
  $dmx = count($d);
  $h['data1'] = 'data1';
  $h['data2'] = 'data2';

// 変数内容表示
  print "<P>変数 \$a = $a</P>\n";
  print "<P>変数 \$A = $A</P>\n";
  print "<P>変数 \$b = $b</P>\n";
  print "<P>変数 \$c = $c</P>\n";
  print "<P>変数 \$d[0] = $d[0]</P>\n";
  print "<P>変数 \$d[1] = $d[1]</P>\n";
  print "<P>変数 \$dmx = $dmx</P>\n";
  print "<P>変数 \$h['data1'] = ${h['data1']}</P>\n";
  print "<P>変数 \$h['data2'] = ${h['data2']}</P>\n";

?>
</HTML>

  ・「"」中など、$variable を展開する場合、誤解析される場合がある。
    そのときは、${h['data1']} のように、$ の次から { ... } で囲むと良い。

  ・変数は数値でも文字でも入る。VB の variant と同じと思えばよい。

  ・ユーザ関数内で作成した変数は、ローカル変数となる。
    Perl のような my()、local() の指定はない。
    但し、PHP では、グローバル変数は関数内ではそのまま扱えない。
    global $variavle; を関数内で宣言すると、グローバル変数 $variavle に
    アクセスできる。
    static 宣言は、C 言語での意味と同じである。

<HTML>
<?php

// 変数
  $a = 100;
  $b = 200;
  $c = 300;
  $d = 400;

// 関数呼び出し
  $e = test($d);

// 変数内容表示
  print "<P>変数 \$a = $a</P>\n";
  print "<P>変数 \$b = $b</P>\n";
  print "<P>変数 \$c = $c</P>\n";
  print "<P>変数 \$d = $d</P>\n";
  print "<P>変数 \$e = $e</P>\n";

/*
========================================================================
  テスト関数
========================================================================
*/
function test($p) {

  global $a;
  static $b;
  $c = 1;

  $a += 10;
  $b += 20;
  $c += 30;
  $p += 40;

  return(50);

}

?>
</HTML>

  ・C 言語と同じように引数は値渡しである。
    このサンブルを実行すると、
      変数 $a = 110
      変数 $b = 200
      変数 $c = 300
      変数 $d = 400
      変数 $e = 50
    と表示される。
    $a は、関数 test() で、global $a; と宣言しているので、110 になる。
    $b、$c、$d は、関数 test() 内と別物となり、影響を受けていない。

■演算子

  +       加算
  -       減算
  *       掛け算
  /       割り算
  %       余り
  ++      インクリメント (+ 1)
  --      デクリメント   (- 1)
  pow()   べき乗
  <<      左ビットシフト
  >>      右ビットシフト
  .       文字列結合
  ereg()  正規表現

  ++$i は、$i が参照される前にインクリメントされる。
  $i++ は、$i 参照後にインクリメントされる。

■代入

  =       単純代入
  +=      加算代入
  -=      減算代入
  *=      乗算代入
  /=      除算代入
  .=      文字列結合代入

  $a = $a + $b; は、$a += $b; と等しい。
  $a = array('abc', 'def', 'ghi'); も OK。
  16 進数は、C と同じ 0x00ff と表現。

■特殊文字 (エスケープシーケンス)

  \n      改行
  \r      キャリッジリータン
  \t      タブ
  \\      \
  \$      $
  \"      "
  \'      '

  『"』ダブルコートリテラルで展開される。
  『\"』『\$』など『"』や『$』が直接記述できない箇所で使用する。

■PHP 基礎編資料
■PHP + MySQL 編資料
■CGI-Perl 基礎編資料
■CGI-Perl 基礎実地編資料
■CGI-Perl 応用実地編資料
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索



Copyright (C) 1999-2017 Y.SAK