marunomaruno-memo

marunomaruno-memo

PHP ソースからドキュメントを自動生成する (doxygen)

2008年12月30日 | PHP
PHP ソースからドキュメントを自動生成する (doxygen)
================================================================================

昨日の「PHP ソースからドキュメントを自動生成する (phpdocumentor)」 は、

PHP ソースからドキュメントを自動生成させることができる。
ドキュメントの基になるのは、ドキュメントコメントといわれるもので、
/** で始まり、*/ で終わる形式のコメント。

また、その中に、次のようなタグをつけることで、ドキュメントに対して指示を出すこと
ができる。もちろん、これ以外にもいろいろとある。
---
* @author 作成者
* @version バージョン
* @param 引数名 意味
* @return 戻り値
---

PDT を使っていれば、このドキュメントコメントの基になるものはある程度自動生成する。
(Ctrl+Shift+J)


■インストール

doxygen のサイト
http://www.doxygen.org
http://www.stack.nl/~dimitri/doxygen/

から、ダウンロードのリンクをクリックし、つぎのファイルをダウンロードする。
A binary distribution for Windows 95/98/ME/NT/2000/XP/Vista
doxygen-1.5.8-setup.exe (7.2M)

インストーラーなので、すべてデフォルトでインストールすればよい。


■ドキュメント生成

doxygenwizard を選択して、起動。ウィザードにしたがって設定する。

Step1: doxygen の作業ディレクトリーの指定。適当な場所でOK。

Step2: 生成のパラメータを設定

[Wizard]タブ - [Project]トピック
次を指定する。
[Project name] プロジェクト名
[Source code directory] ソースコードのディレクトリー
[Destination directory] ドキュメントの生成先のディレクトリー

[Wizard]タブ - [Model]トピック
次を指定する。
[All Entries]ボタンをチェック
[Optimiza for C or PHP output]ボタンをチェック

[Wizard]タブ - [Output]トピック
次を指定する。
[HTML]ボタンをチェック
[with frames and a nabigation tree]ボタンをチェック (ただし、これは好み)


[Expert]タブ - [Project]トピック
次を指定する。
[OUTPUT_LANGUAGE] で [Japanese] を選択

[Run]タブ - [Run doxygen]ボタンをクリックすると、ドキュメント生成を行う


■ブラウザーでドキュメントを見る

[Run]タブ - [Show HTML output]ボタンをクリックすると、ドキュメントをブラウザーで確認できる


■参考URL

PHPソースからドキュメントを生成するツール
http://www.1x1.jp/blog/2007/10/php_source_document.html

http://www.doxygen.org
http://www.stack.nl/~dimitri/doxygen/

以上

PHP ソースからドキュメントを自動生成する (phpdocumentor)

2008年12月29日 | PHP
PHP ソースからドキュメントを自動生成する (phpdocumentor)
================================================================================

PHP ソースからドキュメントを自動生成させることができる。
ドキュメントの基になるのは、ドキュメントコメントといわれるもので、
/** で始まり、*/ で終わる形式のコメント。

また、その中に、次のようなタグをつけることで、ドキュメントに対して指示を出すこと
ができる。もちろん、これ以外にもいろいろとある。
---
* @author 作成者
* @version バージョン
* @param 引数名 意味
* @return 戻り値
---

PDT を使っていれば、このドキュメントコメントの基になるものはある程度自動生成する。
(Ctrl+Shift+J)


■インストール

pearコマンドを使ってインストールする。

---
>pear install --alldeps phpdocumentor
PHP Warning: Zend Debug Server for PHP 5.2.x cannot be found (expected at 'C:x
amppphpzendOptimizerlibDebuggerphp-5.2.xZendDebugger.dll') - try reinstalling the Zend Debug Server in Unknown online 0
downloading PhpDocumentor-1.4.2.tgz ...
Starting to download PhpDocumentor-1.4.2.tgz (2,421,028 bytes)
................................done: 2,421,028 bytes
downloading XML_Beautifier-1.2.0.tgz ...
Starting to download XML_Beautifier-1.2.0.tgz (12,948 bytes)
...done: 12,948 bytes
downloading XML_Parser-1.3.1.tgz ...
Starting to download XML_Parser-1.3.1.tgz (14,565 bytes)
...done: 14,565 bytes
downloading XML_Util-1.2.1.tgz ...
Starting to download XML_Util-1.2.1.tgz (17,729 bytes)
...done: 17,729 bytes
install ok: channel://pear.php.net/PhpDocumentor-1.4.2
install ok: channel://pear.php.net/XML_Parser-1.3.1
install ok: channel://pear.php.net/XML_Util-1.2.1
install ok: channel://pear.php.net/XML_Beautifier-1.2.0
---


■ドキュメント生成

phpdoc コマンドを使って生成する。

コマンド
---
phpdoc -t 生成ドキュメントのディレクトリー
-d ソースのディレクトリー
[-o HTMLのテンプレート]
---

現在の作業ディレクトリーの直下にソースを入れるディレクトリー(src)があり、また、
ドキュメントを doc ディレクトリーに入れたいときのコマンド

---
>phpdoc -t ./doc -d ./src
PHP Warning: Zend Debug Server for PHP 5.2.x cannot be found (expected at 'C:x
amppphpzendOptimizerlibDebuggerphp-5.2.xZendDebugger.dll') - try reinstall
ing the Zend Debug Server in Unknown online 0
PHP Version 5.2.6
phpDocumentor version 1.4.2

Parsing configuration file phpDocumentor.ini...
(found in C:xamppphpdata/PhpDocumentor/)...
: (略)
Total Documentation Time: 7 seconds
done
---


■ブラウザーでドキュメントを見る

上記のコマンドは、ドキュメントのテンプレートは指定してない。
見た感じは、JavaのAPIドキュメントもどきのようである。

見た目を変えるには、-o オプションを使い、ドキュメントのテンプレートを指定する。

□ドキュメントのテンプレート
---
HTML:frames:* - output is HTML with frames.
default - JavaDoc-like template, very plain, minimal formatting
earthli - BEAUTIFUL template written by Marco von Ballmoos
l0l33t - Stylish template
phpdoc.de - Similar to phpdoc.de's PHPDoc output
phphtmllib - Very nice user-contributed template
phpedit - Based on output from PHPEdit Help Generator

HTML:Smarty:* - output is HTML with no frames.
default - Bold template design using css to control layout
HandS - Layout is based on PHP, but more refined, with logo image
PHP - Layout is identical to the PHP website
---


■日本語ドキュメントを生成できるようにする

このままだと、日本語のドキュメントは文字化けする。
html ファイルのテンプレートで、日本語が使用できるような文字コード(utf-8など)を指定する。

これらのテンプレートは、上記のドキュメントのテンプレートごとにあるので、自分の使いたいテンプレートのものを変更する。(または、いっそのこと、すべて)

ここでは、デフォルトのテンプレートを使っているので、つぎのファイルをの文字コード部分を変更する。

C:xamppphpdataPhpDocumentorphpDocumentorConvertersHTMLframestemplatesd
efaulttemplatesheader.tpl
------------------------------------------------------


org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
            
            <title>{$title}</title>
            <link rel="stylesheet" href="{$subdir}media/stylesheet.css" />
            <meta http-equiv='Content-Type' content='text/html; charset=utf-8
'/> </head> <body> {if $top3}
{/if} ------------------------------------------------------



■参考URL

phpDocumentorでドキュメントの自動生成
http://caspar.hazymoon.jp/php/phpDocumentor/

phpDocumentor: The complete documentation solution for PHP
http://phpdoc.org/index.php

Do You PHP? - phpDocumentor - PHPDocに代わるAPIドキュメント自動生成ツール
http://www.doyouphp.jp/tips/tips_phpdocumentor.shtml

PHPソースからドキュメントを生成するツール
http://www.1x1.jp/blog/2007/10/php_source_document.html


以上

symfony への MVC アーキテクチャーの適用

2008年12月28日 | PHP
symfony への MVC アーキテクチャーの適用
================================================================================

symfony で、MVC モデルの M (Model) も使ったサンプル。

ここでは、BMI 値の算出を symfony で作る。

画面の流れは、以下のとおり。

(1) ブラウザーで URL 入力
(2) BMI 算出のための身長と体重を入力する画面表示
(3) 入力値を送信
(4) BMI 値の画面表示


■bmi アプリケーションとモジュールの作成

□bmi アプリケーションの作成

---
C:\xampp\htdocs\symfony>symfony init-app bmi
PHP Warning: Zend Debug Server for PHP 5.2.x cannot be found (expected at 'C:\x
ampp\php\zendOptimizer\lib\Debugger\php-5.2.x\ZendDebugger.dll') - try reinstall
ing the Zend Debug Server in Unknown online 0
>> dir+ C:\xampp\htdocs\symfony\apps/bmi\config
:
>> chmod 666 C:/xampp/htdocs/symfony/log/hello_dev.log
>> dir+ C:\xampp\htdocs\symfony\test/functional/bmi
---

□bmi モジュールの作成

---
C:\xampp\htdocs\symfony>symfony init-module bmi bmi
PHP Warning: Zend Debug Server for PHP 5.2.x cannot be found (expected at 'C:\x
ampp\php\zendOptimizer\lib\Debugger\php-5.2.x\ZendDebugger.dll') - try reinstall
ing the Zend Debug Server in Unknown online 0
>> dir+ C:\xampp\htdocs\symfony\apps\bmi\modules/bmi\actions
:
>> tokens C:/xampp/htdocs/symfony/apps/bm.../bmi/templates/indexSuccess.php
---


■アクション(コントロール)の作成

ブラウザーからの最初のリクエストを処理する executeIndex() メソッドと、
身長と体重を受け取り、BMI のオブジェクトを生成して、表示用のテンプレートに渡す e
xecuteShow() メソッドの 2 つを作ります。

modules/sbmi/actions/actions.class.php
------------------------------------------------------
<?php
require_once("BMI.class.php");
?>
<?php
/**
 * sbmi actions.
 *
 * @package    symfony
 * @subpackage sbmi
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 2692 2006-11-15 21:03:55Z fabien $
 */
class sbmiActions extends sfActions
{
    public function executeIndex()
    {
        //    $this->forward('default', 'module');
    }

    public function executeShow()
    {
        $request = $this->getRequest();

        $this->bmi = new BMI();                                     // (1)
        $this->bmi->setHeight($request->getParameter("height"));    // (2)
        $this->bmi->setWeight($request->getParameter("weight"));    // (2)
        //    $this->forward('default', 'module');
    }
}
?>
------------------------------------------------------



□ $this->bmi = new BMI(); // (1)

モデルのオブジェクトを生成。

□ $this->bmi->setHeight($request->getParameter("height")); // (2)
$this->bmi->setWeight($request->getParameter("weight")); // (2)

モデルに対してデータを設定。


■モデルの作成

BMIクラス。

今回は、modules/sbmi/actions に作る。

modules/bmi/actions/actions.class.php
------------------------------------------------------
<?php
/**
 * 身長と体重をもとにそのBMIを管理する
 * @author marunomaruno
 * @version 3.1 symfony 版
 *
 */
class BMI {
    private $height;
    private $weight;

    /**
     * 身長を設定する
     * @param $height 身長(cm)
     */
    public function setHeight($height) {
        $this->height = $height;
    }

    /**
     * 身長を取得する。
     * @return 身長(cm)
     */
    public function getHeight() {
        return $this->height;
    }

    /**
     * 体重を設定する
     * @param $height 体重(kg)
     */
    public function setWeight($weight) {
        $this->weight = $weight;
    }

    /**
     * 体重を取得する。
     * @return 体重(kg)
     */
    public function getWeight() {
        return $this->weight;
    }

    /**
     * BMIを取得する。
     * @return BMI
     */
    public function getBmi() {
        return $this->weight / pow($this->height / 100, 2);
    }
}
------------------------------------------------------



■ビューの作成

executeIndex() メソッドからフォーワードされてくるのは、indexSuccess.php ファイル。
また、executeShow() メソッドからフォーワードされてくるのは、showSuccess.php ファ
イル。

これらはネーミングで紐付けされる。

アクション名 アクションクラスのメソッド名 テンプレートのファイル名
------------ ---------------------------- ------------------------
xxxx executeXxxx() xxxxSuccess.php


□入力フォームを表示するビュー(テンプレート)の作成

modules/sbmi/templates/indexSuccess.php
------------------------------------------------------
<?php use_helper('Form'); ?> 

<h1>BMI</h1>

<?php echo form_tag("bmi/show", array("method"=>"post")); ?>
<br>
身長 <?php echo input_tag("height", ""); ?> cm

<br>
体重 <?php echo input_tag("weight", ""); ?> kg

<br>
<?php echo submit_tag("送信"); ?>

</form>
------------------------------------------------------



□BMI の結果を表示するビュー(テンプレート)の作成

modules/bmi/templates/showSuccess.php
------------------------------------------------------
<h1>BMI</h1>
あなたの BMI 値は、<?php echo $bmi->getBmi(); ?> です。
------------------------------------------------------



以上

Windows に symfony をインストール

2008年12月27日 | PHP
Windows に symfony をインストール
================================================================================

(前提) XAMPP 2.5 は C:xampp ディレクトリーにインストール済み、pear もインストー
ル済

■参考URL

symfony PHP Framework
http://www.symfony-project.org/

Official documentation と Tutorials
http://www.symfony-project.org/doc/
日本語に訳されている部分もあるが、すべてではない。

http://symfony.xrea.jp/1.0/book/index.html (2009-07-05 追記)

■symfonyインストール

まず、チャネルを定義し、そのチャネルを使ってオンラインでインストールする。
インストールした後は、symfony のバージョンを確認する。

---
C:xamppphp>pear channel-discover pear.symfony-project.com
PHP Warning: Zend Debug Server for PHP 5.2.x cannot be found (expected at 'C:x
amppphpzendOptimizerlibDebuggerphp-5.2.xZendDebugger.dll') - try reinstall
ing the Zend Debug Server in Unknown online 0
Adding Channel "pear.symfony-project.com" succeeded
Discovery of channel "pear.symfony-project.com" succeeded

C:xamppphp>pear install symfony/symfony
PHP Warning: Zend Debug Server for PHP 5.2.x cannot be found (expected at 'C:x
amppphpzendOptimizerlibDebuggerphp-5.2.xZendDebugger.dll') - try reinstall
ing the Zend Debug Server in Unknown online 0
downloading symfony-1.2.1.tgz ...
Starting to download symfony-1.2.1.tgz (2,689,398 bytes)
..............................................................done: 2,689,398 by
tes
install ok: channel://pear.symfony-project.com/symfony-1.2.1

C:xamppphp>symfony -V
PHP Warning: Zend Debug Server for PHP 5.2.x cannot be found (expected at 'C:x
amppphpzendOptimizerlibDebuggerphp-5.2.xZendDebugger.dll') - try reinstall
ing the Zend Debug Server in Unknown online 0
symfony version 1.2.1 (C:xamppphpPEARsymfony)
---


★ワーニングの対処
---
C:eclipseeclipse_PDTpluginsorg.zend.php.debug.debugger.win32.x86_5.2.14.v200
80602resourcesphp5ZendDebugger.dll

C:xamppphpzendOptimizerlibDebuggerphp-5.2.x
ディレクトリにコピー

すればよさそうだが、ここにはすでに ZendDebugger.dll がある。なぜ出るのだろうか?
とりあえず、ここではワーニングなので、無視する。
---



■symfony プロジェクトの構成

symfonyでは、その web アプリケーションの作成を、
プロジェクト
アプリケーション
モジュール
アクション
という単位で作成する。

プロジェクトは、web アプリケーションの単位、
アプリケーションは、機能の単位(サービスやユースケースの単位)、
モジュールは、一連の画面の流れの単位、
アクションは、画面や、フォームの単位
と考えればよい。

作成手順としては、つぎのように作成する。
(1)プロジェクト用のディレクトリーの作成
(2)プロジェクトの作成
(3)アプリケーションの作成
(4)モジュールの作成
(5)アクションの編集
(6)テンプレートの編集

なお、(1)、(2)は、一度作ればおわりである。また、(2)以降の(3)、(4)を行う symfony
コマンドは、symfony のプロジェクトのディレクトリーをカレントディレクトリーとして
作業する必要がある。



■symfonyプロジェクトの作成

C:xampphtdocs ディレクトリーの下に symfony ディレクトリーをつくり、そこをカレ
ントディレクトリーとして作業する。

プロジェクトの作成は、つぎのコマンドによる。
---
symfony init-project プロジェクト名
---

---
C:xampphtdocssymfony>symfony init-project symfony
PHP Warning: Zend Debug Server for PHP 5.2.x cannot be found (expected at 'C:x
amppphpzendOptimizerlibDebuggerphp-5.2.xZendDebugger.dll') - try reinstall
ing the Zend Debug Server in Unknown online 0
>> dir+ C:xampphtdocssymfonyapps
: (略)
>> chmod 777 C:/xampp/htdocs/symfony/web/uploads/assets
---


■helloworld アプリケーションを作る

アプリケーションの作成は、つぎのコマンドによる。
---
symfony init-app アプリケーション名
---

---
C:xampphtdocssymfony>symfony init-app helloworld
PHP Warning: Zend Debug Server for PHP 5.2.x cannot be found (expected at 'C:x
amppphpzendOptimizerlibDebuggerphp-5.2.xZendDebugger.dll') - try reinstall
ing the Zend Debug Server in Unknown online 0
>> dir+ C:xampphtdocssymfonyapps/helloworldconfig
>> file+ C:xampphtdocssymfonyapps/helloworldconfig/app.yml
: (略)
>> chmod 777 C:/xampp/htdocs/symfony/web/uploads/assets
>> dir+ C:xampphtdocssymfonytest/functional/helloworld

---


■symfony をブラウザーで見てみる

プロジェクトを作るだけではなく、少なくともひとつはアプリケーションを作らないと、
symfony の画面は表示されない。

http://localhost/symfony/web/

つぎのような画面が表示される。()
------------------------------------------------------
 symfony PHP Framework
ok
Symfony Project Created
Congratulations! You have successfully created your symfony project.

Project setup successful
    This project uses the symfony libraries. If you see no image in this page, y
ou may need to configure your web server so that it gains access to the symfony_
data/web/sf/ directory.
This is a temporary page
    This page is part of the symfony default module. It will disappear as soon a
s you define a homepage route in your routing.yml.
What's next

        * Create your data model
        * Customize the layout of the generated templates
        * Learn more from the online documentation

---



■helloworld モジュール作成

モジュールの作成は、つぎのコマンドによる。
---
symfony init-module アプリケーション名 モジュール名
---

---
C:xampphtdocssymfony>symfony init-module helloworld helloworld
PHP Warning:  Zend Debug Server for PHP 5.2.x cannot be found (expected at 'C:x
amppphpzendOptimizerlibDebuggerphp-5.2.xZendDebugger.dll') - try reinstall
ing the Zend Debug Server in Unknown online 0
>> dir+      C:xampphtdocssymfonyappshelloworldmodules/helloworldactions
    : (略)
>> tokens    C:/xampp/htdocs/symfony/apps/he...ello/templates/indexSuccess.php

C:xampphtdocssymfony>
---



■Eclipse でプロジェクトを作る

Eclipse のワークスペースは、C:xampphtdocsworkspace になっているので、プロジェ
クト作成時に [Use default] のチェックをはずして、[Directory] を自分で指定して作
る。

プロジェクト名 helloworld

[Use default] のチェックをはずして、[Directory] を次に指定する。
C:xampphtdocssymfonyapps


■ソースを確認する

symfony は、アーキテクチャーパタンの MVC パターンを基本にしています。
今回作ったモジュールでは、 C (Controller) の部分と、 V (View) の部分に対応した
ソースができます。

C (Controller) の部分は、
modules/モジュール名/actions/actions.class.php
というファイルに、sfActions クラスを継承した「モジュール名Actions」というクラス
としてできます。

V (View) の部分は、
modules/モジュール名/templates/indexSuccess.php
というソースができます。


□MVC モデルの C (Controller) の部分に相当するソース

modules/helloworld/actions/actions.class.php
------------------------------------------------------


/**
 * helloworld actions.
 *
 * @package    symfony
 * @subpackage helloworld
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 12479 2008-10-31 10:54:40Z fabien $
 */
class helloworldActions extends sfActions
{
 /**
  * Executes index action
  *
  * @param sfRequest $request A request object
  */
  public function executeIndex(sfWebRequest $request)
  {
    $this->forward('default', 'module');    // (1)
  }
}
------------------------------------------------------



□MVC モデルの V (View) の部分に相当するソース

これは、0 バイトのファイルとして、作られる。

modules/helloworld/templates/indexSuccess.php
------------------------------------------------------
(空ファイル)
------------------------------------------------------




■helloworld モジュールをブラウザーで見る

http://localhost/symfony/web/helloworld_dev.php/helloworld
()

------------------------------------------------------
 symfony PHP Framework
module created
Module "helloworld" created
Congratulations! You have successfully created a symfony module.

This is a temporary page
    This page is part of the symfony default module. It will disappear as soon a
s you override the index action in the new module.
What's next

        * Browse to the apps/helloworld/modules/helloworld/ directory
        * In actions/actions.class.php, edit the executeIndex() method and remov
e the final forward
        * Customize the templates/indexSuccess.php template
        * Learn more from the online documentation
------------------------------------------------------


現在の状態で、上記のように見えるのは、
modules/helloworld/actions/actions.class.php
の (1) の部分があるからである。
これは、このモジュールのデフォルトのテンプレートをに制御を渡す、というもの。

自分でつくるテンプレートをもとにブラウザーに表示する場合は、この行は削除(コメン
トアウト)する。

ネーミングとして、
executeIndex() メソッドの実行後に制御がわたるのは indexSuccess.php
になる。


■Hello, Symfony world! を表示

□modules/helloworld/actions/actions.class.php
------------------------------------------------------


/**
 * helloworld actions.
 *
 * @package    symfony
 * @subpackage helloworld
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 12479 2008-10-31 10:54:40Z fabien $
 */
class helloworldActions extends sfActions
{
 /**
  * Executes index action
  *
  * @param sfRequest $request A request object
  */
  public function executeIndex(sfWebRequest $request)
  {
//    $this->forward('default', 'module');    // (1)
  }
}
------------------------------------------------------



□modules/helloworld/templates/indexSuccess.php
------------------------------------------------------

Hello, Symfony World! 
at 
------------------------------------------------------



以上

Windows に Pear をインストール

2008年12月24日 | PHP
Windows に Pear をインストール
================================================================================

(前提) XAMPP 2.5 は C:xampp ディレクトリーにインストール済み

■ Pear をインストール

C:xamppphpに行き、go-pear.batをダブルクリックする。
メッセージがいろいろと出るが、すべてエンターでいく。
---
PHP Warning: Zend Debug Server for PHP 5.2.x cannot be found (expected at 'C:x
amppphpzendOptimiz
erlibDebuggerphp-5.2.xZendDebugger.dll') - try reinstalling the Zend Debug S
erver in Unknown on
line 0

Are you installing a system-wide PEAR or a local copy?
(system|local) [system] :

Below is a suggested file layout for your new PEAR installation. To
change individual locations, type the number in front of the
directory. Type 'all' to change all of them or simply press Enter to
accept these locations.

1. Installation base ($prefix) : C:xamppphp
2. Temporary directory for processing : C:xamppphptmp
3. Temporary directory for downloads : C:xamppphptmp
4. Binaries directory : C:xamppphp
5. PHP code directory ($php_dir) : C:xamppphppear
6. Documentation directory : C:xamppphpdocs
7. Data directory : C:xamppphpdata
8. User-modifiable configuration files directory : C:xamppphpcfg
9. Public Web Files directory : C:xamppphpwww
10. Tests directory : C:xamppphptests
11. Name of configuration file : C:WINDOWSpear.ini
12. Path to CLI php.exe : C:xamppphp.

1-12, 'all' or Enter to continue:
Beginning install...
Configuration written to C:WINDOWSpear.ini...
Initialized registry...
Preparing to install...
installing phar://go-pear.phar/PEAR/go-pear-tarballs/Archive_Tar-1.3.2.tar...
installing phar://go-pear.phar/PEAR/go-pear-tarballs/Console_Getopt-1.2.3.tar...
installing phar://go-pear.phar/PEAR/go-pear-tarballs/PEAR-1.7.1.tar...
installing phar://go-pear.phar/PEAR/go-pear-tarballs/Structures_Graph-1.0.2.tar...
pear/PEAR can optionally use package "pear/XML_RPC" (version >= 1.4.0)
install ok: channel://pear.php.net/Archive_Tar-1.3.2
install ok: channel://pear.php.net/Console_Getopt-1.2.3
install ok: channel://pear.php.net/Structures_Graph-1.0.2
install ok: channel://pear.php.net/PEAR-1.7.1
PEAR: Optional feature webinstaller available (PEAR's web-based installer)
PEAR: Optional feature gtkinstaller available (PEAR's PHP-GTK-based installer)
PEAR: Optional feature gtk2installer available (PEAR's PHP-GTK2-based installer)
PEAR: To install optional features use "pear install pear/PEAR#featurename"

******************************************************************************
WARNING! The include_path defined in the currently used php.ini does not
contain the PEAR PHP directory you just specified:
<C:xamppphppear>
If the specified directory is also not in the include_path used by
your scripts, you will have problems getting any PEAR packages working.


Would you like to alter php.ini <C:xamppphpphp.ini>? [Y/n] :

php.ini <C:xamppphpphp.ini> include_path updated.

Current include path : .;C:xamppphppear
Configured directory : C:xamppphppear
Currently used php.ini (guess) : C:xamppphpphp.ini
Press Enter to continue:

** WARNING! Old version found at C:xamppphp, please remove it or be sure to us
e the new c:xamppp
hppear.bat command

The 'pear' command is now at your service at c:xamppphppear.bat

** The 'pear' command is not currently in your PATH, so you need to
** use 'c:xamppphppear.bat' until you have added
** 'C:xamppphp' to your PATH environment variable.

Run it without parameters to see the available actions, try 'pear list'
to see what packages are installed, or 'pear help' for help.

For more information about PEAR, see:

http://pear.php.net/faq.php
http://pear.php.net/manual/

Thanks for using go-pear!



* WINDOWS ENVIRONMENT VARIABLES *
For convenience, a REG file is available under C:xamppphpPEAR_ENV.reg .
This file creates ENV variables for the current user.

Double-click this file to add it to the current user registry.

続行するには何かキーを押してください . . .
---

■環境変数 PATH を設定

環境変数 PATH に、C:xamppphp 連結する
---
PATH=%PATH%;C:xamppphp
---


■確認
pear -V コマンドで確認する。
---
C:xamppphp>pear -V
PHP Warning: Zend Debug Server for PHP 5.2.x cannot be found (expected at 'C:x
amppphpzendOptimiz
erlibDebuggerphp-5.2.xZendDebugger.dll') - try reinstalling the Zend Debug S
erver in Unknown on
line 0
PEAR Version: 1.7.1
PHP Version: 5.2.6
Zend Engine Version: 2.2.0
Running on: Windows NT MARUNO 5.1 build 2600

C:xamppphp>php -v
PHP Warning: Zend Debug Server for PHP 5.2.x cannot be found (expected at 'C:x
amppphpzendOptimiz
erlibDebuggerphp-5.2.xZendDebugger.dll') - try reinstalling the Zend Debug S
erver in Unknown on
line 0
PHP 5.2.6 (cli) (built: May 2 2008 18:02:07)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
with Zend Extension Manager v1.2.0, Copyright (c) 2003-2007, by Zend Technol
ogies
with Zend Optimizer v3.3.3, Copyright (c) 1998-2007, by Zend Technologies
---

以上

Eclipse PDT 入門

2008年12月10日 | PHP
Eclipse PDT 入門
================================================================================

■ Eclipse

製品版 統合開発環境(IDE)と同等の充実した開発機能
無償 / 商用利用可能 (CPL, Common Public License)
豊富なプラグイン
軽快な動作
さまざまな開発言語をサポート

IDE は、ソースコードの入力以外に、ファイル管理、バージョン管理、入力時のコードの
補完、コンパイル、ビルドなど、ソースの作成以外に必要な開発作業をサポートするアプ
リケーション。


■ PDT - PHP Developer Tools

PDT (PHP Developer Tools) は、Eclipse をベースとした PHP の IDE。

PDT の開発は Zend 社。

Zend Debugger と組み合わせることで、ステッブバイステップによる実行やブレイクポイ
ントを設定、ブレイク時に変数の値をウオッチ、構成中のレスポンスのウオッチなどの操
作ができる。

PDT Project
PHP Development Tools
http://www.eclipse.org/pdt/


■ Eclipse PDT のインストール

□JavaSDK のダウンロードとインストール

JavaSDK1.4 以前の場合は、JavaSDK5.0 以上をダウンロードとインストールする。

Java SE Downloads
http://java.sun.com/javase/ja/6/download.html

JDK 6 Update 10
jdk-6u10-linux-i586.bin


□PDT のダウンロード

次のサイトから PDT をダウンロードする。
http://downloads.zend.com/pdt/all-in-one/

pdt-2.0.0.S20081102_debugger-5.2.14.v20080602-all-in-one-linux-gtk.tar.gz


バージョンとして、1.0.3 と 2.0.0 があるが、2.0.0 は JavaSE5.0 以上でないと動作し
ない。

なお、Eclipse の PDT のサイトからダウンロードすると、デバッガーを別に設定しなけ
ればならないので面倒。この Zend のサイトからならば、あらかじめデバッガーもインス
トール済。


□解凍

ダウンロードしたものは、ホームディレクトリの Desktop にあるので、それをコピーし
て、解凍すると、ホームディレクトリ上で eclipse ディレクトリができる。
今後、この eclipse を解凍したディレクトリ (/home/student/eclipse/) を、
$ECLIPSE_HOME とする。

$ tar zxvf Desktop/pdt-2.0.0.S20081102_debugger-5.2.14. (折り返し)
v20080602-all-in-one-linux-gtk.tar.gz

(注) ここでは、student というユーザーで login してるという前提で以後記す。


□日本語化

日本語化パックとして、
http://iij.dl.sourceforge.jp/mergedoc/34234/pleiades_1.2.3.zip
をダウンロードして、$ECLIPSE_HOME に解凍する。

ただし、今のところ、Eclipse 3.4 には対応されていない様子。


□登録

ホームディレクトリにある .bashrc ファイルの最後の行に Eclipse のエイリアスを登録
する。これで、 eclipse コマンドだけで、eclipse を起動できる。

---
alias eclipse='/home/student/eclipse/eclipse &'
---



□php.ini の設定

/etc/php.ini に次の行を追加
---
zend_extension="/home/student/eclipse/plugins/org.zend.php.debug.debugger. (折り返し)
    linux.x86_5.2.14.v20080602/resources/php5/ZendDebugger.so"
zend_debugger.allow_hosts=127.0.0.1
zend_debugger.expose_remotely=always
---




■ PDT

□起動

エイリアスが設定してあれば次のコマンドで起動する。

$ eclipse

Eclipse 起動時に workspace の指定を
/home/student/public_html
にする。


□PHP パースペクティブ

Edipse の画面(パースペクティブ)はいくつかのビューで構成。

これらのビューのセットのことをパースペクティブとよぶ。 Eclipse のデフォルトでは
Java 言語用のパースペクティブが表示されているので、石上のボタンからPHPのパースベ
クティブを選ぶ。

なお、今回の PDT では、デフォルトとして Resources しかないので、
[Window] - [Open Perspective] - [PHP]
として開く必要がある。


□プロジェクトツリー・ビュー

ブロジェクトの一覧を表示

ツリーを展開するとプロジェクト配下のファイル名が表示

lnclude Path などの設定も確認可能

プロジェクト内で PEAR ライブラリや Smarty を利用する場合は、それらのディレクトリ
を lndude Path に追加。これによって、PEAR や Smarty のクラスを利用している場合で
も、コード補完やデバッグが可能になる。


□アウトライン・ビュー

アウトラインビューでは、ソース内に記述されているクラスのアウトライン(プロパティ
やメソッド)が表示


□エディタ・ビュー

PHPのコードを人力するためのビュー


□組み込み関数リスト・ビュー

PHP の組み込み関数のリストが表示。

関数リストから PHP マニュアルを直接参照することができる

ただ、このビューはデフォルトでは表示されていないので、次の手順によってビューを開
く必要がある。

[Window] - [Show View] - [PHP Functions]



■ PDT を使ってみる

□プロジェクトを作り、使ってみる

[File] - [New] - [Project] - [PHP] - [PHP Project] - [Next]
で、プロジェクト名を指定

今回は、「hello」プロジェクトを作る。

[プロジェクト]右クリック - [New] - [PHP File]
で、新規PHPファイル作成

今回は、「hello.php」を作る

内容は、以下のとおり。
メッセージをブラウザに表示する PHP である。

---

    echo "こんにちは";
?>
---



□スクリプトで実行する

次の操作で開始する。

[実行ボタンのプルダウン] - [Run As] - [PHP Script]
で、スクリプトとして実行できる。

または、ショートカットで、[Shift+Alt+X H]

[Browser Output]タグで、ブラウザーで表示したイメージ
[Debug Output]タグで、ブラウザーで表示したイメージ


□Eclipse 内のブラウザーで表示する

[Window]メニュー - [Preferences] - [PHP] - [PHP Servers]
で、新規PHPサーバーを作成

[Server] - [Enter the URL that points to the document root of this server]
を以下のように設定
http://localhost/~student

[Run]ボタンのプルダウン - [PHP Web Page] で表示できる
または
Shift+Alt+X W


□独立したブラウザーで表示する

Apacheサーバーを起動する必要がある。
サーバーを起動するには、rootユーザーになる必要がある。

---
$ su -
# service httpd start
httpd を起動中:                                            [  OK  ]
---


ブラウザのURL欄に
http://localhost/~student/
を入れると、ファイルリストが出るので、そこの「hello」ディレクトリーをクリックし、
「hello.php」
をクリックする。



■ PDT の機能

□自動コード補完

PHPコード補完

HTML タグ補完

関数名補完
途中まで入力し、「Ctrl+TAB」(Linuxの場合)または「Ctrl+Space」(Windowsの場合)で関数名の候補リストを出す


□コメント

範囲を選択後、つぎのショートカットで、コメント化

行コメント: Ctrl+/

ドキュメントコメント: Ctrl+Shift+J


□ソースのフォーマット

[Source]メニュー - [Format]


□PHPマニュアル参照

マニュアルのデフォルトは英語版なので、次の手順によって日本語のマニュアルが表示されるようにする。

[Window]メニュー - [Preferences] - [PHP] - [PHP Manual] - [New]ボタン・クリック
で、
[Name] を
PHP.net/jp

[Remote Site (URL)] を次のようにする。
http://www.php.net/manual/jp

そして、[OK]ボタン押下。
Site Name が、今設定した PHP.net/jp であることを確認し、[Default] ボタンを押下する。


□ローカルヒストリ

[対象ソース]右クリック - [Compare With] または [Replace With] - [Local History]


□定義元へジャンプ

要素を選択して F3


□デバッグ

後述


■ PDT によるデバッグ方法

スクリプトによる実行時にデバッグできます。


1. [デバッグ]ボタンのプルダウン - [Run As]で起動


2. パースペクティブを「PHP Debug」に切替え(自動で切り替わるが、切り替えるかどう
かを聞いてくる)

または、ショートカットで、[Shift+Alt+D H]


3. スクリプトの先頭で停止

4. ファンクションキーや、ブレークポイントを使って、必要なところでプログラムを停
止し、変数の値などを確認しながらデバッグする。


F5: ステップイントゥ: 次の行に進み、止まる。このとき、関数を呼び出していれば、そ
の関数の中で止まる。

F6: ステップオーバー: 次の行に進み、止まる。このとき、関数を呼び出していれば、そ
の関数を実行し、戻ったところで止まる。

F7: ステップリターン: 現在の関数から戻り、止まる



◆実習

次のプログラムを参考にして、いろいろと試してみましょう。

□lab1.php
---

    require_once("Book.class.php");
?>


    $a = 9876;
    $b = new Book(123, "PHP");
    $c = array(456, "php", 3.14);
    $d = array("abc" => 456, 901 => "php");
    echo $a . "";
    echo $b->getId() . "";
    echo $b->getName() . "";
    var_dump($b);
    echo "";
    var_dump($c);
    echo "";
    var_dump($d);
    echo "";
?>
---


□Book.class.php
---

class Book {
    private $id;
    private $name;
    
    public function __construct($id, $name) {
        $this->id = $id;
        $this->name = $name;
        
    }
    public function getId() {
        return $this->id;
    }
    
    public function getName() {
        return $this->name;
    }
    
}
?>
---


□結果
---
9876
123
PHP
object(Book)#1 (2) { ["id:private"]=> int(123)
["name:private"]=> string(5) "PHP" }
array(3) { [0]=> int(456) [1]=> string(3) "php" [2]=>
float(3.14) }
array(2) { ["abc"]=> int(456) [901]=> string(3) "php" }
---




■セッション

ログインするアプリを作ってみる。


□login.html
---

	"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="login-1.php" method="POST">
名前: <input type="text" name="login"/>
パスワード: <input type="password" name="password"/>
<input type="submit" value="login"/>

</form>
</body>
</html>
---



□login-1.php
---

    session_start();
    
    $login = $_POST["login"];
    $password = $_POST["password"];
    
    if (empty($login) || empty($password)) {
        print "名前・パスワードが入力されていません。";
        session_destroy();
        exit();
    }
    
    if ($login == 'yamada' && $password == 'himitu') {
        print "ログインに成功しました。";
        $_SESSION['login'] = $login;
        $_SESSION['name'] = "山田";
        
    } else {
        print "名前・パスワードが適切ではありません。";
        session_destroy();
        exit();
    }
    
?>
---



□login-2.php
---

    session_start();
    
    if ($_SESSION['login'] == "" || !isset($_SESSION['login'])) {
        print "ログインされていません。";
        session_destroy();
        exit();
    } else {
        print "正常にログインできています。";
        print $_SESSION['name'] . "";
        print session_id();
    }
    
?>
---



□login-3.php
---

    session_start();
    
    session_destroy();
    print "ログアウトしました";
    
?>
---



■Smarty

PHP プロジェクト「smarty1」を作る。

プロジェクト内に、つぎの2つのフォルダーを作る。
templates
templates_c

PDT のデバッガーでは、テンプレートのデバッグはできない。



□smarty1.php
---

    require_once("/usr/share/Smarty/libs/Smarty.class.php");
    
    $tpl = new Smarty;
    
    $var_name = "maruno";
    $var_email = "maruno@example.net";
    
    $tpl->assign("name", $var_name);
    $tpl->assign("email", $var_email);
    
    $tpl->display("smarty1.tpl"); 
    
?>
---



□smarty1.tpl
---
<html>
<body>
{$name} さんのメールアドレスは {$email}
</body>
<html>
---




■ 参考 URL

Eclipse PDT (PHP Development Tools) - Q&A?
http://hp.vector.co.jp/authors/VA000137/phpide/qanda.html


以上