Zend FrameworkのDbテーブルリレーションを使って、初めて親テーブルの
データを取得したんですが、返り値ってZend_Db_Table_Rowなんですね。
子テーブルのデータをとってくるときと一緒で、Zend_Db_Table_Rowsetの
つもりで current() を呼び出してエラーになってしまっていました。
子は複数だけど、親は1つっていう考えになってるんですかね。
ほーって思ったので、メモしておきます。
Zend FrameworkのDbテーブルリレーションを使って、初めて親テーブルの
データを取得したんですが、返り値ってZend_Db_Table_Rowなんですね。
子テーブルのデータをとってくるときと一緒で、Zend_Db_Table_Rowsetの
つもりで current() を呼び出してエラーになってしまっていました。
子は複数だけど、親は1つっていう考えになってるんですかね。
ほーって思ったので、メモしておきます。
出張で、家に2週間いなかったのも手伝って、全然更新してませんでした。
その間、初めて業務関係でZend Frameworkをいじれていました。
ある程度の規模のものを作っても全然楽。開発スピードが違う。
特に、ErrorHandler、ErrorControllerを使ったエラー処理は便利。
Exceptionをthrowしておけば、エラーは拾ってくれるし、
Exception内のデータから、エラーの原因も特定できる。
何より、エラーのための処理をソースにあまり書かなくていいから、
可読性がものすごくあがる。これはかなりメンテナンスしやすい!!
Exceptionは、エラー発生ファイル、ライン数、そこまでのトレース情報までわかる。
あと、Smartyの便利さに改めて気づきました。
Smartyから、post、sessionの情報を参照できるのは使うと、手放せません。
まだやったことない方はぜひお試しください。
Mac OSX Leopardに入っているサブバージョンを使おうと
調べていたら、eclipseが出てきて文字化けでめんどくさくなったり、
viを使いやすいようにすることに興味が出たり。
結局、サブバージョンのクライアントを決めきれずに、今日は終了。
eclipseはphpファイルはいいのだけど、smartyを使ったhtmlファイルの
デフォルト文字コードがSJISになってしまって、文字化け。。。
htdocsを書いていないと、UTF-8になってくれない。
また時間見つけて調査すると思う。
見つけた資料となるサイト
http://d.hatena.ne.jp/tenkousei/20080120/1200825816
http://d.hatena.ne.jp/zariganitosh/20071103/1194140667
http://www.moongift.jp/2008/06/versions/
http://scplugin.tigris.org/servlets/ProjectDocumentList
http://www.minfish.jp/blog/archives/2006/01/osxvi.html
http://www.asahi-net.or.jp/~wv7y-kmr/memo/vim_php.html
http://www.cs.cmu.edu/~maverick/VimColorSchemeTest/
PDTを使うのに、3.3にしようとしたが、Eclipse Classicから
いろいろインストールして、動くようになった。
けれど、ヘルプ→ソフトウェア更新から、更新しようとするとエラー多数。
なんでだ?と思い、PDTのall-in-oneパッケージもインストールしてみる。
これならエラーでないかと思ったけど、やっぱり出る。
使えるならいいやと思わないといけないものなのか!?
とりあえず、今のまま仕事で使ってみよう。
家で開発するときは、ターミナルでviで十分だなと思っているんだけど、
いい感じなら、家にもEclipse入れてみようかな。
家なら、ApacheもMySQLもPHPもローカルにインストールされているから、
ちゃんと統合開発環境を作れそう。
それをやるなら、サブバージョンもやってみようかな。
ソース消えたら、かなりショックだし。
参考にさせていただいたサイト
http://download.eclipse.org/webtools/downloads/
http://download.eclipse.org/tools/pdt/downloads/
http://www.eclipse.org/mylyn/downloads/
http://server.seasar.org/manual/install_subclipse.html
http://hp.vector.co.jp/authors/VA000137/eclipse/smarty_editor/smarty_editor.html
http://zone.maple4ever.net/documents/xampp_eclipse06.html
http://de-lab.com/article/eclipse_aptana
6月8日追記
Macにインストールすときの注意点
http://d.hatena.ne.jp/alice_qux/20080209/1202551093
結構前に、オオヒダさんに教えてもらったのが出てきた。
忘れないようにここにメモっておく
~/.vimrc においてください
set nonumber
set showmode
set showmatch
set matchtime=1
set cmdheight=2
set autoindent
set tabstop=4
set expandtab
set shiftwidth=4
set ignorecase
set smartcase
set wrapscan
set laststatus=2
set showcmd
http://www.thinkit.co.jp/article/73/3/
ラインデバッグができるのは、便利だと思う。
特にZendだと、例外がthrowされたら、全部Error_Controllerに行くから、
どこでエラーが起こったかを特定するのに、データ取得用の処理が必要。
(サービスとしてリリースするときは必ず必要だけれど)
ラインデバッグができたら、開発中は手間が低減される。
そこが魅力的。どのくらい使えるものなのか、試してみる価値はありそう。
このブログは、hetemlというサーバで運用しています。
co-hey.comのドメインは、ムームードメインで管理しています。
そのムームードメインで、ムームーDNSという機能が使えるようになりました。
今までは、co-hey.comにサブドメインを作っても、ヘテムルのページしか表示されなかったですが、
ムームーDNSを使うと、paperboy&co.のサービスなら、
co-hey.comのサブドメインを設定できるようになったのです。
言葉で説明するとわかりづらいですね。自分でも読んでてわかりづらいと思いました。
違うサービスを、同じサイトのURLのようにあつかえるのです。これも微妙ですね。
こういうことです。
https://life.co-hey.com (ヘテムル)
http://photo.co-hey.com (プチ)
やろうと思えば、http://blog.co-hey.comをJUGEM PLUSにすることも、
http://shop.co-hey.comを、Color Me Shop! Proにすることもできます。(売る物がないですが。)
MTもいいですが、JUGEM PLUSだと機能が随時追加されていくし、ポータルがあるから、
ブログを見に来る人の数も違ってきます。
私もJUGEMで、また趣旨の違ったブログを書き始めようかと考えています。
何について書くかがさっぱり浮かばないので、いつになるかは未定です。
ヘテムル、Color Me Shop! Pro、JUGEM PLUS、Grouptubeは
初期費用無料キャンペーンもやってるみたいです。
キャンペーンページはこちら
今まで使っていた、Zend Framework 1.0.3を、1.5.1にバージョンアップしました。
まだ細かいところは検証してませんが、最初に引っかかった問題を書いておきます。
今まで、下記の【1】のように書いていた index.php を、
【2】のように書き換えないと動かなかったです。
不便だなと感じましたが、1行の修正なので大した修正ではないです。
※ /xxx/yyy/xxx/ 配下に contrllersディレクトリが存在します
【1】
$add_path = . '/xxx/yyy/ZendFramework/library' . PATH_SEPARATOR
. '/xxx/yyy/zzz';
ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . $add_path);
require_once('Zend/Loader.php');
Zend_Loader::loadClass('Zend_Controller_Front');
$front = Zend_Controller_Front::getInstance();
$front->setControllerDirectory('controllers')
->dispatch();
【2】
$add_path = . '/xxx/yyy/ZendFramework/library' . PATH_SEPARATOR
. '/xxx/yyy/zzz';
ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . $add_path);
require_once('Zend/Loader.php');
Zend_Loader::loadClass('Zend_Controller_Front');
$front = Zend_Controller_Front::getInstance();
$front->setControllerDirectory('/xxx/yyy/zzz/controllers')
->dispatch();
相対パス、絶対パスでの指定では動作したのですが、
パス設定をした後に、パスを利用したディレクトリ指定ではNGでした。
今作っているプログラムは、Zend Frameworkを利用しているので、
.htaccessが利用できる必要があります。
前回の記事で書いたphpMyAdminを設置した後、作りかけのプログラムを
サーバからダウンロードしてきて設置したところ、見事に動きません。
調べていくと、RewriteEngineが動いてない様子。
Apacheの設定に問題がありました。
configureのオプションも、httpd.confの記述も不足していました。
以下のサイトを参考に、Apacheのmakeをやりなおして解決!!
こちらの記事に書いていた configureの内容も修正してあります。
一番最後の “–enable-rewrite=shared” の部分が付け足したところです。
mod_rewriteを有効にする方法
http://memorva.jp/memo/linux/mod_rewrite.php
htaccessを有効にする方法
http://www.site-cooler.com/tips/apache_htaccess.htm
http://httpd.apache.org/docs/2.2/ja/mod/core.html#allowoverride
fetchRow、fetchAllどちらもDBから行を取得するメソッドです。
相違点は以下
fetchRow
1. 単一の行を取得
2. 返り値の型は、Zend_Db_Table_Row
3. 0件取得の場合は、nullを返却
fetchAll
1. 複数の行を取得
2. 返り値の型は、Zend_Db_Table_Rowset
3. 0件取得の場合は、Zend_Db_Table_Rowsetを返却
注目するところは、3です。
fetchAllは、0件でもZend_Db_Table_Rowsetを返却します。
なので、取得の有無で、nullかどうかでは判定できません。
私はどちらもnullが返ってくると勘違いしていたので、ミスりました。