NonSoft

PHPについて


 ち〜な〜み〜に〜

1.1.PHPについて
XAMPPと言うフリーのパッケージを使用しPHPの概要を調査しました。
PHP(PHP: Hypertext Preprocesserの略)は、eコマースサイトやその他のWebアプリケーションを作るためのオープンソース
で提供されているサーバーサイドスクリプト言語です。
XAMPPとはApache、MySQL、PHP、Perl等のプログラム一式を簡単にインストールして使用出来るパッケージです。
インストーラ版とZIP圧縮版がありますが、今回はZIP圧縮版(xampp-win32-1.5.1.zip)を使用しました。
ZIP圧縮版のインストール方法は圧縮ファイルを解凍後、setup_xampp.batを実行するだけで基本的な設定が完了します。

同梱されている主なプログラムのバージョン:
+ Apache 2.2.0
+ MySQL 5.0.18
+ PHP 5.1.1
+ PHP 4.4.1-pl1
+ PEAR
+ SQLite 2.8.15
+ その他(Perl等)

PHPを起動する為には、PHP.iniの編集とIISとの連携を行なう必要があります。PHP.iniの編集としては主に以下の項目を
設定します。
include_path = ".;c:\xampp\php\includes;c:\xampp\php\PEAR"
doc_root = "C:\Inetpub\wwwroot"
extension_dir = "c:\xampp\php\ext"
mbstring.internal_encoding = SJIS-win
mbstring.http_input = SJIS-win,ASCII,JIS,UTF-8,SJIS,EUC-JP
mbstring.http_output = SJIS-win
mbstring.detect_order = SJIS-win,ASCII,JIS,UTF-8,SJIS,EUC-JP

PHPとIISを連携させる為には、IISの「既定のWebサイト」の「アプリケーションの構成」に「アプリケーションのマッピング」
として拡張子(php)とC:\xampp\php\php5isapi.dllを関連付ける必要があります。

1.2.PHPとACTIVEXの連携について
PHPとACTIVEXを連携させる方法はPHPで出力するHTMLにOBJECTタグを挿入する事により可能です。
コントロールの作成方法としては.NET用のコントロール(Managed)と.NETに依存しないACTIVEX(Unmanaged)として
作成する方法があります。
.NET用のコントロールは、VB.NET、C#.NET、VC.NETで作成する事が出来ます。
.NETに依存しないACTIVEXコントロールは、VB6、VC6、VC.NETで作成する事が出来ます。
(注意)ACTIVEXコントロールはVB.NETやC#.NETでは作成出来ません。

HTMLにOBJECTタグを挿入する例を以下に記述します。
(例1).NETのWindowsコントロールライブラリで作成したコントロールをWEBページに貼り付ける例
<OBJECT id="UserControl1" height="40" width="128"
classid="/WebApplication1/WindowsControlLibrary1/bin/WindowsControlLibrary1.dll#WindowsControlLibrary1.UserControl1">
</OBJECT>

(例2)ACTIVEXで作成したコントロールをWEBページに貼り付ける例
<OBJECT id="UserControl2"
CLASSID="CLSID:58F47A9B-E8BD-4593-985B-1D2C5A416A63"
CODEBASE="/WebApplication1/MyMFCActiveX/Debug/MyMFCActiveX.ocx">
</OBJECT>

今回の調査ではコントロールにパラメタを渡して起動する方法や、
コントロールからのイベントをIEのWebページ内のスクリプトで取得する方法を確認しました。

コントロールにパラメタを渡して起動する方法は、OBJECTタグにPARAMタグを挿入します。
(例)
<PARAM NAME="FileName" VALUE="c:\temp">

コントロールからのイベントを取得する方法は、Webページ内のスクリプト(JavaScript等)にイベント発生時の処理を記述します。
(例)
<SCRIPT LANGUAGE="JScript">
function Form1.UserControl1::ClickEvent(a){
Form1.TextBox1.value=a;
}
</SCRIPT>

1.3.SMARTYについて
PHPでWebプログラミングを行なう際の基本的な方法は、PHPのプログラムの中にHTMLのコードを混在させて記述する方法です。
この方法はWebページのデザインを変更する際にHTMLだけでなくPHPのプログラムを変更しなければならず難しくなります。
SMARTYはPHPプログラムのテンプレートエンジンであり、SMARTYによってPHPプログラムとHTMLデザインを分離することができます。
これは、MVCと言うソフトウェアの設計モデルを実現するためにPHPに導入された技術です。
MVCとはソフトウェアの設計モデルの一つで、処理の中核を担う「Model」、表示・出力を司る「View」、
入力を受け取ってその内容に応じてViewとModelを制御する「Controller」の3要素の組み合わせでシステムを実装する方式です。

SMARTYはフリーのプログラムで、今回使用したファイルはSmarty-2.6.14.tar.tarです。
導入方法は解凍して出来たSmarty-2.6.14と言うフォルダをSmartyと言う名前に変更し、
PHPのincludeフォルダ(例:C:\xampp\php\includes)にコピーします。
PHP.iniファイルのinclude_pathにC:\xampp\php\includesが設定されている事を確認する必要があります。

プログラムの記述方法の例を以下に記述します。
<呼び出す側:PHPプログラム>
$world=array('AAA','BBB','CCC','DDD');
require_once('Smarty/libs/Smarty.class.php');
$o_smarty=new Smarty();
$o_smarty->template_dir='C:/Inetpub/wwwroot/PHPTEST/sample1/tpl/templates';
$o_smarty->compile_dir='C:/Inetpub/wwwroot/PHPTEST/sample1/tpl/templates_c';
$o_smarty->assign('name',$world);
$o_smarty->display('test03.tpl');

<呼び出される側:デザイン・テンプレート>
<html>
<head><title>{literal}Smartyの基本{/literal}</title></head>
<body>
{foreach from=$name item="it" key="ky"}
{$it}<br>
{/foreach}
</body>
</html>

(注意)SMARTYの内部文字コードはEUCであるため、コンパイル時(文字コード変換処理時)に文字化けする事があります。
{literal}タグを使用する事により文字コードの変換を行なわなくする事が出来ます。
PHPの内部文字コードはPHP.iniで変更(標準ではEUC)する事が出来ますが、SMARTYでは変更出来ないようです。
PHPはEUCが基本であるため、全てのファイルをEUCで記述すると文字化けを防ぐ事が出来ます。
SJIS等を使用する際は、機種依存文字の文字化けに注意する必要があります。