Archive for the ‘PHP’ Category
-
Hello, Win32 API(Quercus) World!
Posted on 5月 3rd, 2013 by cx20
Win32 API(Quercus)
Win32 API は、Windows の機能にアクセスする為の API(Application Programming Interface)である。
以下は Quercus にて SWT の非公開 API を使用した Win32 API 呼出しの例となっている。ソースコード
<?php import org.eclipse.swt.internal.win32.OS; import org.eclipse.swt.internal.win32.TCHAR; $lpText = new TCHAR(0, "Hello, Win32 API World!", True); $lpCaption = new TCHAR(0, "Hello, World", True); OS::MessageBox(0, $lpText, $lpCaption, OS::MB_OK ); ?>
実行方法
C:¥> java -cp org.eclipse.swt.win32.win32.x86_3.6.1.v3655c.jar;resin.jar;. com.caucho.quercus.CliQuercus hello.php
実行結果
--------------------------- Hello, World! --------------------------- Hello, Win32 API World! --------------------------- OK ---------------------------
-
Hello, Quercus World!
Posted on 5月 1st, 2013 by cx20
Quercus
Quercus は Java による PHP 実装である。
PHP の構文が使える他、Java のライブラリが使用できる。ソースコード
ソースコード(Java ライブラリを使用した場合)
<?php import java.lang.System; System::out->println( "Hello, Quercus World!" ); ?>
実行方法
C:¥> java -cp resin.jar com.caucho.quercus.CliQuercus hello.php
実行結果
Hello, Quercus World!
-
Hello, ODBC(PHP) World!
Posted on 9月 30th, 2012 by cx20
ODBC
ODBC(Open Database Connectivity)は、マイクロソフト社が提唱した DBMS 接続用の API 仕様である。
DBMS の差異は ODBC ドライバによって吸収される為、ODBC の手順にしたがってプログラムを作成すれば、基本的な差異を意識せず、プログラムすることができる。ODBCドライバ ファイル Microsoft Access Driver (*.mdb) ODBCJT32.DLL Microsoft Text Driver (*.txt; *.csv) ODBCJT32.DLL Microsoft Excel Driver (*.xls) ODBCJT32.DLL Microsoft dBase Driver (*.dbf) ODBCJT32.DLL Microsoft ODBC for Oracle MSORCL32.DLL Microsoft Paradox Driver (*.db ) ODBCJT32.DLL SQL Server SQLSRV32.DLL Microsoft Access Driver (*.mdb, *.accdb) ACEODBC.DLL SQL Server Native Client 10.0 SQLNCLI10.DLL ソースコード(PHP + ODBC + SQL Server)
<?php $cn = odbc_connect("Driver={SQL Server};Server=(local)", "sa", "P@ssW0rd"); $rs = odbc_exec($cn, "SELECT 'Hello, ODBC World' AS Message"); while (odbc_fetch_row($rs)) { $result = odbc_result($rs, "Message"); echo "Message", "n"; echo "-------------------n"; echo $result, "n"; } odbc_close($cn); ?>
実行方法(Windows)
C:¥> php -f hello.php
実行結果
Message ------------------ Hello, ODBC World!
-
Hello, ADO(PHP) World!
Posted on 9月 29th, 2012 by cx20
ADO(PHP)
ADO(ActiveX Data Objects)は、マイクロソフト社が開発した COM ベースの DBMS 接続用 API である。
OLE DB プロバイダを介することで様々な DBMS への接続が可能となっている。
OLE DB プロバイダとしては、以下のようなプロバイダがある。いくつかが OS 標準で付属している他、追加インストールが可能である。プロバイダ名 表示名 説明 MSDASQL Microsoft OLE DB Provider for ODBC ODBC データベース Microsoft.Jet.OLEDB.4.0 Microsoft OLE DB Provider for Microsoft Jet Microsoft Jet データベース Microsoft.ACE.OLEDB.12.0 Microsoft Office 12.0 Access Database Engine OLE DB Provider Microsoft Access データベース SQLOLEDB Microsoft OLE DB Provider for SQL Server Microsoft SQL Server SQLNCLI10 SQL Server Native Client 10.0 Microsoft SQL Server MSDAORA Microsoft OLE DB Provider for Oracle Oracle データベース なお、PHP 5.4.5 / 5.3.15 より、COM サポートは既定では組み込まれていない為、使用するには、以下の設定を追加する必要がある。
PHP 設定
ソースコード(PHP + ADO + OLEDB + Jet データベース)
<?php $cn = new COM("ADODB.Connection"); $cn->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.Hello.mdb"); $rs = $cn->Execute("SELECT 'Hello, ADO World!' AS Message"); while (!$rs->EOF) { echo $rs->Fields[0]->name, "n"; echo "-------------------n"; echo $rs->Fields[0]->value, "n"; $rs->MoveNext(); } $rs->Close(); $cn->Close(); ?>
ソースコード(PHP + ADO + OLEDB + ACE データベース)
<?php $cn = new COM("ADODB.Connection"); $cn->Open("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=.Hello.accdb"); $rs = $cn->Execute("SELECT 'Hello, ADO World!' AS Message"); while (!$rs->EOF) { echo $rs->Fields[0]->name, "n"; echo "-------------------n"; echo $rs->Fields[0]->value, "n"; $rs->MoveNext(); } $rs->Close(); $cn->Close(); ?>
ソースコード(PHP + ADO + OLEDB + SQL Server)
<?php $cn = new COM("ADODB.Connection"); $cn->Open("Provider=SQLOLEDB;SERVER=(local);DATABASE=master", "sa", "P@ssW0rd"); $rs = $cn->Execute("SELECT 'Hello, ADO World!' AS Message"); while (!$rs->EOF) { echo $rs->Fields[0]->name, "n"; echo "-------------------n"; echo $rs->Fields[0]->value, "n"; $rs->MoveNext(); } $rs->Close(); $cn->Close(); ?>
ソースコード(PHP + ADO + OLEDB + Oracle)
<?php $cn = new COM("ADODB.Connection"); $cn->Open("Provider=MSDAORA;Data Source=ORCL", "scott", "tiger"); $rs = $cn->Execute("SELECT 'Hello, ADO World!' AS Message FROM DUAL"); while (!$rs->EOF) { echo $rs->Fields[0]->name, "n"; echo "-------------------n"; echo $rs->Fields[0]->value, "n"; $rs->MoveNext(); } $rs->Close(); $cn->Close(); ?>
実行方法(Windows)
C:¥> php -f hello.php
実行結果
Message ----------------- Hello, ADO World!
-
Hello, PDO(PHP) World!
Posted on 9月 28th, 2012 by cx20
PDO
SQL Server Driver for PHP はマイクロソフト社より提供されている PHP 向けの SQL Server ドライバである。
ドライバの形式として、PHP 拡張形式と PDO(PHP Data Object)形式の2種類が存在する。
以下は PDO 形式の SQL Server Driver の例となっている。なお、SQL Server ドライバは既定では組み込まれていない為、使用するには、以下の設定を追加する必要がある。
PHP 設定(PHP 5.4 / スレッドセーフのドライバを指定した場合)
ソースコード(PHP + PHP 拡張 + SQL Server)
<?php $dbh = new PDO('sqlsrv:server=(local);database=master', 'sa', 'P@ssW0rd'); $sql = "SELECT 'Hello, PDO World!' AS Message"; foreach ($dbh->query($sql) as $row) { echo "Messagen"; echo "-------------------n"; echo $row[0]; } $dbh = null; ?>
実行方法
C:¥> php hello.php
実行結果
Message ------------------- Hello, PDO World!
-
Hello, SQL Server(PHP) World!
Posted on 9月 27th, 2012 by cx20
SQL Server Driver for PHP
SQL Server Driver for PHP はマイクロソフト社より提供されている PHP 向けの SQL Server ドライバである。
ドライバの形式として、PHP 拡張形式と PDO(PHP Data Object)形式の2種類が存在する。
以下は PHP 拡張版の SQL Server Driver の例となっている。なお、SQL Server ドライバは既定では組み込まれていない為、使用するには、以下の設定を追加する必要がある。
PHP 設定(PHP 5.4 / スレッドセーフのドライバを指定した場合)
ソースコード(PHP + PHP 拡張 + SQL Server)
<?php $serverName = "(local)"; $connectionInfo = array( "UID"=>"sa", "PWD"=>"P@ssW0rd", "Database"=>"master" ); $conn = sqlsrv_connect( $serverName, $connectionInfo ); $stmt = sqlsrv_query( $conn, "SELECT 'Hello, SQL Server(PHP) World!' AS Message" ); while( $row = sqlsrv_fetch_array( $stmt ) ) { echo "Messagen"; echo "-------------------n"; echo $row[0]; } sqlsrv_free_stmt( $stmt ); sqlsrv_close( $conn ); ?>
実行方法
C:¥> php hello.php
実行結果
Message ------------------- Hello, SQL Server(PHP) World!
-
Hello, Windows Forms(Phalanger) World!
Posted on 6月 12th, 2012 by cx20
Windows Forms(Phalanger)
Windows フォーム(Windows Forms)は .NET Framework におけるユーザーインターフェイス基盤である。Windows アプリケーションにおけるウィンドウやダイアログに対応する。
以下は Phalanger における Windows フォーム の例となっている。ソースコード
<? use System; use SystemWindowsForms; use SystemDrawing; class HelloForm extends SystemWindowsFormsForm { public function __construct() { $this->Size = new SystemDrawingSize( 640, 480 ); $this->Text = 'Hello, World!'; $label1 = new SystemWindowsFormsLabel(); $label1->Size = new SystemDrawingSize( 320, 20 ); $label1->Text = 'Hello, Windows Forms(Phalanger) World!'; $this->Controls->Add( $label1 ); } static function Main() { FormsApplication::Run(new HelloForm()); } } ?>
ソースコード(アプリケーション設定ファイル)
<?xml version="1.0" encoding="utf-8"?> <configuration> <phpNet> <classLibrary> <add assembly="mscorlib" /> <add assembly="System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <add assembly="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> </classLibrary> </phpNet> </configuration>
実行方法
C:¥> phpc /pure /target:winexe Hello.php
実行結果
+------------------------------------------+ |Hello, World! [_][~][X]| +------------------------------------------+ |Hello, Windows Forms(Phalanger) World! | | | | | | | | | | | | | | | | | | | +------------------------------------------+
-
Hello, COM(PHP) World!
Posted on 5月 25th, 2012 by cx20
PHP
COM(Component Object Model)はマイクロソフトの提唱するプログラム部品の仕様である。
COM を用いて開発された部品であれば言語を問わず利用することができる。
以下は PHP による COM クライアントの例となっている。
なお、PHP 5.4.5 / 5.3.15 より、COM サポートは既定では組み込まれていない為、使用するには、以下の設定を追加する必要がある。PHP 設定
ソースコード
<?php $shell = new COM("Shell.Application"); $folder = $shell->BrowseForFolder(0, "Hello, COM(PHP) World!", 0, 36 ); ?>
実行方法
C:¥> php -f hello.php
実行結果
+----------------------------------------+ |Browse For Folder [X]| +----------------------------------------+ | Hello, COM(PHP) Wolrd! | | | | +------------------------------------+ | | |[Windows] | | | | +[addins] | | | | +[AppCompat] | | | | +[AppPatch] | | | | +[assembly] | | | | : | | | | : | | | | : | | | +------------------------------------+ | | [Make New Folder] [ OK ] [Cancel] | +----------------------------------------+
-
Hello, Win32 API(PHP) World!
Posted on 4月 29th, 2012 by cx20
Win32 API(PHP)
Win32 API は、Windows の機能にアクセスする為の API(Application Programming Interface)である。
以下は PHP にて COM ライブラリである DynamicWrapper を経由した Win32 API の呼出し例である。なお、PHP 5.4.5 / 5.3.15 より、COM サポートは既定では組み込まれていない為、使用するには、以下の設定を追加する必要がある。
PHP 設定
ソースコード
<?php $win32 = new COM("DynamicWrapper"); $win32->Register( "user32.dll", "MessageBoxA", "i=hhsu", "f=s", "r=l" ); $win32->MessageBoxA( 0, "Hello, Win32 API(PHP) World!", "Hello, World!", 0 ); ?>
なお、上記の “i=hhsu” は各引数の型を、”f=s” は呼び出し規約を、”r=l” は戻り値の型を表している。以下は主要なタイプ一覧である。詳細は「An Automation Object for Dynamic DLL Calls | Dr Dobb’s」を参照のこと。
タイプ 説明 a オートメーションオブジェクト(IDispatch*) c 符号なし文字型(unsigned char) d 倍精度浮動小数点数(double) f 単精度浮動小数点数(float) k COM オブジェクト(IUnknown*) h ハンドル(handle) l 整数型(long) p ポインタ(pointer) s 文字列(string) t 整数型(short) u 符号なし整数型(unsigned int) w ワイド文字列(wide string) 実行方法
C:¥> php -f hello.php
実行結果
--------------------------- Hello, World! --------------------------- Hello, Win32 API(PHP) World! --------------------------- OK ---------------------------
-
Hello, Smarty World!
Posted on 2月 20th, 2012 by cx20
Smarty
Smarty は PHP 用のテンプレートエンジンである。名前の由来は「スマート(smart)」から。
ページにアクセスするとテンプレートはコンパイルされ PHP スクリプトに展開される。
ソースコード(テンプレート)
<html> <head> <title>Hello, World!</title> </head> <body> <p>Hello, {$message} World!</p> </body> </html>
ソースコード(PHP)
<?php require_once 'libs/Smarty.class.php'; $smarty = new Smarty(); $smarty->template_dir = 'templates/'; $smarty->compile_dir = 'templates_c/'; $smarty->assign('message', 'Smarty'); $smarty->display('template.html'); ?>
上記の PHP コードならびにテンプレートは実行時に以下の PHP スクリプトに展開される。
コンパイル結果(PHP)
<?php /* Smarty version Smarty-3.1.7, created on 2012-01-31 00:10:09 compiled from "templates/template.html" */ ?> <?php /*%%SmartyHeaderCode:10960230224f26b28ceec5c3-38524326%%*/if(!defined('SMARTY_DIR')) exit('no direct access allowed'); $_valid = $_smarty_tpl->decodeProperties(array ( 'file_dependency' => array ( '41d3b4a4b71afe0c223778e57c23244caee1baec' => array ( 0 => 'templates/template.html', 1 => 1327936205, 2 => 'file', ), ), 'nocache_hash' => '10960230224f26b28ceec5c3-38524326', 'function' => array ( ), 'version' => 'Smarty-3.1.7', 'unifunc' => 'content_4f26b28d05af0', 'variables' => array ( 'message' => 0, ), 'has_nocache_code' => false, ),false); /*/%%SmartyHeaderCode%%*/?> <?php if ($_valid && !is_callable('content_4f26b28d05af0')) {function content_4f26b28d05af0($_smarty_tpl) {?><html> <head> <title>Hello, World!</title> </head> <body> <p>Hello, <?php echo $_smarty_tpl->tpl_vars['message']->value;?> World!</p> </body> </html> <?php }} ?>
実行方法
ディレクトリ構成 /doc … 公開用フォルダ /libs … ライブラリ配置場所 /templates … テンプレート配置場所 /templates_c … テンプレートコンパイル結果配置場所 1. ライブラリ(Smarty.class.php)を libs に配置 2. テンプレート(template.html)を templates に配置 3. ソース(hello.php)を公開フォルダに配置 4. ブラウザで表示 http://localhost/doc/hello.php
実行結果
Hello, Smarty World!