トップページ⇒php
1001コメント290KB

ZendFrameworkってどうよ?

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/10/07(土) 02:49:15ID:6wQ8r0Dc
ようやくVer.1.0が出るらしいね
これってどうよ?

PHP5に移行したほうがいいのかな
0556nobodyさん2007/10/20(土) 02:50:21ID:???
cakephpからpear::DB使うみたいに、Zend_Db 使う
ってことは可能なの?
Zend_Controller や Zend_View なしでも
動くようになってるんでしょうか?
0557nobodyさん2007/10/20(土) 03:44:11ID:hv51ePaW
controllerとview周り意外は大体単品で使える
0558nobodyさん2007/10/20(土) 04:01:10ID:???
>>556
Zend_Db つかうドライバ(DboSourceを継承したクラス)を書けばいい。
pear::DB用ドライバがコメント除いて100行程度だから簡単だろう
0559nobodyさん2007/10/20(土) 11:56:16ID:???
>>557
それってZF内でなんか方針として決まってるんだろうか
それとも今後Zend_Controller前提になるんだろうか
0560nobodyさん2007/10/20(土) 12:03:07ID:lDCmHmbT
単品で使えるのはそういうポリシーでしょ
0561nobodyさん2007/10/20(土) 19:45:35ID:hv51ePaW
Filter_Inputでfieldsに配列入れると
Validate_IsEmptyがちゃんと動かないんだけど
これって正しい動きなの?
05625392007/10/21(日) 16:14:54ID:???
>>556
Zend_Controller や Zend_View なしでもOK
>>558
ドライバ不要
>>559
独立したコンポーネントで使えるのがZFの方針
0563nobodyさん2007/10/21(日) 17:27:31ID:???
PHP4で動かないの?
0564nobodyさん2007/10/21(日) 18:44:18ID:???
PHP4で動かないのがZFの方針
0565nobodyさん2007/10/21(日) 18:48:20ID:???
PHP4(笑
0566nobodyさん2007/10/21(日) 20:14:31ID:???
(笑 w
0567nobodyさん2007/10/22(月) 00:05:58ID:nQ80Rs2X
w
0568nobodyさん2007/10/22(月) 00:17:40ID:???
コンポーネントで使えるおかげでいろいろな別フレームワークに組み込めてらっきーですよ。
あくまでPHP5用ライブラリね>ZF
0569nobodyさん2007/10/23(火) 00:05:27ID:???
zfを勉強中なのですが、アクションコントローラはapplication/controller配下にだだ並びになるのが普通なんでしょうか。
0570nobodyさん2007/10/23(火) 10:59:20ID:???
RewriteRouterのModuleでサブディレクトリに分けることもできるよ
05715692007/10/23(火) 14:06:52ID:???
レスありがとうございます。
皆さんはどうしてますか?
ディレクトリ分けしているのでしょうか?
0572nobodyさん2007/10/24(水) 01:30:51ID:???
Contorollerの説明ってややこしいっていうか、わかりづらいっすよね

>>569 570

サブディレクトリに分けるだけなら
Zend_Controller_Front::getInstance()したコントローラーに対して
setControllerDirectoryで配列を渡せばいけます。
内部的にはRewriteRouterがデフォだから570さんが間違ってるわけじゃないと思うけど・・・

ところで便乗質問なんだけど

Zend_Controller_Router_RouteとかをZend_Controller_Router_RewriteにaddRouteして独自のパターンで
コントローラーを呼び出せるのはわかったんだけど、
例えば、ドキュメントルートでrewriteしたとして、
fooというサブディレクトリのコントローラーを
http://hoge.hoge.com/foo/controller/action/value/
と呼び出してvalueを取得するようなrouterってできますか?
0573nobodyさん2007/10/24(水) 03:59:44ID:???
Zend_Db の
insert、updateメソッドのように
SQLを意識しないで使用できるSELECT用のメソッドって
ないのでしょうか?
マニュアル見てみましたが見当たりません。

SELECT文の場合、みなさんシコシコとSQL書いてるんでしょうか。
where句とかを見るとげっそりするのです。
0574nobodyさん2007/10/24(水) 04:48:56ID:???
SQLくらい意識しろ
05755722007/10/24(水) 08:27:04ID:???
できました。というか、マニュアルにでてたの見逃してた。
参考までに一応書いておきます。
$route = new Zend_Controller_Router_Route(
'foo/:controller/:action/:value',
array('module' => 'foo')
);
$router = new Zend_Controller_Router_Rewrite();
$router->addRoute('foo', $route);

こんな感じでいけました。
ただこれだけだと
http://hoge.hoge.com/foo/controller/action/
と、valueがないとルーティングできないので
$front = Zend_Controller_Front::getInstance();

$front
->setControllerDirectory(array(
"default"=>"/path/to/controller",
"edit"=>"/path/to/controller/edit",
))
->setRouter($router)
としておけばvalueがなくてもOK。
お騒がせしました。
0576nobodyさん2007/10/24(水) 08:28:26ID:???
しまった。
"edit"=>"/path/to/controller/edit",
は
"foo"=>"/path/to/controller/foo",
です。
0577nobodyさん2007/10/24(水) 11:58:48ID:???
>>573
Zend_Db_Selectっていう名前ズバリそのもののクラスがあるだろうが
selectは複雑だから別クラスになってんだよ
05785732007/10/24(水) 17:11:28ID:???
>>577
サンクス、
見てみたけど、さすがにupdateやinsertのようなシンプルさはないですね、、、
0579nobodyさん2007/10/24(水) 20:05:53ID:???
ていうかマニュアルちゃんと嫁よ十分シンプルだっつーの
SELECT文は取得条件の項目が多いから単にメソッドが多くなってるだけ
メソッドチェインで取得条件足してくだけだろうが
あれがupdateやinsertみたいな1メソッドだったら引数が複雑になる
0580nobodyさん2007/10/25(木) 00:11:44ID:???
phpでメソッドチェインなんかはじめて見た
0581nobodyさん2007/10/25(木) 23:00:57ID:YQ1wPxgb
よくある改行コードを\nに統一するフィルター作ろうと思うんですけど
どんな名前がいいと思いますか?
0582nobodyさん2007/10/25(木) 23:07:21ID:???
CrRemover
0583nobodyさん2007/10/25(木) 23:19:10ID:???
aaa(\r)bbb を aaa(\n)bbb にするかもしれないから
CrRemover って名前はどうかな

そのまま名前にしちゃえばいいんじゃない?
WellKnownFilterToUnificateNewlineCodeToLf とかw
0584nobodyさん2007/10/25(木) 23:25:04ID:???
>WellKnownFilterToUnificateNewlineCodeToLf
こんなの嫌です><

>CrRemover
にしときます!
0585nobodyさん2007/10/25(木) 23:25:35ID:???
nl2lf
だと関数みたいだよね
0586nobodyさん2007/10/25(木) 23:32:51ID:???
ポチ
0587nobodyさん2007/10/26(金) 17:21:16ID:???
Ethnaたんハァハァ
0588nobodyさん2007/10/27(土) 00:02:29ID:???
なにやら海外生活に興味津津な奴がいるな
0589nobodyさん2007/10/27(土) 01:22:28ID:???
http://sourceforge.net/search/index.php?all_words=zend+framework

ここでZend_Formを見つけたんやけど
なんでこれだけこんなところで配布してんの?
05905392007/10/28(日) 01:00:56ID:???
>>589
http://mitchellhashimoto.com/zend-form/guide
をみるとnot officially part of the Zend Frameworkと断り書きしてますね
0591nobodyさん2007/10/28(日) 10:40:55ID:???
英語読めないから詳しいことはわかんないけど、
勝手に"Zend_"で始まる名前を使っちゃだめなんじゃないの?

http://framework.zend.com/manual/ja/coding-standard.naming-conventions.html
05925912007/10/28(日) 10:46:21ID:???
ごめんトンチンカンなこと言ってた。
0593nobodyさん2007/10/28(日) 11:12:23ID:???
Zendがそういう規約作って無くても
ネームスペース縛りが厳しいPHPで
オレオレライブラリにZendのプレフィックス
安易に使っちゃう奴の気が知れん
0594nobodyさん2007/10/28(日) 13:51:04ID:???
zfのwikiで考えてるのと同じ仕様のものを非公式に配布してるってことじゃないの?
それでもややこしいことしてくれてるけど
0595nobodyさん2007/10/29(月) 01:59:27ID:???
http://framework.zend.com/manual/ja/zend.mail.html#zend.mail.introduction.sendmail

Zend_Mail::setDefaultTransport($tr);
で
$mail = new Zend_Mail();
に影響する理由が良く分からんのですが、、、
どなたか教えて栗


あと、
Zend_Mail::setDefaultTransport($tr);
じゃなくて、
new Zend_Mail();
でインスタンス生成したあとに '[email protected]'を
指定する方法きぼんぬです
0596nobodyさん2007/10/30(火) 13:07:58ID:???
>>595
staticだからってことなんじゃないの?

あと、
$mail = new Zend_Mail();
$mail->send($tr);
0597nobodyさん2007/10/31(水) 04:47:05ID:???
Zend_Config
Zend_Mail
Zend_Db
が使いやすいな〜と思い、
ZF使いになった俺です。

極力ZFを使用するように努めてるんですが、
たとえば認証部分の場合、
DBにユーザ情報格納するときには、
DBのuserテーブル、IDとPASSでwhere句で調べて、1行じゃなければアウト、って
いう俺俺クラスを作ったほうが、
Zend_AuthやZend_Aclを使うよりも恐ろしく楽な気がします。

こういったときの使い分け基準ってみなさんどうしてますか?
0598nobodyさん2007/10/31(水) 05:31:04ID:???
俺も極力ZFのやつで・・・
って考えて作って行ってたけど
無理だと思ってやめた
0599nobodyさん2007/11/01(木) 04:05:54ID:???
Zend_Mail::sendの結果で
if処理したい場合、
$result = Zend_Mail::send;
if( $result ){
echo "成功";
}else{
echo "失敗";
}
でよかとでしょうか?
マニュアルにはboolenとか書いてないとですが。
0600nobodyさん2007/11/01(木) 08:46:28ID:yKQSluaW
>>599

* @return Zend_Mail Provides fluent interface
06016002007/11/01(木) 08:47:16ID:???
上げちゃった。ごめん。
0602nobodyさん2007/11/01(木) 12:46:57ID:???
1.0.2インスコしてるが、あんま使わねーな
06035992007/11/01(木) 13:42:31ID:???
>>600
おいらにはそれを訳す能力がありません。
へるぷみ
0604nobodyさん2007/11/01(木) 19:14:11ID:???
>>603
つ辞書
つ教科書
つ中学校の先生
0605nobodyさん2007/11/01(木) 20:16:01ID:???
流れるようなインタフェースを使える、
メソッドチェーンで流れるように書けるよってことかな

fluent interfaceについてはこの辺を
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?FluentInterface
http://d.hatena.ne.jp/higayasuo/20071025#1193319054
http://d.hatena.ne.jp/takagimasahiro/20071027/fluentinterface
06065992007/11/02(金) 01:49:05ID:???
Zend_Mail Provides fluent interface
Zend_Mail は「流れるようなインタフェース」を提供する
が return?
メソッドチェーンと何の関連が。。。
全然意味わからんとです。
0607nobodyさん2007/11/02(金) 01:57:42ID:???
@return Zend_Mail -- Provides fluent interface
  ↓
返す型:Zend_Mail …… fluent interface を提供するため。

599は>>605のリンク先を少しは読め
0608nobodyさん2007/11/03(土) 05:21:17ID:???
ZFはFWのFWとなるべく生まれてきたんじゃないかと思う。
FWのFWというかDSLのDSLというか。
0609nobodyさん2007/11/03(土) 06:06:39ID:???
dslって何だ?
adsl?
0610nobodyさん2007/11/03(土) 12:32:41ID:???
PHPの文法じゃDSLとは言い難いだろ
0611nobodyさん2007/11/04(日) 00:45:50ID:pUsvR5iH
Db_Table_Rowって昔
user_nameみたいなカラムを

$row->userName

みたいにするような感じじゃなかった?
0612nobodyさん2007/11/04(日) 01:03:54ID:???
だからdslって何なんだよ
Nintendo DS Lightのことか?
0613nobodyさん2007/11/04(日) 01:39:49ID:???
ttp://itpro.nikkeibp.co.jp/article/COLUMN/20070604/273453/?P=4&ST=oss
Glenn Vanderburg氏*3によれば,メタプログラミング機能が最も活用できるのはDSL(Domain Specific Language)の分野なのだそうです。
DSLとは特定の分野向けに機能を強化した小規模なプログラミング言語のことで,昔からあるアイディアです。

だってさ
0614nobodyさん2007/11/04(日) 17:38:17ID:pUsvR5iH
http://ho.ge/user/:username

みたいなページで:usernameのユーザーが登録されてないときに
404ページ出す場合ってforwardでエラーページに飛ばすべきか
throw new Zend_Controller_Dispatcher_Exception()をするべきか
どっちがいいですか
0615nobodyさん2007/11/04(日) 18:40:59ID:???
ちんぽまるだしで全部解決
0616nobodyさん2007/11/05(月) 11:16:12ID:???
>>614
Controllerの中でerrorActionを定義するのが簡単
その次がException
0617nobodyさん2007/11/05(月) 12:46:18ID:???
しばらく見てないけど
Zendルータってもう使いものになるレベルになってんの?
0618nobodyさん2007/11/06(火) 20:29:30ID:???
いつのバージョンと比較してるのかは知らんが
使えないのは、単にお前の能力不足じゃないのか
0619nobodyさん2007/11/07(水) 02:53:53ID:???
いや…
前見た時はなんかろくすっぽ実装されてなかったけど
0620nobodyさん2007/11/07(水) 02:55:45ID:???
ってかルータ使うのに能力も何もねーだろ・・・
意味不明な煽りすんな氏ね>>618
0621nobodyさん2007/11/08(木) 02:26:48ID:???
Zend_Log のDB使用の際のイベントの追加の仕方がよく分からないんですが、
下記のようにnew Zend_Log_Writer_Db時点($columnMapping)で、追加予定のイベント指定して、
new Zend_Logでインスタンス生成してから
setEventItemするという順で良いのでしょうか?

$db = Zend_Db::factory('PDO_MYSQL', $params);

$columnMapping = array('lvl' => 'priority', 'msg' => 'message', 'pid' => 'pid');
$writer = new Zend_Log_Writer_Db($db, 'log_table_name', $columnMapping);

$logger = new Zend_Log($writer);

$logger->setEventItem('pid', getmypid());
0622nobodyさん2007/11/09(金) 21:37:56ID:???
>>617
まだがっつりとは触ってないけど、私見では十分使えるレベルだと思う。
Net_URL_Mapperなんかでごりごり書くよりも直感的で、本当にルータっぽく
設定できるので、個人的には結構気に入っている。というか、他の機能が
まだ少し未熟な(好意的に見れば柔軟性に富んだ)感触なのに対して、ほぼ唯一
そのまま使える機能といってもいいw

むしろ、Validator周りが予想以上に使えなくて、今頑張ってるよ…。
0623nobodyさん2007/11/10(土) 00:36:32ID:grKOANVo
>>622
その辺はZend_Formとかとくっつける為にあんな感じなんだろう
0624nobodyさん2007/11/10(土) 00:49:31ID:???
なんで放置されてるZend_Form?適当な事言ってない?
0625nobodyさん2007/11/10(土) 01:04:16ID:???
PonkotsuFramework
0626nobodyさん2007/11/10(土) 02:58:12ID:???
Zend_Log組み込んでるんだけど、
DEBUGはロギングしない、とか後で変更できないの?
わざわざ継承して、debug関数の処理空にする、とかしか思いつかない。
06276262007/11/10(土) 02:59:42ID:???
スマソ、フィルタってのがあるね
0628nobodyさん2007/11/10(土) 15:52:22ID:???
Zend_Db_Adapter_Abstract::insert()
で1日ハマってるんだけど、誰か助けてくれ〜〜

$db->insert( $table, $insert_data );
としても全くインサートされない。

Zend_Db_Profiler でクエリー文調べてみたら
INSERT INTO `table` (`hoge`, `hoge2`) VALUES (?, ?)
となってるんだが、ホワィ??
なぜにプリペアドステートメント?
0629nobodyさん2007/11/10(土) 16:37:29ID:???
なぜってお前・・
0630nobodyさん2007/11/10(土) 18:43:54ID:???
>>628
Zend_Db_Profilerで見られるクエリでPDOでbindする前のじゃなかったっけ
だからそれはそれであってるんじゃないの(この仕様もどうかと思うんだけどね)
例外が返ってくることもなくデータが入らないの?
0631nobodyさん2007/11/10(土) 23:10:26ID:???
>>607
objectが返るってことはソースからなんとなくわかったんだが、
結局
>>599のように送信が成功したかどうかで分岐させたい場合、
どんな記述をすればよいの?
0632nobodyさん2007/11/11(日) 01:37:50ID:???
try catch
0633nobodyさん2007/11/11(日) 09:38:19ID:???
>>631
sendで失敗したら例外が投げられるから投げられてたらエラー
tryでsendしてcatchに失敗した時の処理を書く
0634nobodyさん2007/11/11(日) 10:16:36ID:???
Zendframeworkはやはり諸々のお手本として勉強になりますなぁ
ZF周辺の頭脳派集団的オーラがぜひPHPコミュニティ全体に波及しますように
0635nobodyさん2007/11/11(日) 23:29:07ID:???
try catch ってソース汚くなっていやなんだが
ほかの人はあれ好きなの?
0636nobodyさん2007/11/11(日) 23:43:13ID:???
好きなヤツはいないと思うけど、さっくりとException投げられるから仕方なく使ってる
.NetでもSMTPにメールアドレスが拒否られた場合、普通にException投げてくれるから同じ書き方になる
try{mail.send(primary)}
catch
try{mail.send(secondary)}
catch{return false;}
他の言語だとどうなんだろうね
0637nobodyさん2007/11/12(月) 00:32:16ID:OoaTyYVU
try catchの美しさを理解できないのか
0638nobodyさん2007/11/12(月) 00:46:57ID:???
インデントが1段下がるのが嫌だ
0639nobodyさん2007/11/12(月) 01:36:43ID:???
Zend_Db_Tableはリレーションまでまともに使い物になる日は来るんだろうか?
SimonとかいうヤシのProposalはどうも現場感覚が決定的に不足してる感じがする
06405692007/11/12(月) 07:21:42ID:???
throwsがないのが不便。
0641nobodyさん2007/11/12(月) 10:09:01ID:zaguTSbK
汚いって思うやつは、try{〜}の中が長すぎるんだろ。
0642nobodyさん2007/11/12(月) 14:04:06ID:MO0zYBuT
Zend_Mailって日本語もばっちり?
0643nobodyさん2007/11/12(月) 18:00:06ID:???
>>642
OK!
0644nobodyさん2007/11/12(月) 18:03:05ID:???
>>642
一つ書き忘れ。送信者名に日本語使うときの対処方法がZend framework入門の
P299に書いてあります。
0645nobodyさん2007/11/12(月) 18:26:18ID:???
ばっちりちゃいますやんw
06466442007/11/13(火) 13:00:03ID:???
>>645
ゴメソ
06476422007/11/13(火) 19:59:22ID:lFhItDW1
なるほどです。
>>644
給料出たので奮発してその本買って見ます。
0648nobodyさん2007/11/13(火) 20:32:39ID:???
「Zend Framework入門」は別に買わなくてもいいんじゃないかと。
マニュアル以上のことが書いてあるわけでも無いし。

俺は買って損した気分です。
0649nobodyさん2007/11/13(火) 22:09:12ID:???
>>648
同意
0650nobodyさん2007/11/14(水) 01:14:37ID:???
ZF入門は残念ながら内容薄かったね。
英語でよければ「Zendframework in action」がオンライン購入で途中まで読めるようになっており
コチラはもう少し読みやすく実践的なのでモチベーションが上がる。
まぁZFのバージョンアップではやくも内容が古くなりつつあるけど。
0651nobodyさん2007/11/14(水) 01:44:20ID:???
Zend_Viewでビュースクリプトから取得される文字列をデフォでエスケープさせようと弄ってるんだけど、

public function __set($key, $val){
if ('_' != substr($key, 0, 1)) {
$raw_key = $key . '__raw';
$this->$raw_key = $val;
return;
}
require_once 'Zend/View/Exception.php';
throw new Zend_View_Exception('Setting private or protected class members is not allowed', $this);
}

public function __get($key){
$raw_key = $key . '__raw';
if(strpos($key, '__noescape') === false){return $this->$raw_key;}
else{return $this->escape($this->$raw_key);}
}

こういう書き方ってダメなんだっけ?
__setの時点でWindows環境だと無応答、Linuxだとメモリ確保できないぞゴルァみたいなエラーが。
0652nobodyさん2007/11/14(水) 01:49:41ID:???
poka-n
0653nobodyさん2007/11/14(水) 03:29:33ID:???
try{
$db = Zend_Db::factory('PDO_MYSQL', $params);
$db->insert('table', $params2);
}catch(Zend_Exction $e){
echo "メッセージ: " . $e->getMessage() . "\n";
}
でinsertのエラーがキャッチできないんだけどなぜに?
0654nobodyさん2007/11/14(水) 03:30:29ID:???
Zend_Exception
0655nobodyさん2007/11/14(水) 05:29:12ID:???
うわ、これって「Zend_Exction Class が未定義」というエラーにならないんだな。
はじめて知った。さすがPHP、奥が深いな。
■ このスレッドは過去ログ倉庫に格納されています