<?xml version="1.0" encoding="EUC-JP"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="en">
  <title>PHPLog</title>
  <link rel="alternate" type="text/html" href="http://www.php-log.net/" />
  <modified>2007-07-14T16:24:12Z</modified>
  <tagline>phpとか書いてあるけど、php以外のことも書きますよ。
FlashとかSVGとかphpと関係ありそうなこと</tagline>
  <id>tag:www.php-log.net,2007://3</id>
  <generator url="http://www.movabletype.org/" version="3.171-ja">Movable Type</generator>
  <copyright>Copyright (c) 2007, Imlktak</copyright>
  <entry>
    <title>tracをxreaにインストールしてみたよ</title>
    <link rel="alternate" type="text/html" href="http://www.php-log.net/archives/000035.html" />
    <modified>2007-07-14T16:24:12Z</modified>
    <issued>2007-07-14T16:09:03+00:00</issued>
    <id>tag:www.php-log.net,2007://3.35</id>
    <created>2007-07-14T16:09:03Z</created>
    <summary type="text/plain">うーん…苦労したわりには、使える用途が… ﾎﾝﾄ個人でしか使えないなぁ。sshに...</summary>
    <author>
      <name>Imlktak</name>
      
      
    </author>
    
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.php-log.net/">
      <![CDATA[<p>うーん…苦労したわりには、使える用途が…<br />
ﾎﾝﾄ個人でしか使えないなぁ。sshにIPと時間の制限があるから、subversionも<br />
複数人で使うのは辛いし。</p>

<p>trac+subversionはさくらで使った方がよさそうだね。</p>

<p><a href="http://trac.php-log.net">http://trac.php-log.net</a></p>]]>
      
    </content>
  </entry>
  <entry>
    <title>RIALTOでのAjaxアクセスサンプルメモ</title>
    <link rel="alternate" type="text/html" href="http://www.php-log.net/archives/000034.html" />
    <modified>2007-03-07T19:33:53Z</modified>
    <issued>2007-03-07T18:26:02+00:00</issued>
    <id>tag:www.php-log.net,2007://3.34</id>
    <created>2007-03-07T18:26:02Z</created>
    <summary type="text/plain"> var ajaxReq=new rialto.io.AjaxRequest({...</summary>
    <author>
      <name>Imlktak</name>
      
      
    </author>
    
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.php-log.net/">
      <![CDATA[<pre>
<code>
var ajaxReq=new rialto.io.AjaxRequest({
	url:"rialtoModel.xml",
	method: 'get',
	withWaitWindow:true,                        
	onSuccess: function(request){                         
		var div = document.createElement("DIV");
		div.innerHTML = request.responseText;
		var fen = new rialto.widget.objFenData(600, 400, div, "Response");
	}
});
                    
ajaxReq.load("");
</code>
</pre>

<p>とりあえずメモ</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>sfGuardPluginをテスト</title>
    <link rel="alternate" type="text/html" href="http://www.php-log.net/archives/000033.html" />
    <modified>2006-11-05T07:49:35Z</modified>
    <issued>2006-11-04T21:48:52+00:00</issued>
    <id>tag:www.php-log.net,2006://3.33</id>
    <created>2006-11-04T21:48:52Z</created>
    <summary type="text/plain">symfonyのalphaバージョン入れただけではつまんないので、sfGuard...</summary>
    <author>
      <name>Imlktak</name>
      
      
    </author>
    <dc:subject>Symfony</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.php-log.net/">
      <![CDATA[<p>symfonyのalphaバージョン入れただけではつまんないので、sfGuardPluginを突っ込んでみます。</p>
<p>
<a href="http://www.symfony-project.com/trac/wiki/sfGuardPlugin">sfGuardPlugin</a>は、symfonyを使ったユーザ、グループ、権限管理を提供してくれる便利なモジュール。まだ未実装な機能もあったりで、完成とは言い難いですが、これを足場にしてシステム管理用アプリを作るのも良いでしょう。</p>

<p>前回同様、PHPIDEベースで進めていきます。</p>]]>
      <![CDATA[<p>External Toolsつくるのがちょっと面倒になったので、Antにチェンジします。
以下のようなコードを、PHPIDEのsymfonyプロジェクトのルートディレクトリに、build.xmlという名前で保存します。</p>

<pre>
<code>

&lt;?xml version="1.0"?&gt;
&lt;!-- ====================================================================== 
     2006/07/20 2:48:05                                                        

     Symfony Project Builder    
     Symfony Command Helper
                   
     Administrator                                                                
     ====================================================================== --&gt;
&lt;project name="Symfony Project Builder" default="default"&gt;
    &lt;description&gt;
            Symfony Command Helper
    &lt;/description&gt;

    &lt;!-- ================================= 
          target: default              
         ================================= --&gt;
    &lt;target name="default" depends="depends" description="--&gt; Symfony Command Helper"&gt;
		&lt;echo&gt;Symfony コマンド&lt;/echo&gt;
    		&lt;!-- executable="PHPのインストールディレクトリ\php"  --&gt;
	    	&lt;exec executable="D:\php52\php" resultproperty="command_help"&gt;
	    		&lt;!-- line="作成したプロジェクトの相対パス/symfony -T" --&gt;
				&lt;arg line="project/symfony -T"/&gt;
			&lt;/exec&gt;
    	&lt;input message="コマンドを入力してください" addproperty="sf_command" defaultvalue="-T"/&gt;
    	&lt;!-- executable="同じくPHPのインストールディレクトリ\php"  --&gt;
    	&lt;exec executable="D:\php52\php"&gt;
    		&lt;!-- line="こちらも同じく相対パス/symfony -T" --&gt;
			&lt;arg line="project/symfony ${sf_command}"/&gt;
		&lt;/exec&gt;
    &lt;/target&gt;

    &lt;!-- - - - - - - - - - - - - - - - - - 
          target: depends                      
         - - - - - - - - - - - - - - - - - --&gt;
    &lt;target name="depends"&gt;
    &lt;/target&gt;

&lt;/project&gt;

</code>
</pre>

<p>保存したbuild.xmlを右クリックし、Run As =&gt; Ant Build...を選択</p>

<a href="http://www.php-log.net/archives/sfguard0.png"><img alt="sfguard0.png" src="http://www.php-log.net/archives/sfguard0-thumb.png" width="500" height="269" /></a>

<p>設定が終わったら、Runを実行</p>

<a href="http://www.php-log.net/archives/sfguard20.png"><img alt="sfguard20.png" src="http://www.php-log.net/archives/sfguard20-thumb.png" width="500" height="425" /></a>

<p>OKを押すと、adminがappディレクトリに追加されます</p>

<p>次にプラグインをインストールします。<b>Run As =&gt; Ant Build</b>を選択</p>

<p><b>symfony plugin-install http://plugins.symfony-project.com/sfGuardPlugin</b> を実行</p>

<p>......あれ！ここでPEARが必要に…。でもPHP5.2.0は標準でPEARをバンドルしてません。</p>

<p>ということで、PHP5.2.0のインストールディレクトリで、go-pear.batを実行してはみたものの…エラー続きでインストールできず！こんなところにPHP5.2.0の罠が…</p>

<p><a href="http://aspn.activestate.com/ASPN/Mail/Message/pear-dev/3321210">ここにその辺のことが話題にのぼってるようです</a></p>

<p>どうやらcvsでコミットしてるようなので、<a href="http://cvs.php.net/viewvc.cgi/pearweb/public_html/go-pear.phar?revision=1.19">ここからgo-pear.pharファイルをダウンロード</a>して、phpインストールディレクトリ/PEAR内にあるgo-pear.pharを上書きする。</p>

<p>そのあと、go-pear.batを実行。はじめに<b>local</b>を選択し、その後はひたすらEnter</p>

<p>これでいけるようです。5.2.1が来るのもすぐかも…PHPのX.0シリーズはいつも短命ですね。</p>

<p>気を取り直してもう一度。以下のコマンドを実行していきます</p>

<pre>
plugin-install http://plugins.symfony-project.com/sfGuardPlugin
</pre>

<p>symfonyプロジェクトのデータベース設定(この例ではmysql)</p>
<pre>
#config/databases.yml
all:
  propel:
    class:          sfPropelDatabase
    param:
      dsn:          mysql://root:@localhost/dbname
#                   DB名://ユーザ名:パスワード@DBサーバアドレス/DB名
</pre>
<pre>
;config/propel.ini
propel.database            = mysql
propel.database.createUrl  = mysql://localhost/
propel.database.url        = mysql://root:@localhost/dbname
</pre>

<p>DBの設定が終わったら、Ant Buildで次のコマンドを実行</p>
<pre>
propel-build-all
</pre>

<p>作成されたテーブルに、ユーザや権限の情報を追加します。Ant Buildで以下を実行</p>

<pre>
propel-load-data admin
</pre>

<p><b>propel-load-data init-appで作った名</b>となります。</p>

<p>symfonyプロジェクト/apps/作成したapp名/config/settings.ymlを、以下のように編集し、sfGuardモジュールをアクティブにし、sfGuardAuthモジュールを使い認証をさせるようにします。</p>

<pre>
all:
  .actions:
    login_module:           sfGuardAuth
    login_action:           signin

    secure_module:          sfGuardAuth
    secure_action:          secure
  .settings:
    activated_modules:      [default, sfGuardAuth, sfGuardGroup, sfGuardUser, sfGuardPermission, sfGuardModule]
</pre>

<p>routing.ymlを編集します。<b>default_symfony:</b>の前あたりに以下を追加します。</p>

<pre>
sf_guard_signin:
  url:   /login
  param: { module: sfGuardAuth, action: signin }

sf_guard_signout:
  url:   /logout
  param: { module: sfGuardAuth, action: signout }

sf_guard_password:
  url:   /request_password
  param: { module: sfGuardAuth, action: password }
</pre>

<p>factories.yml内で、userに使用するクラスをsfGuardSecurityUserに変更。
factories.ymlは、各app内のconfigディレクトリよりも、projectのconfig内にfactories.ymlをコピって来て、
それを編集する方がいいでしょう。全appにfactories.ymlの設定が反映されます。</p>

<pre>
all:
  user:
    class: sfGuardSecurityUser
</pre>

<p>最後にsecurity.ymlのis_secureをonにして、完了。</p>

<p>Ant Buildで以下を実行し、キャッシュをクリアします。</p>

<pre>
cc
</pre>

<p>以上が終わったら、http://symfonyサイトURL/admin_dev.php/login にアクセスしてみましょう。
ID:admin Pass:admin で認証できます。</p>

<p>認証が終わると、TOPページが表示されるので、User、Group、Module、Permissionと、各モジュールに
アクセスしてみましょう。</p>
<ul>
  <li> http://symfonyサイトURL/admin_dev.php/sfGuardUser </li>
  <li> http://symfonyサイトURL/admin_dev.php/sfGuardGroup </li>
  <li> http://symfonyサイトURL/admin_dev.php/sfGuardModule </li>
  <li> http://symfonyサイトURL/admin_dev.php/sfGuardPermission </li>
  <li> http://symfonyサイトURL/admin_dev.php/logout </li>
</ul>

<p>どうやらsfGuardGroupのテンプレ<b>_permissions.php</b>が足りないようなので、
svnからダウンロードしてきます。</p>

<p><a href="http://www.symfony-project.com/trac/browser/plugins/sfGuardPlugin/modules/sfGuardGroup/templates/_permissions.php?format=raw">_permissions.php</a></p>

<p>これで一通りのことができるようになりました。(required_passwordはまだみたいなので、各自実装)</p>


]]>
    </content>
  </entry>
  <entry>
    <title>symfonyのalphaリリース+PHP5.2.0をテスト</title>
    <link rel="alternate" type="text/html" href="http://www.php-log.net/archives/000032.html" />
    <modified>2006-11-04T22:14:56Z</modified>
    <issued>2006-11-03T17:41:16+00:00</issued>
    <id>tag:www.php-log.net,2006://3.32</id>
    <created>2006-11-03T17:41:16Z</created>
    <summary type="text/plain">PHP5.2.0で、symfonyのalphaバージョンをインストールしてみまし...</summary>
    <author>
      <name>Imlktak</name>
      
      
    </author>
    <dc:subject>Symfony</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.php-log.net/">
      <![CDATA[<p>PHP5.2.0で、symfonyのalphaバージョンをインストールしてみました。</p>

<p>環境は以下の通り。</p>

<ul>
<li>symfony0.9.2594</li>
<li>PHPIDE 0.7 (Eclipse3.2.0)</li>
<li>Windows XP SP2</li>
</ul>

<p></p>

<p><br />
</p>]]>
      <![CDATA[<p>PHP5.2.0のZip Packageをダウンロード。</p>

<p><a href="http://jp2.php.net/get/php-5.2.0-Win32.zip/from/a/mirror">http://jp2.php.net/get/php-5.2.0-Win32.zip/from/a/mirror</a></p>

<p>適当な場所に解凍。(以下、<strong>D:\PHP52</strong>に解凍したと過程)</p>

<p>お決まりのphp.iniを編集。phpのインストールディレクトリのphp.ini-distを、php.iniにリネームして保存。今回は以下のように設定。</p>

<pre>
extension_dir = "d:\php52\ext"
</pre>
<pre>
extension=php_pdo.dll
extension=php_mbstring.dll
extension=php_pgsql.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_sockets.dll
extension=php_sqlite.dll
</pre>

<p>続いてsymfonyをダウンロード。</p>

<p><a href="http://www.symfony-project.com/get/symfony-alpha.tgz">http://www.symfony-project.com/get/symfony-alpha.tgz</a></p>

<p>PHPIDEのプロジェクト先に解凍。プロジェクトのルートディレクトリに、libフォルダとdataフォルダが来るようにします。</p>

<p>Run=>External Tools=>External Tools...の、Programを右クリックし、Newを選択し、以下のように設定。</p>

<p><a href="http://www.php-log.net/archives/PHP520.png"><img alt="PHP520.png" src="http://www.php-log.net/archives/PHP520-thumb.png" width="400" height="314" /></a></p>

<p><a href="http://www.php-log.net/archives/PHP521.png"><img alt="PHP521.png" src="http://www.php-log.net/archives/PHP521-thumb.png" width="400" height="314" /></a></p>

<p>設定したら、Runしてプロジェクトを作成。</p>

<p>次に、appを作成。</p>

<p><a href="http://www.php-log.net/archives/PHP5201.png"><img alt="PHP5201.png" src="http://www.php-log.net/archives/PHP5201-thumb.png" width="400" height="293" /></a></p>

<p>せっかくなんで、他の場所でも使えるように、project/config.phpを以下のように修正。</p>

<pre>
// symfony directories
$sf_symfony_lib_dir  = realpath(dirname(__FILE__)."/../../lib");
$sf_symfony_data_dir = realpath(dirname(__FILE__)."/../../data");
</pre>

<p>なぜかデバッグモードOFFだとLog系クラスがダブってしまうので、<br />
/data/config/core_compile.ymlの以下3行をコメントアウト。(バグかな？)</p>

<pre>
#- %SF_SYMFONY_LIB_DIR%/log/sfLog.class.php
#- %SF_SYMFONY_LIB_DIR%/log/sfLogger.class.php
#- %SF_SYMFONY_LIB_DIR%/log/sfLogger/no.class.php
</pre>

<p>以上で準備完了です。</p>]]>
    </content>
  </entry>
  <entry>
    <title>約１年ぶりの更新に、Propelネタ</title>
    <link rel="alternate" type="text/html" href="http://www.php-log.net/archives/000030.html" />
    <modified>2006-07-04T20:13:46Z</modified>
    <issued>2006-07-04T17:50:54+00:00</issued>
    <id>tag:www.php-log.net,2006://3.30</id>
    <created>2006-07-04T17:50:54Z</created>
    <summary type="text/plain">ここ一年、更新サボってる間にPHPのフレームワーク事情も随分変わっちゃいましたね...</summary>
    <author>
      <name>Imlktak</name>
      
      
    </author>
    <dc:subject>Symfony</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.php-log.net/">
      <![CDATA[<p>ここ一年、更新サボってる間にPHPのフレームワーク事情も随分変わっちゃいましたね。</p>

<p>ここ最近注目を集めてるsymfonyがPropelを採用してるので、Propel、もしくはCriteriaの使い方でも書いていこうかと思います。</p>

<p>今回は単体select中心で。</p>]]>
      <![CDATA[<h3>簡単なselect文</h3>
<pre>
select id, name, created_at from mydata;
</pre>

<p>こんな感じ</p>
<pre>
$results=MydataPeer::doSelect(new Criteria);
</pre>

<p>得るときはこんなふう</p>
<pre>
foreach($results as $result){
	echo $result->getId();
	echo $result->getName();
	echo $result->getCreatedAt();
}
</pre>

<p>配列でとることも。</p>
<pre>
foreach($results as $result){
	foreach($result->toArray() as $key=> $f){
		echo $f;
	}
	//Id=>1, Name=>'名前'  ,CreatedAt=>'2006-7-5'
}
</pre>

<h3>簡単な条件指定。idがプライマリキーだった場合</h3>
<pre>
select id, name, created_at from mydata where id=1;
</pre>

<p>これはまわりくどい探し方</p>
<pre>
$data=new Mydata;
$data->setId(1);
$result=MydataPeer::doSelectOne($data->buildPkeyCriteria());
</pre>

<p>普通はこっち</p>
<pre>
$result=MydataPeer::retrieveByPK(1);
</pre>

<p>オブジェクトからpeerを呼び出したりも。</p>
<pre>
$data=new Mydata;
$peer=$data->getPeer();
$result=$peer->retrieveByPK(1);
</pre>

<h3>orとかあいまい検索とか</h3>
<pre>
select id, name, created_at from mydata 
 where name like 'タナカ%' or name like 'ナカタ%';
</pre>

<pre>
$c=new Criteria;
$c->add(MydataPeer::NAME,'タナカ%',Criteria::LIKE);
$c->addOr(MydataPeer::NAME,'ナカタ%',Criteria::LIKE);
$result=MydataPeer::doSelect($c);
</pre>

<h3>group by</h3>
<pre>
SELECT COUNT(mydata.ID) FROM mydata 
GROUP BY mydata.CREATED_AT
</pre>

<p>どうもdoCountじゃ複数行とれないみたいなので</p>
<pre>
$c=new Criteria;
$c->addGroupByColumn(MydataPeer::CREATED_AT);
$c->addSelectColumn(MydataPeer::COUNT);
 $num=BasePeer::doSelect($c);
foreach($num as $val){
	print $val[0];
}
</pre>

<p><br />
<p>次回は結合とか。リクエストとかあったらコメントにどうぞ〜</p><br />
</p>]]>
    </content>
  </entry>
  <entry>
    <title>xampp+phing+windowsでのバグ</title>
    <link rel="alternate" type="text/html" href="http://www.php-log.net/archives/000029.html" />
    <modified>2005-08-27T20:40:37Z</modified>
    <issued>2005-08-27T20:13:11+00:00</issued>
    <id>tag:www.php-log.net,2005://3.29</id>
    <created>2005-08-27T20:13:11Z</created>
    <summary type="text/plain">この組み合わせでphingを実行しても、 BUILD FAILED Can&apos;t ...</summary>
    <author>
      <name>Imlktak</name>
      
      
    </author>
    <dc:subject>PHP5</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.php-log.net/">
      <![CDATA[<p>この組み合わせでphingを実行しても、</p>
<pre>
BUILD FAILED
Can't load default task list
Total time: 0.0024 seconds
</pre>
<p>なんてことになった経験ありませんか？</p>
<p>ほかにも</p>
<pre>phing -v</pre>
<p>とやると、</p>
<pre>Argument1 to function must not be null</pre>
<p>となってしまったり…。実はこれにはwindowsならではの罠があったんです</p>]]>
      <![CDATA[<p>この現象は、pear/dataディレクトリが正しく読み込むことができないために起きていた現象です。</p>
<p>該当ソースは、pear/phing/Phing.php内の、757行目あたり</p>
<pre>
        $data_dir = "D:\xampp\xampp\php\pear\data";
</pre>
<p>ここで、ダブルクォーテーションを使ってるくせに、中でエスケープをつかっちゃってるので、パスが正しく読み込めなくなってるんです。本来はシングルクォーテーションで囲むか、エスケープ文字をエスケープしなければなりません。</p>
<pre>
        $data_dir = 'D:\xampp\xampp\php\pear\data';
        //もしくは
        $data_dir = "D:\\xampp\\xampp\\php\\pear\\data";
</pre>
<p>まぁ、いちいちソース直すのは当然面倒なんで、php.iniのinclude_pathに
pearのパス/dataを追加してやればいいだけなんですけどね</p>

]]>
    </content>
  </entry>
  <entry>
    <title>Eclipse3.1ベースのPHPEclipse1.1.6</title>
    <link rel="alternate" type="text/html" href="http://www.php-log.net/archives/000027.html" />
    <modified>2005-07-29T17:46:19Z</modified>
    <issued>2005-07-29T17:44:34+00:00</issued>
    <id>tag:www.php-log.net,2005://3.27</id>
    <created>2005-07-29T17:44:34Z</created>
    <summary type="text/plain">unofficialですが、1.1.6が出ました。 大きな変化は特になさそうです...</summary>
    <author>
      <name>Imlktak</name>
      
      
    </author>
    
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.php-log.net/">
      <![CDATA[<p>unofficialですが、1.1.6が出ました。<br />
大きな変化は特になさそうですね。</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>Mojavi3でActionChainの代替手段があったんですね</title>
    <link rel="alternate" type="text/html" href="http://www.php-log.net/archives/000026.html" />
    <modified>2005-07-28T18:14:53Z</modified>
    <issued>2005-07-28T00:00:00+00:00</issued>
    <id>tag:www.php-log.net,2005://3.26</id>
    <created>2005-07-28T00:00:00Z</created>
    <summary type="text/plain"> なんかレンダーモードをいじくってforwardする、actionchainもど...</summary>
    <author>
      <name>Imlktak</name>
      
      
    </author>
    
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.php-log.net/">
      <![CDATA[<p>
なんかレンダーモードをいじくってforwardする、actionchainもどきがありました。
</p>]]>
      <![CDATA[<p>
executeとかの部分で以下のようなコードを…
</p>
<pre>
$context = $this->getContext();
$controller = $context->getController();
//現在のレンダーモードを取得
$renderMode = $controller->getRenderMode();

//レンダーモードを上書き （多分画面出力をオフにしてる）
$controller->setRenderMode(View::RENDER_VAR);

//for all actions ::

// フォワードする
$controller->forward($action['module'], $action['action']);


// レンダーモードを元に戻す
$controller->setRenderMode($renderMode); 
</pre>
<p>
こんな感じです
</p>]]>
    </content>
  </entry>
  <entry>
    <title>ArgoUMLのphpモジュールで、文字コードを指定</title>
    <link rel="alternate" type="text/html" href="http://www.php-log.net/archives/000025.html" />
    <modified>2005-06-23T18:11:35Z</modified>
    <issued>2005-06-23T00:00:00+00:00</issued>
    <id>tag:www.php-log.net,2005://3.25</id>
    <created>2005-06-23T00:00:00Z</created>
    <summary type="text/plain"> Javaのスキルが全くないんで、勉強がてらArgoumlのPHPモジュールをい...</summary>
    <author>
      <name>Imlktak</name>
      
      
    </author>
    <dc:subject>PHP5</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.php-log.net/">
      <![CDATA[<p>
Javaのスキルが全くないんで、勉強がてらArgoumlのPHPモジュールをいじってやりました。
だいぶモジュールの作り方の流れが読めてきました。
</p>
<p>
今回の修正は、Edit→SettingsのところにPHPタブを追加し、ファイル名の形式と、ソースの出力時のエンコード形式の指定をできるようにしてやりました。
</p>
<p>
モジュールの言語設定の仕方がまだイマイチつかめないので、ラベルはおかしいままですが…
</p>]]>
      <![CDATA[<p>{class}にクラス名、{type}にinterfaceやclassがくっつきます。</p>
<p>
<a href="http://www.php-log.net/archives/Setting.bmp"><img alt="Setting.bmp" src="http://www.php-log.net/archives/Setting-thumb.bmp" width="200" height="101" border="0" /></a>
</p>

<p><a href="http://www.php-log.net/archives/argo_php.jar">Download ArgoUML PHP Module</a>
</p>]]>
    </content>
  </entry>
  <entry>
    <title>mojavi.org復活</title>
    <link rel="alternate" type="text/html" href="http://www.php-log.net/archives/000024.html" />
    <modified>2005-06-20T17:54:45Z</modified>
    <issued>2005-06-20T00:00:00+00:00</issued>
    <id>tag:www.php-log.net,2005://3.24</id>
    <created>2005-06-20T00:00:00Z</created>
    <summary type="text/plain">しばらくアクセスができなかったmojavi.orgが復活。 フォーラムアクセスで...</summary>
    <author>
      <name>Imlktak</name>
      
      
    </author>
    <dc:subject>フレームワーク</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.php-log.net/">
      <![CDATA[<p>しばらくアクセスができなかったmojavi.orgが復活。<br />
フォーラムアクセスできなくて結構困ってたんで、ほんと助かった。</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>PHPEclipse1.1.4</title>
    <link rel="alternate" type="text/html" href="http://www.php-log.net/archives/000022.html" />
    <modified>2005-05-30T09:26:24Z</modified>
    <issued>2005-05-30T00:00:00+00:00</issued>
    <id>tag:www.php-log.net,2005://3.22</id>
    <created>2005-05-30T00:00:00Z</created>
    <summary type="text/plain">出たみたいだけど、 http://pipestonegroup.com/ecli...</summary>
    <author>
      <name>Imlktak</name>
      
      
    </author>
    <dc:subject>開発環境</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.php-log.net/">
      <![CDATA[<p>出たみたいだけど、<br />
http://pipestonegroup.com/eclipse/updates<br />
↑eclipseでソフトウェア更新してもつながらない…<br />
</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>propelで既に存在するDBからschema.xmlを作成</title>
    <link rel="alternate" type="text/html" href="http://www.php-log.net/archives/000021.html" />
    <modified>2005-05-06T07:28:55Z</modified>
    <issued>2005-05-04T00:00:00+00:00</issued>
    <id>tag:www.php-log.net,2005://3.21</id>
    <created>2005-05-04T00:00:00Z</created>
    <summary type="text/plain">schema.xmlの作成方法と、オブジェクトの書き出し方法のメモ。...</summary>
    <author>
      <name>Imlktak</name>
      
      
    </author>
    <dc:subject>開発環境</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.php-log.net/">
      <![CDATA[<p>schema.xmlの作成方法と、オブジェクトの書き出し方法のメモ。</p>]]>
      <![CDATA[<p><a href="http://www.php-log.net/archives/000017.html">以前の記事</a>にある状態では、<span style="font-weight: bold;">build.properties</span>がprojectsディレクトリにあるものを読み込んでくれないので、build.xmlの以下の場所を修正する。</p>

<pre> &lt;property file="./build.properties"/&gt;</pre>

<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ↓</p>

<pre> &lt;property file="./projects/${project}/build.properties"/&gt;</pre>

<p>./projectsディレクトリ内に、新しく作成したいプロジェクトのディレクトリを作成する（ここではtestとする）</p>

<p>./projects/test/内に、以下の内容のbuild.propertiesファイルを作成する。</p>

<pre>
propel.project =test
propel.database = test
propel.database.url = mysql://root@localhost/test
propel.targetPackage = test
propel.database.driver = creole.drivers.mysql.MySQLConnection
propel.schema.dir = ./projects/test
propel.database.encoding = utf-8
</pre>

<p>次のコマンドを実行。</p>
<pre>phing -Dproject=test -f build-propel.xml creole</pre>
<p>プロジェクトをビルドすると、test-schema.xmlが出来る。</p>

<p>次に、プロジェクトファイルにruntime.conf.xmlを作成し、以下のように設定。</p>

<pre>&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;<br>&lt;!-- This new XML configuration format is the default format for properties <br>	files. You can also used the old INI-based .properties format, but <br>	support for this will be removed in next major Propel version. --&gt;<br>	<br>&lt;config&gt;<br>	&lt;!--<br>	#<br>	# L O G G I N G<br>	#<br>	# We use PEAR-compatible Log for all Propel logging and we embed the <br>	# log conf properties within our application configuration.<br>	#<br>	# type - the type of log (default 'file')<br>	# name - the name of log or path to file. (default './propel.log')<br>	# ident - the text used to identify the log messages<br>	# level - the log level<br>	# PEAR_LOG_EMERG 0<br>	# PEAR_LOG_ALERT 1<br>	# PEAR_LOG_CRIT 2<br>	# PEAR_LOG_ERR 3<br>	# PEAR_LOG_WARNING 4<br>	# PEAR_LOG_NOTICE 5<br>	# PEAR_LOG_INFO 6<br>	# PEAR_LOG_DEBUG 7 &lt;== DEFAULT<br>	--&gt;<br>	&lt;log&gt;<br>	&lt;ident&gt;propel-treetest&lt;/ident&gt;<br>	&lt;level&gt;7&lt;/level&gt;<br>	&lt;/log&gt;<br>	&lt;!--<br>	#<br>	# P R O P E L P R O P E R T I E S<br>	#<br>	# Note that you can configure multiple datasources; for example if your<br>	# project uses several databases.<br>	--&gt;<br>	&lt;propel&gt;<br>	&lt;datasources default="test"&gt; <br>	&lt;datasource id="test"&gt;<br>	&lt;!-- the Propel adapter (usually same as phptype of connection DSN) --&gt;<br>	&lt;adapter&gt;mysql&lt;/adapter&gt; <br>	&lt;!-- Connection DSN. See PEAR DSN format for other supported parameters. --&gt;<br>	&lt;connection&gt;<br>	&lt;phptype&gt;mysql&lt;/phptype&gt;<br>	&lt;hostspec&gt;localhost&lt;/hostspec&gt;<br>	&lt;database&gt;test&lt;/database&gt;<br>	&lt;username&gt;root&lt;/username&gt;<br>	&lt;password&gt;&lt;/password&gt;<br>	&lt;/connection&gt; <br>	&lt;/datasource&gt; <br>	&lt;/datasources&gt; <br>	&lt;/propel&gt;<br>&lt;/config&gt;</pre>

<p>次のコマンドを実行</p>

<pre>-Dproject=test -f build-propel.xml</pre>
]]>
    </content>
  </entry>
  <entry>
    <title>Argoumlのphpモジュールでmojavi3のクラスを書き出す</title>
    <link rel="alternate" type="text/html" href="http://www.php-log.net/archives/000018.html" />
    <modified>2005-05-24T16:28:46Z</modified>
    <issued>2005-04-18T00:00:00+00:00</issued>
    <id>tag:www.php-log.net,2005://3.18</id>
    <created>2005-04-18T00:00:00Z</created>
    <summary type="text/plain">デフォルトでついてるやつだと、class.クラス名.phpってなっちゃうんで、そ...</summary>
    <author>
      <name>Imlktak</name>
      
      
    </author>
    <dc:subject>開発環境</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.php-log.net/">
      <![CDATA[<p>デフォルトでついてるやつだと、class.クラス名.phpってなっちゃうんで、その部分を修正してコンパイルしなおしました。クラス名.class.phpで書き出されるようにしておきました。</p>

<p><a href="http://www.php-log.net/files/argo_php.jar">mojavi対応argouml phpモジュール</a></p>]]>
      
    </content>
  </entry>
  <entry>
    <title>eclipseでargoumlのコンパイルをするときの注意</title>
    <link rel="alternate" type="text/html" href="http://www.php-log.net/archives/000019.html" />
    <modified>2005-04-19T19:27:31Z</modified>
    <issued>2005-04-17T00:00:00+00:00</issued>
    <id>tag:www.php-log.net,2005://3.19</id>
    <created>2005-04-17T00:00:00Z</created>
    <summary type="text/plain">ソースのコンパイルはCVSから行う。 build.xmlのjavacタグのところ...</summary>
    <author>
      <name>Imlktak</name>
      
      
    </author>
    <dc:subject>開発環境</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.php-log.net/">
      <![CDATA[<p>ソースのコンパイルはCVSから行う。<br />
build.xmlの<b>javac</b>タグのところは、<b>javac fork="true"</b>に書き換える。書き換えないとエラーが出てコンパイルできない。</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>modGen+PHPEclipseでMojavi3のモジュールを簡単に作成</title>
    <link rel="alternate" type="text/html" href="http://www.php-log.net/archives/000016.html" />
    <modified>2005-05-24T16:29:12Z</modified>
    <issued>2005-04-13T00:00:00+00:00</issued>
    <id>tag:www.php-log.net,2005://3.16</id>
    <created>2005-04-13T00:00:00Z</created>
    <summary type="text/plain">modGenはphingを使ったMojavi3用モジュールジェネレータ。PHPE...</summary>
    <author>
      <name>Imlktak</name>
      
      
    </author>
    <dc:subject>開発環境</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.php-log.net/">
      <![CDATA[<p><span style="font-weight: bold;">modGen</span>はphingを使ったMojavi3用モジュールジェネレータ。PHPEclipseから効率的にMojaviモジュールが作れるような環境をつくる。動作にはphp5、pear、phingが必要。</p>]]>
      <![CDATA[<p><a href="http://www.isolated-designs.net/core/article/41/modgen-v-02-released">modGen配布サイト</a>からmodGenをダウンロード。適当なフォルダに解凍する。</p>
<p>modGenを解凍した場所を、PHPEClipseのプロジェクトに追加する。</p>
<p>build.xml、module.xmlと同じ階層に、以下のコードを作ってmodGen.phpで保存。</p>
<pre>&lt;?<br />unset($_SERVER['argv'][0]);<br />system("phing ".join($_SERVER['argv']," "));<br />exit;<br />?&gt;<br /></pre>
<p>Run→外部ツール→外部ツール→PHP Proguram→右クリック→新規</p>
<p>MainタブのLocationでBrowse File Systemをクリックして、php本体の場所をセット。C:\php\php.exe等</p>
<p>Working DirectoryのBrowse WorkSpaceで、modGenのプロジェクトディレクトリを選択。</p>
<p>Argumentsを以下のような感じで入力。</p>
<pre>modGen.php -Dproject=モジュール名 [その他オプション...]</pre>
<p>実行すると、こんな感じ。projectsフォルダ内にモジュールの下地がつくられているので、使用するプロジェクトに生成されたモジュールを移動させてやる。</p>
<p>
<a href="http://www.php-log.net/archives/screenshots/modGen02.html" onclick="window.open('http://www.php-log.net/archives/screenshots/modGen02.html','popup','width=1152,height=788,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://www.php-log.net/archives/screenshots/modGen02-thumb.png" width="500" height="342" border="0" /></a>
</p>
<p>あとは必要に応じてmodule.xmlやmodule.xslを自分のモジュール用に編集して、その都度実行すればOK。</p>]]>
    </content>
  </entry>
  <entry>
    <title>PropelでDAO</title>
    <link rel="alternate" type="text/html" href="http://www.php-log.net/archives/000017.html" />
    <modified>2005-04-13T18:13:48Z</modified>
    <issued>2005-04-13T00:00:00+00:00</issued>
    <id>tag:www.php-log.net,2005://3.17</id>
    <created>2005-04-13T00:00:00Z</created>
    <summary type="text/plain">mojaviの公式フォーラムとか見てても何かと使ってる人が多いPropel。mo...</summary>
    <author>
      <name>Imlktak</name>
      
      
    </author>
    <dc:subject>開発環境</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.php-log.net/">
      <![CDATA[<p>mojaviの公式フォーラムとか見てても何かと使ってる人が多いPropel。modGenの時のように、PHPEclipseで使うメモ。</p>
]]>
      <![CDATA[<p>動作に必要なものは以下の通り。</p>

<ul>

<li>php5</li>
<li>pear</li>
<li>phing</li>
<li>creole</li>
<li>jarpon</li>
<li>propel</li>
<li>pear::Log</li>
</ul>

<p>php5、pear、phingまでセットアップされているものとして、次のコマンドを実行。</p>

<pre>pear install http://creole.phpdb.org/pear/creole-current.tgz<br /><br />pear install http://creole.phpdb.org/pear/jargon-current.tgz<br /><br />pear install http://propel.phpdb.org/pear/propel_generator-current.tgz<br /><br />pear install http://propel.phpdb.org/pear/propel_runtime-current.tgz<br /><br />pear install Log<br /><br /></pre>

<p><a href="http://propel.phpdb.org/pear/propel_generator-current.tgz">propel_generator-current.tgz</a>を取得して、適当な場所に解凍。</p>

<p>propel_generatorの解凍先をPHPEclipseのプロジェクトに追加。</p>

<p>build-propel.xmlと同じ階層に、以下のコードを作ってpropel.phpで保存。</p>

<pre>&lt;?<br />unset($_SERVER['argv'][0]);<br />system("phing ".join($_SERVER['argv']," "));<br />exit;<br />?&gt;<br /></pre>

<p>Run→外部ツール→外部ツール→PHP Proguram→右クリック→新規</p>

<p>MainタブのLocationでBrowse File Systemをクリックして、php本体の場所をセット。C:\php\php.exe等</p>

<p>Working DirectoryのBrowse WorkSpaceで、propel_generatorのプロジェクトディレクトリを選択。</p>

<p>Argumentsで試しにサンプルのbookstoreプロジェクトを実行させるように記述。</p>

<pre>propel.php -Dproject=bookstore -f build-propel.xml</pre>

<p>実行すると、こんな感じ。</p>

<p><a href="http://www.php-log.net/archives/screenshots/propel.html" onclick="window.open('http://www.php-log.net/archives/screenshots/propel.html','popup','width=1152,height=794,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://www.php-log.net/archives/screenshots/propel-thumb.png" border="0" height="344" width="500" /></a></p>

<p>projects/bookstore/build/以下に色々できてる。</p>

<p>projects/bookstore/build/sql/schema.sqlを<a href="http://sourceforge.net/projects/sqlitewebadmin/">sqliteWebAdmin</a>などの管理ツールか何かから実行して、bookstore.db内にテーブルを作る。</p>

<p>下のコードをbookstore.phpで保存。</p>

<pre>&lt;?php<br /><br />// Initialize Propel using path to the converted<br />// property file that was created with the convert-props phing target<br />require_once 'propel/Propel.php';<br />Propel::init('/var/www/bookstore_app/conf/bookstore-conf.php');<br /><br />// these are in the build/classes subdir of your project, so <br />// that needs to be on your include_path<br />include_once 'bookstore/Author.php';<br />include_once 'bookstore/Publisher.php';<br />include_once 'bookstore/Book.php';<br /><br />$author = new Author();<br />$author-&gt;setFirstName("Leo");<br />$author-&gt;setLastName("Tolstoy");<br /><br />$pub = new Publisher();<br />$pub-&gt;setName("Viking Press");<br /><br />$book = new Book();<br />$book-&gt;setTitle("War &amp; Peace");<br />$book-&gt;setIsbn("0140444173");<br />$book-&gt;setPublisher($pub);<br />$book-&gt;setAuthor($author);<br /><br />// save (insert, in this case) the new object<br />$book-&gt;save(); <br /><br />// $book-&gt;save() will automatically trigger $author-&gt;save()<br />// and $publisher-&gt;save() since those objects don't yet exist in the db.<br /><br />// -------------------------------------<br /><br />// Now FIND that book!<br /><br />// "peer" class is static class that handles things like queries<br />$c = new Criteria();<br />$c-&gt;add(BookPeer::TITLE, "War%", Criteria::LIKE);<br />$c-&gt;setLimit(10); // just in case we keep running this script :)<br /><br />$books = BookPeer::doSelect($c);<br /><br />if ($books) {<br /> print "&lt;p&gt;&lt;strong&gt;Found books!&lt;/strong&gt;&lt;/p&gt;";<br /><br /><br /> foreach($books as $book) {<br /> print "&lt;br/&gt;" . $book-&gt;getTitle() . ", by " . <br /> $book-&gt;getAuthor()-&gt;getFirstName();<br /> }<br />} else {<br /> print "&lt;p&gt;&lt;strong&gt;Did NOT find books!&lt;/strong&gt;&lt;/p&gt;";<br />} <br />?&gt;<br /></pre>

<p>以下のファイル構成で実行</p>

<ul>

<li>/bookstore.php (さっきのやつ)</li>
<li>/bookstore/* (propelで作られた、projects/bookstore/build/classes/内にあるフォルダ＆ファイル)</li>
<li>/test/booksore.db <br />
</li>
</ul>

<p>以上。INSERTとSELECTが実行されてます。詳しい使い方はまた今度。</p>
]]>
    </content>
  </entry>

</feed>
