PHP関数とsymfonyでためになったこと
こんばんは。
ブログのネタが切れ気味の笹亀です。
人は、普段から意識していないとなかなか思い出したりすることや、使用することって難しいですよね。少なからず私は難しいとおもってます。
プログラムでも同じことが言えると思います。
PHPの関数やsymfonyの機能を思い出そうとしても「あの機能ってどうやるんだっけ?」とか思い出すことがなかなかできないことがあります。
そういうことに出会って時に自分が心がけていることがメモを残したり、ブログなどに書いて忘れないようにすることが必要です。
ということで、今回はわたしがPHPやsymfony機能を教えてもらってり、調べてみたときに「そんなこともできるんだ〜」とか「忘れてたよ」とか「便利だなぁ」思ったことをいくつかまとめてみました。
※ご存知の方はごめんなさい;;
まずはPHPの関数で便利な使い方ができるものを紹介します。
・「print_r」関数の第2引数にtrueを与えると出力した内容を文字列で取得できる。
サンプル
実行結果

私がよく使用する箇所としては、エラー処理や例外処理のときに変数の中身のデバックしたいときなど、エラーメールとして本文に貼付けるときなどに使用しています。
※PHP 4.3.0以降のバージョンでしか使用できませんのでご注意ください。
・「scandir」関数
PHP5から追加された関数で、指定したフォルダ内のファイルをリストで取得する関数です。
私は、この関数の存在に気づかずにいつも下記のように面倒な方法で取得していました。
次にsymfony編です。
・「sfLoader::loadHelpers」でアクション内でもヘルパーを使用する方法
ヘルパーでは定義しているけど、アクション内でも同じ処理を行いたいと思って、
そんな便利なものがないかと聞いてみたときに教えてもらいました^^
注意点として上位のヘルパーに互換性がある場合は、ちゃんとそのヘルパーも呼び出さないとエラーになります。
最後にsymfony Doctrine編です。
・DQL(DoctrineQueryLangage)を実行することで生成されたCollectionデータの配列のキーを特定のフィールドで指定する方法
下記のサンプルのように記述して取得できます。
例)ランキングのデータ(UserRankking)をランクフィールド(rank_number)をキーとしてCollection配列を取得する
3-1の1位〜100位までを取得
上記のように特定のフィールドの値をキーにしてCollectionデータの連想配列として$ranks[1],$ranks[2],$ranks[3],$ranks[4]...のようにCollectionデータを取得できます。
しかし、指定したフィールドの値(連想配列のキー)がユニークでない場合は上書きされてしまうので、使用する場合には注意が必要です。
※setAttributeでセットしない場合は、0からのキーで開始されます。
皆さんもこういったTipsや為になったことなどはないでしょうか?
そんなときには是非、私にも教えていただき、情報共有ができたらとてもうれしいです^^
最後になりましたが、本日書かせていただいたことが皆さんの少しでもお役にたてれば幸いです。
ブログのネタが切れ気味の笹亀です。
人は、普段から意識していないとなかなか思い出したりすることや、使用することって難しいですよね。少なからず私は難しいとおもってます。
プログラムでも同じことが言えると思います。
PHPの関数やsymfonyの機能を思い出そうとしても「あの機能ってどうやるんだっけ?」とか思い出すことがなかなかできないことがあります。
そういうことに出会って時に自分が心がけていることがメモを残したり、ブログなどに書いて忘れないようにすることが必要です。
ということで、今回はわたしがPHPやsymfony機能を教えてもらってり、調べてみたときに「そんなこともできるんだ〜」とか「忘れてたよ」とか「便利だなぁ」思ったことをいくつかまとめてみました。
※ご存知の方はごめんなさい;;
まずはPHPの関数で便利な使い方ができるものを紹介します。
・「print_r」関数の第2引数にtrueを与えると出力した内容を文字列で取得できる。
サンプル
- $points
= array(); - $points[]
= array('latitude' => 35707701,'longitude' => 139761787,'iconid' => 17); - $points[]
= array('latitude' => 35706847,'longitude' => 139762618,'iconid' => 18); - $points[]
= array('latitude' => 35706764,'longitude' => 139762515,'iconid' => 19); - $string
= print_r($points,true); - print
"<pre>"; - print
$string;
実行結果
私がよく使用する箇所としては、エラー処理や例外処理のときに変数の中身のデバックしたいときなど、エラーメールとして本文に貼付けるときなどに使用しています。
※PHP 4.3.0以降のバージョンでしか使用できませんのでご注意ください。
・「scandir」関数
PHP5から追加された関数で、指定したフォルダ内のファイルをリストで取得する関数です。
私は、この関数の存在に気づかずにいつも下記のように面倒な方法で取得していました。
- $dir
= "/data/tmp/files"; - $dh
= opendir($dir); - while
(false !== ($filename = readdir($dh))) { $files[] = $filename; - }
次にsymfony編です。
・「sfLoader::loadHelpers」でアクション内でもヘルパーを使用する方法
ヘルパーでは定義しているけど、アクション内でも同じ処理を行いたいと思って、
そんな便利なものがないかと聞いてみたときに教えてもらいました^^
注意点として上位のヘルパーに互換性がある場合は、ちゃんとそのヘルパーも呼び出さないとエラーになります。
- 例えば、Formヘルパーをアクション内で使う場合は
- ×:sfLoader::loadHelpers(array('Form'));
- ○:sfLoader::loadHelpers(array('Helper','Tag','Form'));
- としてから呼び出すことができます。
最後にsymfony Doctrine編です。
・DQL(DoctrineQueryLangage)を実行することで生成されたCollectionデータの配列のキーを特定のフィールドで指定する方法
下記のサンプルのように記述して取得できます。
例)ランキングのデータ(UserRankking)をランクフィールド(rank_number)をキーとしてCollection配列を取得する
3-1の1位〜100位までを取得
- $table
= Doctrine::getTable('UserRankking'); $table->setAttribute(Doctrine::ATTR_COLL_KEY, 'rank_number'); $ranks = $table->createQuery() ->where('class_id = ?', '3-1')) ->addWhere('edition_number >= ? AND edition_number <= ?', array(1, 100)) ->orderBy('rank_number asc') ->execute();
上記のように特定のフィールドの値をキーにしてCollectionデータの連想配列として$ranks[1],$ranks[2],$ranks[3],$ranks[4]...のようにCollectionデータを取得できます。
しかし、指定したフィールドの値(連想配列のキー)がユニークでない場合は上書きされてしまうので、使用する場合には注意が必要です。
※setAttributeでセットしない場合は、0からのキーで開始されます。
皆さんもこういったTipsや為になったことなどはないでしょうか?
そんなときには是非、私にも教えていただき、情報共有ができたらとてもうれしいです^^
最後になりましたが、本日書かせていただいたことが皆さんの少しでもお役にたてれば幸いです。
コメント
コメントフォーム
トラックバック
最近の記事
- もうすぐ健康診断があるんだ・・・ [2010年09月02日 : 阿部恵]
- Photoshopで壁紙を作りながら、基本的な使い方を覚える [2010年09月01日 : 鴨田健次]
- はじめての共同作業 Canvas編 (node.js + websocket) [2010年09月01日 : 中川善樹]
- 「PHP×Flex(後編)」PHPテクニカルセミナー(無料)第4弾の募集を開始しました!! [2010年08月26日 : 和田記光]
- 【HTML5】Canvasでお絵かきしてみた(前編) [2010年08月25日 : 橋本章史]
- MacにgroongaのMySQL用ストレージエンジン [2010年08月23日 : 笹亀弘]
- Appleのサイトで見たiPhone4をFireworksで描いてみました-1/2 [2010年08月19日 : 和田記光]
- iPad版の会社紹介を作ってみました [2010年08月19日 : 小林有佳]
- iPhoneアプリ開発開始時に気をつけるべきファイルの取り扱い (2) [2010年08月19日 : 亀本大地]
- symfonyセミナー動画無料公開! [2010年08月13日 : 岡本雄樹]



http://jp.php.net/manual/ja/function.glob.php
パターンマッチングができるので、自分は良くこれを使っています。
コメントありがとうございます。
パターンマッチングで取得できるのはいけてますね。
今度、使う機会があったら使うようにしたいと思います。
ありがとうございました^^
配列などは、いつもserializeで変換してエラー処理に使ってました。