2007/9/30 日曜日

Zend Frameworkで多対多のテーブルを簡単に扱うの追記。

Filed under: Zend Framework — ne-zu @ 13:00:06 このエントリをはてなブックマークに追加

Zend Frameworkで多対多のテーブルを簡単に扱うの記事中で使用しているマッチテーブルの取得方法ですが

PHP:
  1. $products = new Products();
  2. $bug_list = $products->find(10)->current()
  3. ->findManyToManyRowset('Bugs', 'BugsReports');

この指定だと、上手く拾ってくれないことがあるようです。
#/library以下にZend Frameworkのコーディング規約に則ったclass名をつけていないと駄目?

その場合は、インスタンスを直接渡せばOKです。上記の例でいえば、

PHP:
  1. $products = new Products();
  2. $bugs = new Bugs();
  3. $bugs_reports = new BugsReports();
  4. $bug_list = $products->find(10)->current()
  5. ->findManyToManyRowset($bugs, $bugs_reports);

とか、

PHP:
  1. $products = new Products();
  2. $bug_list = $products->find(10)->current()
  3. ->findManyToManyRowset(new Bugs(), new BugsReports());

とかですね。無事に取得できましたでしょうか。

2007/9/28 金曜日

xdebug追加をphp.iniに記述するとき、zend_extension=か zend_extension_ts=なのかを見極めるには。

Filed under: Xdebug — ne-zu @ 20:00:42 このエントリをはてなブックマークに追加

表題の、Xdebug追加時のモジュール指定、LinuxだったりWindowsだったりでも違ったりするので入れる度に迷ってしまっていた昨日にFarewell!(さらば!)です。
Eclipse用xdebug pluginについてくるマニュアルPDFに詳しく書かれていました。

If you don’t get this and you are sure the path is correct then you need to make
sure you have the correct entry for zend_extension in your PHP.INI file. When
you do PHP –i or run a script with phpinfo() in it you need to look for 2 entries
Debug Build => no
Thread Safety => enabled

phpinfo()などで、以下の2行を確認すべし。
Debug Build => no
Thread Safety => enabled

The above output shows a non debug build that has thread safety so you should
use “zend_extension_ts”.

Debug Build がnoで、Thread Safetyが有効の場合は、

zend_extension_ts

If thread safety was “disabled” then you should have the php.ini entry of
zend_extension=

thread safetyが無効の場合は、

zend_extension

if it was a debug build you need to have the entry
zend_extension_debug=

Debug buildが有効なら、

zend_extension_debug

If you are running a thread safe debug version of PHP, then your ini entry must
be of the form
zend_extension_debug_ts=

thread sageもdebugも有効なら

zend_extension_debug_ts

を使いなさい。

In summary the rule is (in the stated order)
1. start with “zend_extension”
2. if you have a debug build: Debug Build => yes , add “_debug”
3. if you have thread safety: Thread Safety => enabled , add “_ts”

まとめると、
1.zend_extensionに
2.もしデバッグビルドが有効なら、_debugを付けて、
3.もし、スレッドセーフが有効なら、_tsを付ける。

ということらしいです。
モジュールファイルを指定する時は、パスを通すか、絶対パスで書くのを忘れないようにしてくださいね。

2007/9/27 木曜日

SQLite用のAdminツール、SQLiteManager

Filed under: sqlite — ne-zu @ 0:28:36 このエントリをはてなブックマークに追加

MySQLを使うとき、ブラウザからphpMyAdminで操作すると楽ちんですので、SQLiteを使うときも同様にAdminツールを使いたくなる私です。
SQLiteManagerが、日本語にも対応しているので使いやすいと思います。

UTF-8で使う場合は、日本語設定ファイルである lang/japanese.inc.php を開いて、10行目あたりにある$charsetをutf-8に、$langSuffixをja-utf-8に変更します。
そしてjapanese.inc.phpの文字コードをUTF-8に変換して保存します。

Windows版で使う場合、テーブルが読めないバグのがあります。include フォルダ内の add_database.php の17行目あたり

PHP:
  1. if(isset($_POST['dbpath'])) $dbFilename = stripslashes($_POST['dbpath']);

を以下に変更します。

PHP:
  1. if(isset($_POST['dbpath'])) $dbFilename = str_replace("\\", '/',
  2.  $_POST['dbpath']);

無事にAdminにれましたでしょうか。

参考ページ
http://project-p.jp/halt/anubis/blog_show/525

2007/9/26 水曜日

create_functionで匿名関数の作成。

Filed under: 基本 — ne-zu @ 1:55:41 このエントリをはてなブックマークに追加

PHPマニュアルに載っているだけで、かなり充実しています。
array_warkなどでよく使います。

PHP:
  1. <?php
  2. array_walk($a, create_function('&$v,$k', '$v = "+" . $v;'));
  3. print_r($a);
  4. ?>

ただ要素の前に+を付けているだけですが。
匿名関数の使い方の例ということで。

2007/9/25 火曜日

Zend Frameworkでリクエストを取得する方法。

Filed under: Zend Framework — ne-zu @ 20:05:17 このエントリをはてなブックマークに追加

このブログでも今まで、Zend FrameworkでRequestを取得する時に

PHP:
  1. $id = $this->getRequest->getParam('id');

とか

PHP:
  1. $data = $this->getRequest->getParams();

とかアクションコントローラ内でしていたのですが、もっと簡潔に

PHP:
  1. $id = $this->_getParam('id');

でいいんですね。
全体を取得する場合は、

PHP:
  1. $id = $this->_getAllParams(');

で。冗長でしたね。

2007/9/24 月曜日

Smartyで数値を3桁毎にカンマで区切るには。

Filed under: Smarty — ne-zu @ 16:06:22 このエントリをはてなブックマークに追加

Smartyで通貨などの数値を出力する時に、

1,234,567

などとカンマをつけて出力したい時に一番簡単な方法は、PHPのnumber_format関数を使うことです。
SmartyはPHPの関数をそのまま修飾子に使えますので、

SMARTY:
  1. {$num|number_format}

これでOKです!

2007/9/23 日曜日

ArrayObjectの引数にArrayIeratorを渡せる。

Filed under: その他 — ne-zu @ 2:10:39 このエントリをはてなブックマークに追加

ArrayObjectを色々と掘り下げられている記事ですが、

PHP:
  1. <?php
  2. class OddArrayIterator extends ArrayIterator{
  3.  public function next(){
  4.   if( parent::valid() ){
  5.    parent::next();
  6.   }
  7.   if( parent::valid() == false ){
  8.    return;
  9.   }
  10.   return parent::next();
  11.  }
  12. }
  13. $array = array( "a", "b", "c" );
  14. $array = new ArrayObject( $array , 0 , "OddArrayIterator" );
  15. foreach( $array as $value ){
  16.  print( $value );
  17. }
  18. ?>

$array = new ArrayObject( $array , 0 , "OddArrayIterator" );

こういうコトが出来るのを知らなかったです。
SPLのリファレンスにもちゃんと載ってますね。
勉強になります。

2007/9/20 木曜日

PDT1.0がリリースされたようです。

Filed under: ツール — ne-zu @ 23:57:53 このエントリをはてなブックマークに追加

Eclipse、PHP用の開発環境「PDT 1.0」をリリースということで、1.0 Release バージョンがリリースされています。

http://download.eclipse.org/tools/pdt/downloads/

今まで別バージョンを使っていた方は、今回からEclipse3.3が必要になりましたので、とりあえず別ディレクトリにインストールして試してみてはどうでしょうか。

2007/9/19 水曜日

PHPで「文字識別」ではないCAPTCHAと、感動したCAPTCHAの話

Filed under: ツール — ne-zu @ 23:41:26 このエントリをはてなブックマークに追加

アシアルの中の人が文字識別でないCATPTCHAの中で紹介していたPEAR::Text_CAPTCHA_Numeralという計算結果を入力させるCAPTCHAライブラリが面白いです。
CAPTCHAは入力するほうとしてはあまり楽しいものではありませんので、こういった遊び心を感じさせるシステムは良いと思います。

CAPTHCAといえば思い出すのはreCAPTCHA - キャプチャを利用した人力高性能OCRですね。
・紙からOCRで読み込む時に認識に失敗した、機械が読み取りにくい文字をCAPTCHAとして出力、
・そもそも認識しづらい文字なのだからCAPTCHAとして優秀
・人間に正解を入力させてCAPTCHA認証
・そのデータを元に、紙のスキャンデータにフィードバック
というシステムなのです。これを知った時は感動しました。まさに三方一両損、今風に言うならWin-Win。世の中には本当に面白いことを考える人間がいますね。

2007/9/18 火曜日

ページの有効期限切れ問題

Filed under: セッション — ne-zu @ 23:28:55 このエントリをはてなブックマークに追加

「ページの有効期限切れ」問題で、ページの有効期限切れ警告を表示せず、かつ戻るボタンを押してもフォームの中身が消えない設定を解決されています。
ブラウザによって挙動が違うのは本当に困りますね。

次のページ »

Powered by PHP-SeeD and WordPress ME