1 :
nobodyさん :
2006/10/07(土) 02:49:15 ID:6wQ8r0Dc ようやくVer.1.0が出るらしいね これってどうよ? PHP5に移行したほうがいいのかな
ついに立った。 来るべき時が来た。 その名は勇者「Zend Framework」 君は生き残ることができるか!?
前DATオチしたね
解説本に期待
ああ、もう1.0が出る時期か 時間経つのはえー
6 :
nobodyさん :2006/10/07(土) 16:12:39 ID:6wQ8r0Dc
ていうか、PEARでいいじゃんと思うのは俺だけ?
どこまで過去に遡るかにもよるが… ていうか、原始人でいいじゃんと思うのは俺だけ?
pearはGLOBAL使いまくりで、挙動がときどき怪しくなるからダメ
global使いまくりなん? ふてえ野郎だな
10 :
nobodyさん :2006/10/08(日) 04:50:33 ID:qm46jQzh
世の中のものすべて、ZFに置き換わるって聞いたけど、ほんとう? 俺の友達のプログラムがすっげぇ上手い奴が言ってた。
>>10 >俺の友達のプログラムがすっげぇ上手い奴が言ってた。
何が基準でどううまいの
出たり消えたりするくらいうめーの。
Zend Framework VS Ruby on Rails
>3 前スレ立てたの漏れだ スマソ
今月発売のオープンソースマガジン ZFの特集じゃなかったっけ 読んだ人いる?
>>5 どこが1.0出る時期だよ
見に行っちまったじゃねーかw
いちおう当初の予定だと1.0はもう出ているはずだったはず 開発者が抜けたりなんだりで現在の予定としては来年リリース
計画延びたのかよ ジーブなまけんな
21 :
nobodyさん :2006/10/10(火) 01:41:52 ID:fhnBXHJ2
これって結局、フレームワークなの? Ethnaの方が使いやすいじゃん
Ethnaって… もう笑うしかない
23 :
21 :2006/10/10(火) 02:27:53 ID:fhnBXHJ2
Ethnaって悪いっすか?? 他にはSymfonyとか?
>>21 PHP5版のPEAR
すなわちPEARMWORKですよ
25 :
nobodyさん :2006/10/10(火) 14:03:33 ID:fhnBXHJ2
今気付いたが、
>>10 >>俺の友達のプログラムがすっげぇ上手い奴が言ってた。
テラワロスプギャwww
26 :
nobodyさん :2006/10/11(水) 00:01:33 ID:0Yey4Vjl
試しに使ってみたんだけど、 modelsの中って何入れりゃいいの? マニュアルになんも書いてないんだけど。
夢と希望とかじゃね
28 :
nobodyさん :2006/10/11(水) 02:34:26 ID:U+ILIO/5
>>27 夢と希望を詰め込んで実行してみたのだけど、
バグが発生してばかりでした。
どういうこと?
夢も希望もないわ
ピーヨピヨピヨピーヨピヨ
ヒヨコなら良いが大量発生したのは虫だったんだから、 詰めたのはむしろあっちの方の卵では…
( ´;゚;ё;゚;)虫キモ
で、オープンソースマガジン読んだ奴いないの? 俺はsymfony派だからZFなんて屁としか思ってないが ZF派の奴もいるんだろ?あーん?
「Zend Framework」で加速するPHP開発 って言うほどたいしたものには思えないのだが… 俺の知らない機能でもあるのか?
36 :
nobodyさん :2006/10/11(水) 20:10:13 ID:??? BE:199464858-2BP(145)
正式バージョンが出てないせいか ブログとかでも全然話題にならない
2,3週間以内に0.2が出る予定
なんか生PHPをラップしただけみたいの多くね?
フレームワークはみんなそんなもんでしょ。 $request->getParameter("hoge"); は $_REQUEST['hoge']; みたいなもんだし。元から簡単なのをわざと難しくしてるってのもあるよな。 php自体がテンプレートエンジンみたいなものなのにさらにphpでテンプレートエンジン 実装してみたり。
でもFW使い出すと ラップ可能性を担保していない$_REQUESTを 直で使うのは抵抗感でてくるな。
PHPIDEやZendStudioとかの、開発環境絡めたコード管理とかやってくれるなら期待。
42 :
nobodyさん :2006/10/13(金) 00:31:57 ID:xr7XiJM/
>>41 やってくれるってきいたぞ、Eclipseとか
>>26 いまはZend_Db_Tableの継承がメイン
Zend_Db_Modelはまだ先だから自分で拡張する必要あるよ
44 :
nobodyさん :2006/10/15(日) 02:07:53 ID:hzF42wCh
pearコマンドでインストールできないん?
まだないみたいね。今後もなさそうだけど。 どうせアーカイブを展開して、include_pathを加えて、mod_rewrite書くだけでインストール終わりだし。
ほんとだ。そんなもん作ってる人いたんだ。
pearコマンドメインになるとレンタルサーバとかでは動かす時メンドクサイねん
コマンドで入れててもpearディレクトリにあるのコピーするだけじゃん
50 :
nobodyさん :2006/10/25(水) 01:18:42 ID:Nml3v/A2
Zend_Service使った人いる? Yahooの検索試したけど上手く行かないなあ。 適当にコード修正してみてどうにか検索結果は取れるようになったけど、 Domの使い方しくってるみたいで結果がなくなってる。
その辺はまだまだ挙動不審なところ多すぎると思います 基本的なところしかできてないんですzendは
52 :
+++ :2006/11/02(木) 00:51:37 ID:QD3MWGhS
Zend Framework Preview 0.2.0でてるよあげ。つーかなかなか出なかったな。
zend frameworkで日本語フォーラムなり、BBSってないかな? 英語だらけで、読むのに時間がかかって困る;; もしあれば教えてほしい〜
0.6.0リリースしたけど、なんも盛り上がってないね
56 :
nobodyさん :2006/12/30(土) 18:24:36 ID:oH2ULMYx
担当プロジェクト用のフレームワークを開発済みで使用中なのですが、 ZFのような汎用フレームワークに乗り換える意味ってあるのでしょうか? 自分で作るより、相当品質の高いものであることは間違いないと思い ますが、決定的なアドバンテージはあるのかな?
せっかくあるんなら わざわざ乗り換える意味はないだろ
58 :
nobodyさん :2007/01/04(木) 19:49:32 ID:vTsNrOjZ
フレームワークの勉強も兼ねてZF使ってます。 pluginのpreDispatchで取得したオブジェクトをコントローラーに引き渡したいのですが、 これって可能ですか? 現状グローバル変数に割り当てる位しか思いつきません。 どのようにやるのが良いのでしょうか?
試行錯誤して書いたソースぐらいはうpしれ。 話はそれからだ
>>58 0.6なら普通にRequest経由で渡せばいいんじゃない?
あまりにZend臭がするのも如何なものかと
Module functionalitって良いな、まさに求めてたモノです。
63 :
nobodyさん :2007/01/25(木) 13:17:28 ID:UWerJgMW
いつのまにか0.7リリース
いい加減Zend_View_Helper_Urlぐらい使えるようにしろよクソZend
もうすぐ0.8リリース
ゴミだね。
そういやZFってPagerないよね? Proposalにもないし、自分で作れってことか
>>67 Zend_Db_SelectにlimitPage()があるからDB取得はそっちでやって、
実際のページ数/リンク生成等のページャ操作はPEARのPagerでやればおk
ZFでようやくクリーンになってきたのに、今更PEARなんて勘弁
70 :
nobodyさん :2007/02/23(金) 01:58:00 ID:CtBpLmme
1.0まだか?
71 :
nobodyさん :2007/02/23(金) 15:02:25 ID:CtBpLmme
先生!ZFでSmarty使いたいです! ヘルパーはいりません! どうすればいいですか?
zend 0.8キタアアアアアアアアアアア
ZFにMojaviでいうフィルタ実装しようとしたら結構苦労すんね。 プラグインでなんとか出来そうだけど。
ZFで組んだらZFにあわせて 非publicなら_付けるみたいなダサいコーディングしないと駄目なの?
カッチリした規約のくせに オートローダ用意してないのはなんで? いちいちZend::loadClass()とか書いてられねーっつの
つーか、Zend::loadClass()とかあるくせに、 ソースではrequire使ってるよな
>>74 MojaviでいうフィルタがZFでいうプラグインなのかと思ってた
>>76-77 __autoloadがFWに組み込まれてるとFWにオートローダを強制されてしまう
ZFはあくまでライブラリ集なスタンスだから
phpの__autoloadのような一度定義したら変えようのないメカニズムを
FWをロードしただけで強制的に定義されてしまうと色々と困る事もある
symfonyのようにFW全体で1セットなフルスタックFWなら
__autoloadが組み込まれててもまあいいかと思うけど
つーかZend::loadClassがZFのオートローダだから
function __autoload($class) { Zend::loadClass($class); }
くらい我慢しろ
Zend::loadClassは動的にロードするファイルが
変わるような場面で使うためのもの
ロードする事が必須で静的に名前(パス)が決定しているものは
requireで良い、要は使い分け
>>78 MojaviのフィルタはpreFilterとpostFilterの二つがセットになってるけど
ZFのプラグインは一カ所のフックに差し込むだけでバーガー状にできない。
まあバーガーが必須でもないからこういう形にしたのかな
アプリ固有のクラスとか設定ファイルはどこに置く? /application/models? /library/?
Zend:_Sessionに
session_id()を返すgetId()ってメソッドはあるのに
session_name()を返すメソッドがありません。
クッキー使えない環境を想定してリクエストにセッション情報を含めたいんですが、
直接session_name()を使うしかないんでっしゃろか?
>>80 Mojavi使ったことないんで良く分かりませんが、
registerPluginで複数プラグイン登録するんじゃ駄目なんですか?
>>82 駄目じゃないけど順番を気にしないといけない。
まあフィルタなんてそんなに頻繁に書く部分じゃないから
気にすればいいんだけど。
ACLのとこ見てるんだけど 「今ユーザがどのロールを持っているか」の部分を担当するクラスを ZFは提供してない?
しかしこれは拡張しまくらないと使いものにならないねぇ フレームワークを作るためのフレームワークに近い。
ルータあるのにURLヘルパまだないのかよ こういう基本的なとこから先に作れっつの。
MojaviのFilter/FilterChainと ZendのFilter/FilterChain、 用語が同じで用途が違うからややこしいね。 言葉からの連想から言えばZendの方が直感的かな。
ZendのFilterはCompositeパターンなんだね 言われてみればこの方が理にかなってるか…
89 :
nobodyさん :2007/02/27(火) 06:57:41 ID:7OKXpCAA
誰か教えてくれ。 どうもセッション周りがおかしいと思っていたんだが、 Zend_Session::start() を呼ぶと$_SESSIONの値が全て消えてしまっている。 どうすればいいんだ。 もう眠い。調子こいてZF使わなければよかったorz
よく見たらFilterもValidateもCompositeじゃなかった
>>89 Zend_Session::start()内でsession_start()してるから
その時にクリアされるみたいよ。
もっとよく見たらやっぱりCompositeパターンだった(´д`) leafにaddできないから違うと思ったけど もともとこういう風に書くのか なんだかんだで勉強になるな
Zend::load_Interface消えてるワロタ
なんでZend::loadInterfaceだけなくしたんだろ Zend::loadClassもいずれ消える運命?
94 :
89 :2007/02/27(火) 11:16:48 ID:???
自己レス。 オプション指定しないとデフォルトでクッキーのみになってしまうんだね。
ValodatorManagerとかRequest::Errorsあたりの機能がごっそりないじゃん 実際使ってる人どうしてる?
m9(^Д^)プギャーーー
ヒント:ZFを実稼働させてる奴なんていない
まだ正式版じゃないしな
ってかContextがない・・・ 各オブジェクトに何を持たせたらいいんだよ 非フルスタックを目指すのはいいが穴ぼこだらけだろ NIKIBI-frameworkに改名しろや
front controllerをcontext代わりに使うことにしたぜ
zend frameworkでググったら 関連検索が「zend framework 動かない」だったwwww
>>91 Compositeパターンは幹にしかAddできないんじゃないか?
Zend::load_Interface消えたんだよな。
なんでだろ。
クラスのロード、全部Zend::loadClassでやってるから
Interfaceだけrequire_onceとかめんどいんだけども。
loadClass消えちゃうんだろか。
>>104 うん、勘違いしてた。
ファイルであると同時にディレクトリでもあるようなものがあれば
ちょっと面白そうだけど…。
クラスのロードはオートローダに任せておくのがいいのかもしれんね。
>>106 ファイル名が2語以上のcamelcaseだと確かにだめみたいね
ファイル名をAbcdefController.php にしたら動いた
クラス名はどっちでもいいみたい
古いバージョンはファイル名もcamelcaseでもいけてたような気がするんだけどな
確かにこれ地味に嫌な感じだな、バグなんかなこれ
loadClassは
>>79 とともに星になりました
オートロード使うと遅くなるのは間違いないから
あまり使いたくはなかったんだがなあ。
使うとしたら
>>79 の
>つーかZend::loadClassがZFのオートローダだから
>function __autoload($class) { Zend::loadClass($class); }
>くらい我慢しろ
これが一番楽ちんかな。
110 :
nobodyさん :2007/03/02(金) 13:46:15 ID:MGhMK5UU
なかなかよさそうなので試してみてるんですけど Zend_Dbで接続する時 apacheの実行ユーザー名と dbの実行ユーザー名が違うと SQLSTATE[08006] [7] FATAL: role "apache" does not exist という例外が投げられるんですけど、これは設定でどうにかなるのでしょうか? ちなみにPDOでじかに接続してる時はならなかったです。 まあ、同じにしてもいいですけど・・・ お願いいたします
DBは何を使ってる?MySQL? DB接続時にユーザ名指定してる?
112 :
nobodyさん :2007/03/02(金) 20:31:47 ID:MGhMK5UU
>>111 レスありがとうございます
DBはpostgreSQLです。
$params = array(
'host' => 'localhost',
'username' => 'hoge',
'dbname' => 'hogedb'
);
$db = Zend_Db::factory('PDO_PGSQL', $params);
$sql = $db->quoteInto( 'SELECT* FROM t_zip_code WHERE address like ? ' , '%東京%' );
echo $sql;
この時点で実行してエラーが出ます。
実際クエリーは発行していません。SQLを取得しただけです。
httpd.confの
User apache
Group apache
を
User hoge
Group hoge
にしたらエラーもなく、SQLも無事取得できました。
>>112 $params = array(
'host' => 'localhost',
'username' => 'hoge',
'password' => '',
'dbname' => 'hogedb'
);
みたくパスワードもちゃんと空のパラメータにしてみて
あと、試しにfactory直後でクォートせず何かクエリ投げてみて、
同じようにroleがないみたいな例外が返って来るなら
多分DB接続がうまくいってなくて
PDOはクォートする時もコネクション使うからそこでこけてると思うんだ
114 :
112 :2007/03/02(金) 22:32:52 ID:AEjNDMWg
コードながめて、おかしなところを見つけたんですけど。 Zend/Db/Adapter/Pdo/Apstract.phpの85行目付近のDBに接続するところ $this->_connection = new PDO( $this->_dsn(), $this->_config['username'], $this->_config['password'] ); PDOで繋ぐときのDNSの設定がカンマで区切られていて しかも $this->_config['username'] を覗いたら、user= も無かったので カンマをドットに変えて下のようにしたら動きました。 $this->_connection = new PDO( $this->_dsn(). ' user='.$this->_config['username']. $this->_config['password'] ); でも、これって、PDOでいろんなDBに接続するクラスのスーパークラスですよね? こんなコアなところにバグあったら、みんな気づきますよね? なんか勘違いというか、設定ミス的なことを私がやらかしてるのでしょうか? ちなみに使ってるのはPreview 0.8.0です。
>>114 PDOのコンストラクタの引数は
new PDO('mysql:host=localhost;dbname=test', $user, $pass);
こんな感じ
そこのコードは特に間違ってはいない
んで引数の指定がなかった場合なんだが、
おそらくDB側はUNIX自体のユーザ名・パスワード
をDBのユーザ・パスワードと仮定して扱うと思うから
ちょうど今君はapacheのユーザ・パスワードを合わせてしまっているから
たまたま接続がうまくいってるとかそんな気がする
116 :
114 :2007/03/03(土) 01:47:36 ID:fjJSaYh6
>>115 確かにPDOのマニュアルにはその書き方が出てるんですけど
(うちの)postgresqlにはその書き方ではつながりません。
それだと
>>110 と同じエラーが出ます。
ttp://www.php.net/manual/ja/ref.pdo-pgsql.connection.php PDOのマニュアルを見ても
pgsql:host=localhost port=5432 dbname=testdb user=bruce password=mypass
と表記するように出てると思うんですけど・・・
違うとこ見てますか?^^;
う〜ん、でもおかしいですね。
もしかしてpostgresqlの人、
>>115 の書き方でつながってるんでしょうか?
サーバーとかDBの設定の問題でしょうか?
ちなみに、apacheとDBのユーザとパスは同じではありません。
どちらかというと、同じにすると動くと言う感じです。
ちなみにPHP5.2.1を使っています。
117 :
116 :2007/03/03(土) 02:45:02 ID:???
いろいろ実験してみたけど うちの環境ではやっぱり new PDO('pgsql:host=localhost;dbname=test', $user, $pass); ではなく new PDO('pgsql:host=localhost dbname=test user=user password=pass'); じゃないとつなげないっぽいですね。 ZendFrameworkと関係なさそうなのでPHP版の方へ行ってみます ありがとうございました。
>>114 > PDOで繋ぐときのDNSの設定がカンマで区切られていて
カンマ区切りは関数のパラメータの区切りであってDSNの区切りじゃないだろ;;
>>116 > PDOのマニュアルを見ても
マニュアル上ではuserとpasswordはDSN文字列で指定する他に
第二引数、第三引数で指定する方法もある。
パラメータの優先は第一引数のDSN側なんだが、
ZendFrameworkのPDOインスタンス時には
unset($dsn['username']);
unset($dsn['password']);
// use all remaining parts in the DSN
foreach ($dsn as $key => $val) {
$dsn[$key] = "$key=$val";
}
という処理でDSNを組み立てているので、unsetで除外することで
DSNの中にはuserとpasswordは入らないようにされている。
その上で、PDOが第二引数をちゃんと受け取れていない、という話であれば
それはPDOのバグかもしれない。
119 :
112 :2007/03/03(土) 13:57:46 ID:fjJSaYh6
PHP板にも書いたんですけど
>>113 を見逃していました。みなさんごめんなさい。
passwordを省略すると、あの得体の知れないエラーが出るようです。
エラーが間違ってるジャン!PDOのバグだ!と怒りたいところですが
113の指摘を見逃した私がすべて悪いわけでして・・・
申し訳ございませんでした。
&ありがとうございました。
Zendで行こうかと思ったがやっぱりsymfonyで行きます symfonyが10としたらZendは3くらいだし Zendしょぼすぎワロタ
Zend_Service_Akismetとやらを見て、Akismetの存在を知った。 面白いなこれ。
ZendはsymfonyのescapingOutputがないのが糞 いちいちescapeしてられるかっての
zend japanのレベルなんてそんなもの
125 :
nobodyさん :2007/03/04(日) 16:57:57 ID:brIiO66u
Zend_Db_Tableってもしかして Zend_Db_Selectと連携出来ないっぽいですか?
>>125 別扱いだな
tableにrailsライクなfind()が欲しけりゃselect使って実装しろってこった
ZF疎結合すぎワロタ
128 :
nobodyさん :2007/03/04(日) 17:21:00 ID:brIiO66u
>>126 public function fetchSelect($select){
return new Zend_Db_Table_Rowset(array(
'db' => $this->_db,
'table' => $this,
'data' => $this->_db->fetchAll($select),
));
}
でいちおう出来たけど、こんな感じかな。
これって、DBから一度配列で持ってきてから、PHPでオブジェクトにマッピングしてないですか?
PDO::FETCH_CLASS使った方が早いと思うんですけど、どうなんでしょう?
129 :
125 :2007/03/05(月) 00:37:51 ID:514EdfV5
PDO::FETCH_CLASSでfetchAll簡単に出来ました。 やっぱり早いですね。当然ですけど。 まあ、WEBアプリでは一回に何千もレコード取得して表示する事もそんなないだろうから 差は微々たる物だけど このフレームワーク、完成度は(当然正式版じゃないので)イマイチだけど ソース見てると、すごいよく設計されてると思う。 今後に期待しちゃうな とりあえず自分で改造したやつ使うつもりだけど。
図書館で「PHPの薬箱」を借りてきました。 Symfony、Zend Framework とりあえずこの二つを使えればプロとして自信が持てそうですw
結構いいよね、phpの薬箱。
132 :
125 :2007/03/05(月) 14:11:20 ID:c6MP6ips
良く見たらZend_Db_Table_Rowsetって
1rowが1objectじゃなくて
Zend_Db_Table_Rowset Object に全行の配列を持ってるんですね
見間違いました。
>>130 PHPの薬箱は、まだ読んでないですね。チェックしてみます。
私のオススメは
Zend Frameworkと関係なさそうで、微妙に関係ある
「PHPによるデザインパターン」
133 :
nobodyさん :2007/03/12(月) 08:54:48 ID:2JUfcRN6
134 :
nobodyさん :2007/03/14(水) 10:42:23 ID:62gHBZHz
135 :
nobodyさん :2007/03/14(水) 10:47:31 ID:62gHBZHz
ちなみに、ないアクションを呼んだときは真っ白な画面でソースを見ると <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD> <META http-equiv=Content-Type content="text/html; charset=utf-8"></HEAD> <BODY></BODY></HTML> しかありません。
なんかそんなのあった気もするがバージョンは? 最新の0.8ってもうnoRoute自体なかったような(__call()で処理)
138 :
135 :2007/03/14(水) 13:09:56 ID:???
>>136 >>137 レスありがとうございます
まさに0.8でした。
__callで処理するようになったんですね。
うまく出来ました。
Zend_Controller_Router_Route_Module が動かないんだけど・・・ マニュアルには $compat = new Zend_Controller_Router_Route_Module(); $this->addRoute('default', $compat); って書いてあるけど、いろいろ試したが動かない・・・・・・
ルーター細かくいじるならソース嫁 よっぽどでない限りデフォルトのルートだけで事足りるじゃん
レスサンクス!
>>140 確かに普通のルーティングだけでも十分満足だけど、
admin を別のアプリにしようと思って。
ソースよむかな・・・
>>141 なるほろ。
助言を基にもう一度やってみます。
143 :
139 :2007/03/15(木) 10:40:52 ID:???
できました。 include_path が通っていないだけでした。。
144 :
nobodyさん :2007/03/18(日) 13:33:48 ID:WPSFKvBp
お約束?のディレクトリ構造にしてアプリをつくるとして やっぱりmodelsにはincludeパスは通して使う物なのでしょうか? そうすると Zendのlibrary pear(使いたい物がちょこっとあるので) 全アプリ共通で使うclass群の入ってるディレクトリ そして、いくつかのmodelsディレクトリ と結構includes path通すところが数が多いのですが、 なんか、どこかで、あんまりいっぱいincludes pathを通すと、 検索する場所が増えるので、全体のパフォーマンスが低下するって 見た覚えがあります。 modelsにあるものを毎回フルパスで指定するのも何だし・・・ なんかうまい方法見逃してますか? それとも5.6個通すぐらいなら気にすることないのでしょうか?
pear用のディレクトリに関してはもう php.iniレベルで設定しておいていいし pear本家でZendネームスペースを使う事もないだろうから pear用ディレクトリ以下でZend/Zend.phpをsymlinkにしておけば アプリ側でinclude_path追加するのは lib/modelくらいで済むんじゃないかね
146 :
nobodyさん :2007/03/18(日) 22:00:42 ID:WPSFKvBp
>>145 レスありがとうございます
ふむ。modelに関してはそのアプリのindex.phpでパスを通せばいいのか・・・
まあ、なれてないのでいろいろ考えちゃってるけど、とりあえず作ってみれば
どうすればいいか解ってくるかな。
プレビューが0.9.0になってますね。
マニュアルもちょっとアップされたかな。たぶん。
祝い上げしておきます。
ところで、フォームはpearでやろうと思ってたけど、viewヘルパーなるよさげなものが
あるんですね。あれとZend_Validateを使ってみます。
147 :
nobodyさん :2007/03/19(月) 15:31:58 ID:Y3+UeIKc
View周りをプラグインで簡単にしようと思うんですが クラス名をどうしたらいいか悩んでます My_Plugin_Viewとか考えたんですけど なんか良い感じの無いですか
148 :
nobodyさん :2007/03/20(火) 23:47:27 ID:EqlsiciX
>>147 そんなんどうでもいいよっていう人も多そうだけど
意外にネーミングって悩むし、大事ですよね。
個人的にMyと_(アンダーバー)は嫌いなので
(サイト名や会社名や自分の名前)(機能を端的に表した単語)ViewPlugin
例HogeConvertViewPlugin
とか・・・
長いか・・・・
いっそのこと
HogeConvertVP
とか。
149 :
148 :2007/03/21(水) 00:05:18 ID:+1/xKX/r
質問しようと思って開いたのに書くの忘れた。 MVCというのが何となく解ったようで解らないんですけど 例えばフォームからの入力をDBに登録後、一覧を表示。 なんてアプリの場合、ファームのヴァリデイトはControlでするのでしょうか? そんな気がするのですが、Modelのような気も・・・ どんなもんでしょうか?
>>149 validationの定義はmodelに対して行う。
それを呼び出すのはcontrollerで行う。
151 :
nobodyさん :2007/03/21(水) 16:05:45 ID:NvhysGYm
Smartyのキャッシュ使いたいんだけど、その辺どうなの?
>>151 使えばいいと思うヨ!
みんなViewを素で使ってるのかな?
俺はViewを抽象化もせずにSmarty直接叩いてるけど。
今頃Zendコアクラスに変更か
154 :
nobodyさん :2007/03/25(日) 00:39:42 ID:kYJTpB8y
404ページをどうやって作ればいいんだ
155 :
nobodyさん :2007/03/25(日) 02:34:38 ID:07q9VATM
>>154 奇遇だね。今日おれも同じコトやってたw
Actionが見つからない場合はは__callが呼ばれるので
そこで404ページを出せばOKだけど
問題はControllerだよね。
省略された場合はデフォルトコントローラー(index)が呼ばれて、
ないコントローラーが呼ばれた場合デフォルトでは何も起こらない(本当は例外が投げられてるけど)じゃないですか?
Dispatcherまわりをもっとよく調べれば簡単な解決策あるかもしれないけど、とりあえず強引に解決してみた。
まずZend_Controller_Frontで
$controller->setParam('useDefaultControllerAlways',true);
で、ないコントローラーが呼ばれた場合もデフォルトのコントローラーが呼ばれるようにして
indexControllerのinit()で
$controller_name=$this->getRequest()->getControllerName();
$request_params=$this->getRequest()->getParams();
if($controller_name != $request_params['controller']){
$this->__call();
}
とかやって実際にリクエストされたコントローラー名と呼ばれたコントローラーが違った場合は
__callを呼んで404ページを呼び出すようにした。
こんな感じじゃ駄目ですか?
もっと簡単な方法あったら伝授お願いします。
どうもDispatcherっていうのが馴染みがないせいか、イマイチよくわからなくて・・・
1.0になったらどうにかなるかもしれないから放置するべきか・・・ 404くらいデフォルトでなんとかなるようにしてくださいよ! フレームワークあんだから!
useDefaultControllerAlways=trueで デフォルトのコントローラを404コントローラにする んでアクションが無い場合(__call)もそっちにforwardしてやるとか 何事にも気が利かないのはZFのデフォルトの仕様 rails:設定より規約 ZF:規約よりおまえが書け
158 :
nobodyさん :2007/03/25(日) 13:20:21 ID:07q9VATM
>>158 URLが空の場合はIndexControllerにルーティングすればいい
160 :
nobodyさん :2007/03/25(日) 15:33:13 ID:UfKh4Z0S
noRouteActionじゃダメなの?
俺もそう思った。 コントローラごとにオーバーライドするのは面倒くさいと見るか、コントローラごとに分けることができて便利と見るか・・・。 いざとなったら、404用のabstractなコントローラを用意して、継承しまくるとか。
noRouteActionはもうない
163 :
161 :2007/03/25(日) 16:49:33 ID:???
ごめん、最近のバージョンは全然チェックせずに言ってた。
ついでに最新バージョン落としてソースを追ってみたけど、
useDefaultControllerAlwaysをfalseにしておけば、コントローラが存在しない場合にZend_Controller_Dispatcher_Exceptionが投げられるから、これをcatchして404出せばいいんじゃないかと思った。
あと、アクションが存在しない場合はZend_Controller_Exceptionが投げられるっぽい。
さすがにZend_Controller_Exceptionだと、その名前から察するに別の状況でも投げられそうな気がするから、少し微妙かもしれない・・・。
とりあえず、
>>155 の言ってる、
>Actionが見つからない場合はは__callが呼ばれるので
>そこで404ページを出せばOKだけど
ってのがどういう意味かよくわかんなかったんだけど、__callを自分のアクションでオーバーライドして処理するってこと?
>>163 そう、旧バージョンのnoRouteActionを__callでどういう風にするのかは
http://framework.zend.com/manual/ja/zend.controller.migration.html#zend.controller.migration.fromzerosix ここの一番下に載ってる
まとめてみる
コントローラが見つからなかった場合、どっちでもいけると思う
useDefaultControllerAlways=falseなら
>>163 のように
Exceptionをcatchして404にforward or redirect
useDefaultControllerAlways=trueなら
>>157 のように
デフォルトコントローラを404のハンドリングに使う
ルーティングが '' (ドキュメントルート)の場合にも
404にハンドリングされてしまうのでRouterに最優先で
'' の場合はIndexControllerにルーティング
あと個人的にActionが見つからないのをハンドリングするためだけに
__callを使うのはもったいない(__callを使った拡張ができない)ので
Zend_Controller_Actionのdispatchをオーバーライドして
自前でアクションが見つからなかった場合の処理を実装して
__callを自分で使えるようにしておいた方がいいと思う
こんな感じかな?
165 :
161 :2007/03/25(日) 19:58:28 ID:???
>>164 なるほど。APIが禿しく変わったと思ってたけど、けっこうちゃんとマニュアルに書いてあるんだな。
404の処理方法も正式バージョンではドキュメント化されるかもね。
ひとまず当面は
>>164 のやり方しかないんだろう。
166 :
nobodyさん :2007/03/25(日) 23:02:53 ID:clpaUIjl
Zend_Loaderってなんだよorz
167 :
157 :2007/03/26(月) 10:29:04 ID:jn+p2f5C
例外キャッチするって言う手もあるか すっかり頭から抜け落ちてた。 getRequest()->getParams()['controller']とgetRequest()->getControllerName() を較べるのはまずいっぽい。_forwardしたときに呼ばれちゃう・・・ 例外キャッチにしようかな まあ、どっちにしても1.0までには指針を示してくれるのだろうか? ところで、Validateチェーンって $breakChainOnFailure を true にしなければgetMessages() で全てのエラーメッセージを配列で受け取れる仕様じゃないんでしょうか? どうも期待通り動かなくて、ソースを見たところ $this->_messages = $this->_messages + $validator->getMessages(); となっています。 こういうのってarray_merge使わないとだめだったようなきがするんですけど勘違いでしょうか? それとも最初エラーメッセージだけ帰ってくるのが動き的にあってるのでしょうか? 話は違いますが 0.9.1がでてますね。早く正式リリースされないかな
168 :
nobodyさん :2007/03/26(月) 11:28:00 ID:B9eaVhyg
2重投稿防止の処理ってなんかあるの? 今までは自前でセッションとリクエスト比較して来たんですが。
そんな高級な機能がZFにあるわけないです
170 :
168 :2007/03/26(月) 12:52:34 ID:???
171 :
nobodyさん :2007/04/01(日) 11:53:09 ID:sAfc6g3U
Controllerを使って推奨のディレクトリ構成で構築したとき 例えばあるviewにスタイルシートを埋め込むとき、 Frontを起動したindex.phpから見たパスになるんじゃないんでしょうか? 相対パスで <link href="styles/hoge.css" rel="stylesheet" type="text/css" /> とやっても認識されず、 <link href="/styles/hoge.css" rel="stylesheet" type="text/css" /> と、ドメインを省いた絶対パス指定じゃないと認識しないのですが、これしか方法ないのでしょうか? それとも、相対パス指定が間違ってますでしょうか? 絶対パスでも良いんですけど、dreamweaverで認識しないので、ちょっと面倒かなと・・・
あった、ZFcheckDoublePost
>>171 mod_rewriteの設定は修正したのか?
174 :
nobodyさん :2007/04/01(日) 15:41:17 ID:sAfc6g3U
>>173 .htaccessは
RewriteEngine on
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php
となっています。
変わったのでしょうか?
そのcssのURLもrewriteされてるんじゃないかと 思ったんだけどcssだから大丈夫か 相対パスはindex.phpからのであってるよ
176 :
nobodyさん :2007/04/01(日) 19:08:42 ID:+UiPUal0
>>171 画像やスタイルシートはドキュメントルートからのパスになるだろ?
177 :
171 :2007/04/01(日) 19:14:37 ID:sAfc6g3U
>>175 レスサンクス
どうやらリクエストしたURLの階層から見た相対パスになってるみたいです。
たとえばURLが
http://www.hoge.jp/foo/bar/ だとして、ドキュメントルートにstylesフォルダがあるとすると
スタイルシートは
<link href="../../styles/foobar.css" rel="stylesheet" type="text/css" />
で認識しました。
formのactionも、foo/bar/とすると
http://www.hoge.jp/foo/bar/foo/bar/ にpostします。
これは挙動としておかしいってことでしょうか?
なにか、設定が間違ってる?
baseUrlあたりがくさいと思い、var_dumpしてみたら
["_baseUrl:protected"] => string(1) "/"
になってます。
他のみなさんも
>>175 さんのご指摘どおり
index.phpからのパスになってるのでしょうか?
でも、そうじゃないと、アクション省略したときと、指定したときで、めんどくさい事になりますよね?
ちなみに0.9.1です
<link href="/styles/foobar.css" rel="stylesheet" type="text/css" /> でいいんじゃないの?
<base href= で相対リンクの基準指定しておけばOK
180 :
nobodyさん :2007/04/01(日) 22:32:21 ID:sAfc6g3U
>>179 ほうほう、そのタグ知らんかった・・・
サンクス
<base href="
http://www.hoge.jp/ " />
で、いけました。
しかし、他のmod_rewriteを使ってURIを置き換えるようなフレームワークも
みんな、絶対パスか<base href="">を使ってやるモンなのでしょうか?
たしかに、いたってデフォルトの動きっぽいですけど。
んなわきゃない baseタグ使うとかバカげてる ほんとにrewrite効いてるのか?
>>154-167 遅レスだけど、単純に
$front = Zend_Controller_Front::getInstance();
$front->run("/path/to/controllers");
$res = $front->getResponse();
if ($res->isException()) header("Location:
http://localhost/ ");
とかじゃダメ? 話が違う?
header のところを 404 を出す処理にでも変えればいいような気がする。
183 :
180 :2007/04/02(月) 08:46:24 ID:UNZvnAmN
>>181 まじですか?
適切なコントローラとアクションに振り分けられるので
たぶんrewrite自体はは聞いてます
ちなみにindex.phpのコードをさらすと
$controller = Zend_Controller_Front::getInstance();
$config=GomoConfig::getInstance();
$controller
->setControllerDirectory('path/to/controller','default')
->throwExceptions(true);
try{
$response = $controller->dispatch();
} catch (Zend_Controller_Dispatcher_Exception $e) {
$controller->setDefaultControllerName('notfind');
$controller->setParam('useDefaultControllerAlways',true);
$response = $controller->dispatch();
}
こんな感じです。
apacheの設定関連でしょうか?
mod_rewriteの設定でRewriteBaseというのがあったので
ドキュメントルートのパスを設定したり、"/"のみを設定してみましたが、駄目でした。
どの辺を見直せば良さそうですかね?
ご意見ありましたらよろしくお願いします
184 :
180 :2007/04/02(月) 10:01:33 ID:YVop49f1
>>181 違ったらすいませんが、
もしかして
>>178 さんみたいに"/"から指定してないですか?
<link href="/styles/foobar.css" rel="stylesheet" type="text/css" />
それならうごくんです。というか、絶対パスだし。
う〜ん、ちょっとsymfonyのスレで確認してみます。
>>184 どっちのスレで答えるか迷ったけどsymfonyで自動生成されるタグは
絶対パスになってる。
CSSとか画像へのリクエストはクライアントのブラウザがリクエスト
するものだからブラウザに表示されてるURLからの相対パスで
不思議じゃない。
186 :
181 :2007/04/02(月) 19:11:38 ID:???
ごめん俺が間違ってた 相対パスで試したら余裕で無理だったなんか勘違いしてた よくよく考えたらURLをrewriteする場合に 相対パスでリソース指定なんてした事なかった 今は反省している 普通絶対パス指定だな あとdreamweaverはサイト設定したら 認識してくれるもんじゃないかね
187 :
184 :2007/04/03(火) 00:18:05 ID:3FiNTxl4
>>184 レスありがとうです。
symfonyのほうでもレス頂きましたが、すっきりしました。
>>186 いえいえ、そんなに反省しなくてもw
勘違いは誰にもあるし
サイト設定はすっかり忘れてました
試してみます
サンクス
1人5万とかぼろい商売やってんなあゼンドジャパン
9.2きた!
>>188 もちろん、もらえる。
費用に含まれてる。
5万でノートPCもらえるの?
おまえら常識で物考えろw
ゼンドの糞高い独自資格保持者の指導じゃないの? まあゼンドエンジンを無料で使っておいて、いまさらゼンドを馬鹿にできる立場じゃないだろうが。 他のPHPエンジンを選択して使えれば良いのにな。
Zendはともかく ゼンドジャパンがあまりレベル高いと思えないのは俺だけ?
みつまJAPANぐらいだよな レベル高いの
197 :
188 :2007/04/08(日) 18:08:08 ID:???
>>197 君学生でしょ?1日講習で5万とか普通。
だからといって、その講習にそれだけの価値があるかといえば・・・。
昔 Oracle の一日講習会で 10 万ってのにビビったことがある 会社がお金を出してくれるんでなかったら、自分じゃ行ってないな
講習会なんか行くよりググったほうがためになる
安っ!100人分申し込んだ
俺が口臭をyoutubeで流してやるよ!
205 :
nobodyさん :2007/04/14(土) 23:56:03 ID:6HoqK2AI
みなさんZend_Mailはつかってますか? 日本語どうしてます? $mail = new Zend_Mail('iso-2022-jp'); でインスタンス化してmb_convert_encodingでiso-2022-jpにした文字を addしていってもエンコードがquotedprintableだから本文文字化けしちゃいます。 エンコードをBASE64に切り替える方法って解りますか? mb_convert_encoding も面倒だからsend時のtransportを mb_send_mailを使った物に変えちゃおうかとも思ったんだけど エンコードで引っかかりますね。quotedprintableはダメよって。 あと、 iso-2022-jpを文字コードに指定するな、みたいなエラーも出てたけど mb_send_mailはheaderに文字コード指定しちゃいけないのかな?
>>205 Zend_Mail関連は少し前のバージョンでちょっと使ってみたけど
UTF-8で長いサブジェクトのメールだとなんかうまくいかなくて
さんざんソース追いまくった挙句どうもバグっぽかったので
結局mb_encode_mimeheaderで自前でBASE64エンコードしたのを
セットするっていうこれじゃビルトインのmail()使ってんのとかわんねー的な
方法に落ち着いた記憶があるw
今昔のソース見てみたら
$mail = new Zend_Mail('UTF-8');
・・・
$mp = $mail->setBodyHtml($html);
$mp->encoding = Zend_Mime::ENCODING_QUOTEDPRINTABLE;
こんな感じだったのでこれをBASE64にすればいけるんじゃないかな
正直ZendのMail関連はまだ色々安定してない感じがした
枯れてるという意味でまだPEARのMailライブラリの方が
素直に動いて安定はしている(E_NOTICE出るバグは残ってたけど、、)
今はどうかわからないけど参考までに
どちらにせよmb_send_mailは使わないかな
207 :
205 :2007/04/15(日) 04:41:44 ID:f7ZVC+MY
>>206 レスありがとうございます。
携帯のメールで四苦八苦してたんですけど
本文は文字コードiso-2022-jpでエンコードは7bitみたいですね
勘違いしてました。私のメイン携帯のSoftBANKはcontents-type指定してやれば
UTF-8でも正しく表示されるのですが、ウィルコムとか、試してないけどたぶんDOCOMOとかって
iso-2022-jp 7bitじゃにとだめっぽいですね。
まあ、それはあんまり関係ないので置いといて^^;
206さんが試したときのバージョンだと>setBodyHtmlはZend_Mime_Partを返してたみたいですね。
0.9.2は
return $this;
になってるので、
$mail->setBodyText(mb_convert_encoding("日本語本文",'iso-2022-jp'));
$mp=$mail->getBodyText();
$mp->encoding = Zend_Mime::ENCODING_7BIT;
とやらないとだめっぽいのかな。
いちおうこれで文字化けしないでウィルコムいけました。
PCやSoftBANK(AUやDOCOMO試してないのでわかりませんが)ならUTF-8(内部エンコーディング)
で、ぜんぜん問題ないのでいいのでが、携帯も視野に入れると、いちいちmb_convert_encodingしなきゃならないので
面倒だから、mb_send_mailで出来ないのかなと思ったわけでして。
Zend_Mailもnewしたときの文字コードに全部自動変換してくれれば楽なのに・・・
自動変換するように拡張しようかな。
transporterをmb_send_mailに変えるよりその方がよさそうですね。
\(^o^)/ \(^o^)/ zend frameworkオワタ ) ) ノ ノ (((( > ̄ > )))) \(^o^)/ ((( < ̄< )))) ) ) ((( > ̄ > )))) code igniterハジマタ
209 :
205 :2007/04/15(日) 16:11:36 ID:f7ZVC+MY
とりあえずいまのところ日本語メールはサポート外って感じですね。 問題はquotedprintableでエンコードしちゃうところ。 本文なんかは上の方法で変えられるけど、ヘッダーは強制的に quotedprintableでエンコードされちゃう。 とりあえず、add、set系で日本語入れる可能性のあるものを オバーライト(ド?)して自動的に文字コードを_charsetにしちゃうようにして 本文のsetはエンコードをENCODING_7BITに、ヘッダーはBASE64にしたら だいたいOKな感じ。 まあ、まだベータだし今後に期待かな。
210 :
nobodyさん :2007/04/16(月) 12:14:45 ID:l/zxgJId
view内でmodule名を常に取得したいんですが、一々Assignするの面倒なんで何か良い方法ないでしょうか? init使うってのも考えたんですが他にスマートな方法とかないでしょうか?
212 :
nobodyさん :2007/04/22(日) 08:57:19 ID:xZDJWmeU
>>211 Pluginを使う
これも嫌なら知らん
214 :
nobodyさん :2007/04/23(月) 16:40:00 ID:LAYu+KhN
215 :
nobodyさん :2007/04/25(水) 08:36:25 ID:Oh3IjITm
0.9.2リリースから、かれこれ20日が経過しようとしてるが・・・ このペースだと1.0リリースは年内ぎりぎりいっぱいって感じ? 大丈夫か?この開発ペース。
たった一人の開発者が風邪で寝込んでるらしい
zendstudioみたいに有料配布ならもっと人員割り当てられるだろうけどねえ。 オープンで利益が見込めない以上、待つしか無い。orz
オープンソースで利益が見込めないってのがいかにも後進国日本の発想
219 :
nobodyさん :2007/04/27(金) 19:55:00 ID:oQ0Q4Rp/
Routerでそういう風にルーティングすればいいだけ
221 :
nobodyさん :2007/04/28(土) 02:09:27 ID:tgkVshtz
>>168 >>172 にあるZFcheckDoublePostって今もうないですよね?
何か別の名前になってるのでしょうか?
二重投稿防止があるなら自作しないで使っちゃいたいんですけど・・・
前から気になっていたんだが、 Frameworkって、functionやclassの詰め合わせみたいなもんでいいのかな?
フレームワークの側がおまいの書いたfunctionやclassを、うまいこと呼び出してくれるってのも着眼点の一つ。
224 :
221 :2007/04/29(日) 22:27:25 ID:o45ltyhE
>>223 「Don't call me, we. call you.」ってやつでしょうか?
ところで
もしかして二重投稿防止機能ってデフォでついてる?
フォームに入力した文字を何のヴァリデイトも無しに、単純にDB登録する物作って
submit連射してみたんですけど、一個しか登録されません。
Keep Aliveが切れるの待ってかなりいっぱい連射してみたけど登録されるのは一個だけです。
マニュアルにありますか?ちょっと探してみたけど見つからないのですが。
225 :
nobodyさん :2007/04/30(月) 12:42:34 ID:xadrbgql
class内で他のオブジェクトのメンバー変数にアクセスするとき function hoge(){ $other_instance->foo='bar'; } は普通に動きます。で、その変数を動的に変えたいとき function hoge($name){ $other_instance->$name='bar'; } これも動きました。 ところが$nameの部分をそのクラスのメンバにして、他のメソッドからも使いたいとき function hoge(){ $other_instance->$this->name='bar'; } にすると$thisの時点で展開され、stringに出来ませんって言われます。 __toString()を使うのもなんか違う感じがするし、 各メソッドで、 $name=$this->name; と代入してやれば動くけど、メモリ無駄遣いしてる感じもするし。 なんかほかにいい書き方ありませんでしょうか? お願いいたします。
226 :
225 :2007/04/30(月) 12:43:47 ID:???
あ、すいません。書くとこ間違えました。 PHPのくだらねえ〜版に書くつもりで・・・ あっちへ行きます。
ここにレスするのもあれだが 求めてるのはこれだろうか $other_instance->{$this->name} = 'bar';
228 :
255 :2007/04/30(月) 15:30:48 ID:???
>>227 サンクス!
そうか。そう書けばよいのか。
1.0はまだ当分でないかな。 0.9.2で停止してるし。
たった一人の開発者が退社しますた
>>230 病気じゃなかったのかw
どうすんだよw
>>230 あながち冗談でもなさそうな。
でもあれならほかの人でも引き継ぎできそうだよ。
foreachの中でreturnしたらメモリリーク起こすのって PHP5の何以下だっけ? たしかZFのソースの中に書いてあったんだけど
一人で儲かる訳でもないプロジェクトやるのはモチベーション保てなかったか。 仕切り直しのZF2.0は何をベースにするのだろう? 日本人的にはちいたんなのか?(w
いやZend的には儲かるだろ 普及のための戦略製品じゃん、一応
>>230 これが事実だとすると
また仕様が変わるのね。
ネタだろ
おまえらが釣られてるのか釣られてるフリをしてる おまえらに俺が釣られてるのか分からないが 普通に開発進んでるし0.9.3が5/4でcode freezeだよ あとzend所属の人もいるみたいだけどZFは基本オープンソースだろうに
こんだけまってまだ9.3とか冨樫の連載ペースかよw
240 :
nobodyさん :2007/05/02(水) 16:55:25 ID:CN0ZcYu0
241 :
nobodyさん :2007/05/03(木) 00:13:22 ID:B994S/bS
とりあえず、1.0リリースしちゃえば良いんじゃないの? 後からシコシコ直せば。 どうせNew BSDライセンスだから,なんかあってもzendが責任負うわけじゃないしw 意外に?生真面目な会社なのかね? というか、オープンソースって正式リリースは誰が決めるの?
配布元のZendでしょ。 オープンソースってコピーし放題なのにどうやって儲けるの? ダウンロードできるのにインストールCD買うアフォって居るの?
243 :
nobodyさん :2007/05/03(木) 00:32:07 ID:B994S/bS
>>242 普及させて、ZendGuardとかStudioを売ったり、有料サポート(あるのか知らないけど)とか、セミナー?とかで設けるんじゃないの?
あと、Zendって会社名だって、PHPのおかけで業界じゃ知らない人いないし、宣伝費も浮く。
まあ、でも不思議だよね。オープンソースって。
全然不思議じゃないだろ PHPが普及すればするほど儲かる会社なんだから というかZFなんかで金取る方がおかしいだろ常識で考えて
>>242 >オープンソースってコピーし放題なのにどうやって儲けるの?
>ダウンロードできるのにインストールCD買うアフォって居るの?
発想が貧困すぎ。
有料ソフトウェア会社が倒産して、オープンソース化して利益を得ている
Blender Foundationのケースでも勉強して出直してきなさい。
246 :
nobodyさん :2007/05/03(木) 16:35:15 ID:B994S/bS
改行除去なんてされないが
248 :
246 :2007/05/03(木) 21:03:07 ID:???
>>247 今ちょっと思い立ってFirefoxでためしたら改行されなかった。
普段使っているSleipnirでは改行なくなる。IEでもなくなる。
なんかIEの設定っぽいけど
SleipnirのレンダリングエンジンをGekkoにしてお茶を濁します
249 :
nobodyさん :2007/05/07(月) 16:14:50 ID:rh9t4bwF
0.9.3 Releaseあげ
これだけ待たせて 0.9.3 か〜……
>>251 そんな文句言ってると、今度からバージョンの桁数さらに増やされるぞ。
0.9.3.0.0.1
0.9.3.0.0.2
0.9.3.0.0.4
253 :
nobodyさん :2007/05/08(火) 09:20:31 ID:nxCKFKFF
中の人「もう1.0でいいんじゃね?」
0.9.9に達したら再び減りだします
0.9.9から長そうだな 0.9.9.1 0.9.9.2 0.9.9.3 ・ ・ ・ 0.9.9.9.1
2050年の2ch 【何より】ZF0.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9遂にリリース!【めでたい】
ZFのバージョン番号 V.S. 円周率
TeXのバージョン番号かよw
まぁ増やさなくても 0.9.9 の次は 0.9.10 でいいじゃん 【とうとう】ZF0.9.1000遂にリリース!【四桁】
2007/05 0.9.3 2007/07 0.9.4 2007/09 0.9.6 2007/11 0.9.8 2007/12 0.9.9 2008/10 0.10.0 orz
Zend.php ってなくなったの?
0.9あたりでdeprecatedになって 0.9.3で完全にファイルもなくなった Zend.phpにあったメソッドはそれぞれ別のクラスに移動してる
263 :
nobodyさん :2007/05/11(金) 00:22:17 ID:dMG3cwh5
このスレの
>>150 〜
>>170 で話題になってのをまね?して
404的ページに飛ばすのに
index.phpで(一部省略)
$controller = Zend_Controller_Front::getInstance();
$controller ->throwExceptions(true);
try{
$controller->dispatch();
} catch (Zend_Controller_Dispatcher_Exception $e) {
$controller->setDefaultControllerName('notfind');←このindexActionに404ページを表示するようスクリプティング
$controller->setParam('useDefaultControllerAlways',true);
$controller->dispatch();
}
ってやってたんだけど
093で
Default_NotfindControllerが見つかりませんって例外が投げられちゃうようになった。
コントローラーのクラス名をDefault_NotfindControllerに変えたら前の通り動いたんですけど、いまいちしゃっきりしません。
他のコントローラーは普通に動いてたので
マニュアルちょっと見たけど、出てないっぽいですけど(見逃してたらすんません)
setParam('useDefaultControllerAlways',true)←これすると
コントローラーの頭にDefault_ってつけなきゃいけなくなったのでしょうか?
それとも何か他が原因でしょうか?
>>262-263 そーだったのか…
0.9.3にアップグレードしたら動かないんだもん
頼むよゼンドさん
更新に合わせて修正してたけどもうつきあっててられん。 1.0になってからやる。
>>265 ふむ
確かにそうですね。
beta何だから当たり前と言われればそれまでですが
にして開発遅すぎる!!!
がんばれZEND!!
マジで遅すぎる!!
Zend「PHPなんてだっせーよな!Rubyやろうぜ!」
開発遅いとかではなくて、コロコロ仕様変更すんな!ってことだろ。
Rubyは作者がきもちわるいから…
phpはzendに金玉握られてるけどな。
Rubyの作者は、
>>269 に比べたら、まっとうな人間。
2月から隔月で開催しております「Zend Framework Code Camp」も第3回を迎えました。 テキストも一部更改し、弊社アーキテクトを講師として、2日間に渡って開催します。 PHPフレームワークの本命「Zend Framework」をハンズオンセミナー形式で、 インストールから使用方法まで詳細に学べる2日間です。一人に1台のマシンを完備し、 理解度も大幅アップするセミナーとなっております。ぜひ、お越しください。 日時:2007年6月13日(水)から6月14日(木) 10:00〜17:00 場所:IBM東京イノベーションセンター 渋谷区道玄坂一丁目12-1(渋谷マークシティウエスト18階) 費用:1名様あたり 早期割引(5月29日申込分まで):52,500円(消費税込み) 通常料金:63,000円(消費税込み) ZF教えて60000てボッタクリすぎだろ こんなの教えてもらわないと使えない奴なんざ ハナから使えねーっての
>>274 まぁまぁ、別スレでも書いた気がするけど、
そんなものだよ、金額。2日でその金額だと、むしろ安いほうに入るかも。
自分は行く必要性全くないと思ってても、会社で無理矢理行かされることもある。
超絶苦痛だがな・・・。
素人に対してどういうふうに教えるかという、先生役のスキルを磨くと思って参加するしか。
>>272 大好きなrubyを馬鹿にされて興奮しちゃっただけだよ
277 :
nobodyさん :2007/05/29(火) 13:24:50 ID:afdgnzAT
1.0.0 RC1 リリース上げ
さっそくDLしますた。 ってか、ここはどの板ですか。
1.0.0RC1 萌え
待ちわびたぞ・・・1.0・・・
次はRC1.01だ
そこまで愚図だったら、どうすんだ。 まぁ俺には作れないから文句言わないで使わせてもらうが。
283 :
nobodyさん :2007/05/30(水) 08:09:35 ID:amo3UjDj
おおおお!! きたね!!
ZF が載ってる本ってないの?
公式のマニュアルだけで十分じゃね?
QuickForm_Controller 的なことがしたいけど、よくわからなくて… Zend_Filter, Zend_Validate 使って自分でゴリゴリ書くのかな 誰か本だしてけろ
287 :
nobodyさん :2007/05/31(木) 23:58:46 ID:gup0HDto
PHPの薬箱なら基本的な使い方書いてあるけど
>>216 ,230の流れはZend Frameworkの開発者が、という事?
289 :
nobodyさん :2007/06/01(金) 08:55:41 ID:2oVaVYFS
404簡単にできるようになりましたね。
開発、ここ見てるんじゃねえか?・・・
んなわけないかw
誰もが思うことだもんね。
で
ttp://framework.zend.com/manual/ja/zend.controller.plugins.html#zend.controller.plugins.standard.errorhandler ここの
$errors = $this->_getRequest('error_handler');
は
$errors = $this->_getParam('error_handler');
の間違いっぽい?
>>287 PHPの薬箱は読んでそんはない本だけど、ZFの解説としては、古すぎてやめて方がよい。
PCの画面で見るの嫌なら、公式のマニュアルプリントアウトして読めば〜
>>286 今作ってるシステムでは、formの生成はSmartyでやって
ヴァリデイトとフィルタリングを一気に行うNormalizeなるクラスを作って、
飛んできたパラメータを一気に渡して処理してみてる。
その際、formのnameとカラム名が違う場合、カラム名のマッピングもこのクラスでやっちゃう。
パラメーターをDBに対応させる処理は、こいつに全責任を持たせる感じかな。
意外といろんなページで使うparamって共通してて、その辺を親にクラスまとめると新しいページ用の
Normalizeクラスを作るのはさくっとできて楽かも。
pear見たいに、form生成時とヴァリデイトルールの設定が一カ所でできるのもわかりやすくて良いかな〜とも思ってる。
でも、ページ数増えると、コピペが増えて、メンテナンス性が損なわれそうな気も。
なんか良いアイデアあったら教えてください。
290 :
nobodyさん :2007/06/03(日) 10:11:37 ID:0nGDIlTx
先生、Smarty使いたいんですけど、 誰か代わりにググってください
292 :
nobodyさん :2007/06/03(日) 11:57:07 ID:0nGDIlTx
>>287 PHPの薬箱は読んだけど、あんまり役に立ちそうにないかも…
もうちと突っ込んだ内容がほしーす。
>>289 やっぱ自分で書くことが多いよね ZF は。
symfony みたいにビューヘルパーで生成したフォームを
そのままバリデートできると便利なのに。
っで、結局 ZF に QuickForm いれて使ってるけど、ちょーきもい。
みんなはフォームの確認画面とかどーしてるんだろ…
Zend_Authの使い方がいまいちわからない
295 :
nobodyさん :2007/06/03(日) 22:19:43 ID:JuAs3UiO
296 :
nobodyさん :2007/06/03(日) 23:42:09 ID:aDzga603
Smartyなんて使わないからどうでもいいが やるなら自前でViewもヘルパも作るな てかinterface作ったんならもうそんなに コード綺麗じゃなくてもいいからZend_View_Smartyを さっさと実装してとりあえず突っ込みゃいいのにとは思うが てかもうZend_Viewが糞もうほんと糞 しかもデフォルトじゃviewディレクトリ以下で また3つのディレクトリに分かれるようになってる? あーもう1.0間際になってアクションヘルパやらなんやら 色々突っ込みやがって夏休みの宿題じゃねーんだぞボケが
zendなんて使うからだよ)^o^(
>>296 >コントローラー内にSmartyのインスタンスを保持して使うか・・・
これはMVC的には普通アリエナイ。
なんでよVへassignするために一応Cから アクセスできるようにするってことだろ まあassignするものまとめて最後に Vへ登録するのがベターかもしれないけど MVC的にありえないって話でもないんじゃねーの
コントローラーにsetParamとかできるんだから使っていけばいいんじゃね
302 :
nobodyさん :2007/06/04(月) 12:41:14 ID:28BocCFw
303 :
nobodyさん :2007/06/05(火) 09:38:25 ID:UTW3hgPe
>>296 のマニュアルあるようにinterfaceくっつけたsmarty作ってみたけど
そのままではViewRenderer使えないね。
なんか足りないメソッドもあるし、しかもテンプレートのパスを決めるのに
Zend_requestかなんかのインスタンスが帰ってくるから
そっからパスを抽出してセットするロジックを実装しないとだめみたい。
まだよくソース見てないし、ちょっといじっただけだからはっきりわからないけど。
うまく動かせた人、情報お願い
304 :
nobodyさん :2007/06/06(水) 20:13:13 ID:QBphBxXc
Smartyにインターフェイスくっつけるのって ViewRendererに突っ込んでも動かないってことは 要するにZendViewに慣れた人が扱いやすいからですよね? Smarty単体ではできないViewRendererのおいしい所は わざわざコントローラーでdisplay()しなくても、自動的に表示してくれる とこなのかな? ってことはアクションヘルパーを書いて自動でdisplay()するようにすれば Smartyに慣れた人が多い環境では、わざわざZendViewInterfaceをくっつけて使う必要はないような 気がしません? いや、気がしてきた!うん! ZFって柔軟に作ってくれてるし、ZendView使っておかないと、後々面倒なことになることもなさそうだし・・・
正式版でるまでは自分でヘルパーとか書くのもったいない気がする 仕様変更するし
RC2ktkr!!
誰か本スレ7たてて頼む
俺も立てれない ちんぽは立ってるんだが…
309 :
nobodyさん :2007/06/09(土) 09:52:52 ID:6f8TWb7Z
310 :
304 :2007/06/10(日) 01:40:17 ID:T42YmVZb
Zend_Controller_Frontを継承して、 ViewRendererにZend_View_Smartyを渡すように書き換えて、 getInstanceコピペしたら使えるようになったんだけど、 これで良いのか?
Frontを継承するとか勘弁してくれ
313 :
nobodyさん :2007/06/10(日) 15:01:03 ID:T42YmVZb
>>313 もちろん
>>310 の二つのメソッド追加して、
ついでにInterfaceじゃなくてAbstract使うようにして、
_runメソッド追加。
後ろ2行はいらないと思うけど、Interface使った方は試してないから動くかわかんない。
あとsetView()するタイミングがよくわかんなかったから、
コンストラクタでViewRendererのインスタンス生成するときに
Zend_View_Smartyのインスタンスを渡すようにした。
Smartyを使うには・・・みたいのぐぐったらあったぞ 俺は興味なかったからスルーしたけど
流れブッタ切ってすみません。 views/index/index.phtmlから他のディレクトリの view/parts/header.phtmlを読みこみたい場合はどうすればいいんでしょうか。
読み込めばいいんじゃね?
$this->render('parts/header.php'); と書くとエラーが出るんです。。
$this->view->render(); じゃね? アクションコントローラーから呼ぶ場合な
もしかしてアクションコントローラーから呼ぶの普通ですか?
Zend_Filter_Input って日本語マニュアルがないね
Layoutぐらい標準で付けたらいいのに、あとPagerも
324 :
nobodyさん :2007/06/14(木) 22:56:10 ID:K2VOGFDY
公式のチュウトリアルないん?
325 :
nobodyさん :2007/06/15(金) 00:08:18 ID:TFCVM0JE
ぐぐれかす
ちゅうとりあるで最新verに対応してるとこねーよな 0.6くらいのやつばっかり
ひっぱりすぎて飽きられました(´・(ェ)・`)
CIいいけど、そこまで宣伝されると気持ち悪いからやめてくれ。CI好きならなおさら。
なんか悪意を感じるよね。
331 :
328 :2007/06/16(土) 09:01:31 ID:???
釣られませんよw
軽くぐぐったらCIでZendFramework使うチュートリアルとかあるじゃん
ググレ無いカス(w
viewのformRadioでid属性が付けれないんですが…
340 :
nobodyさん :2007/06/19(火) 13:40:12 ID:ZBm9eEIZ
viewへるぱ使う奴がいるのか・・・
343 :
nobodyさん :2007/06/19(火) 16:20:14 ID:ZBm9eEIZ
Zend_Viewはほんと酷い
1.0になってもLayout付けないのかな・・ plug-inでやるしかないのか
zendはまだつかうきにならないな
symfonyで流れを組んでzendで関数つくるのがいいと思われ
348 :
nobodyさん :2007/06/25(月) 18:35:10 ID:tR2eId4K
RC3きたあげ
349 :
nobodyさん :2007/06/26(火) 04:26:20 ID:vrMRT0CA
350 :
nobodyさん :2007/06/26(火) 05:26:19 ID:ByBI6HRp
>>349 Routerのルーティング設定でどうとでもできる
マニュアル嫁
>>350 こっちは自前でRouter作るしかなさそう
てかなんで今更query_stringからController/Actionを決める古いやり方を、、
352 :
nobodyさん :2007/06/26(火) 19:19:12 ID:PKXMvhY5
フレームワークってライブラリと何が違うの?
ライブラリはおまえが呼ぶように書く フレームワークは呼ばれるところに書く
354 :
nobodyさん :2007/06/26(火) 20:58:09 ID:+m1wrnTY
最近では、MVCを提供してるかどうかだな。
>>353 うわ〜、それ頂き!
人に教える時なんて言ったら解りやすいのか悩んでた!
MVCとか言うと、やる気なくすし。
>>349-351 まったくの門外漢だが、Zend Framework てそういうのもセットになってるの?
.htaccess の mod_rewrite ?
railsの影響かと思ってしまうが、そういうのが新しいの?
トレンドに詳しい人の解説があれば嬉しいです。
ScriptAlias を使ったPATH_INFOでの引数渡しは相当初期からあったと思うが、
レンタルサーバで不可能な方法だしなによりCGI対象なため?PHPユーザレベルに
は全く広まってない。使いたかったけど。
>>350 は汎用性がある唯一のやり方だとは思う。
>>356 PHPユーザレベルには全く広まってない、ってのはさすがに違和感
主要PHPFWはだいぶ前からmod_rewriteベースだし
レンタルサーバも今は大概htaccessでmod_rewrite使えるよ
そういうのもセットというかmod_rewrite使えること前提で
Controller(Router)が構成されてる、これはZFに限らず、
symfony/cake/codeigniterとかもそのはず
むしろ
>>350 形式のようなquery stringからルーティングする方式は
最近のFWではもうほとんどサポートされてないような
mojaviとかmojaviベースな国内FWとかくらい?
レスありがとう。
> 広まってない
は、ScriptAlias の方ね。それも実際はそうでも無いのかも知れないけど。
今は、mod_rewriteさまさまな状況なのかなぁというのは少し前から感じてたので、
本当にそういう流れなのかなという確認です。
確かに便利だけど、少し前は使えるところもあんまり無かったし、重くなるとか
いろいろ言われてたし。
これも (railsなど含む、PHPにかぎらない) フレームワークの力かな。
> むしろ
>>350 形式のようなquery stringからルーティングする方式は
> 最近のFWではもうほとんどサポートされてないような
前に触ったときは、CakePHPはサポートしてたよ。mod_rewrite なくても大丈夫って。
Zend_View Enhancedってよさげ
360 :
350 :2007/06/27(水) 23:08:11 ID:I/EFS+XL
>>351 http://2ch.net/login/ でログインのフォームを表示するページの場合
controller=login
action=index
ってするとして、、、
<form action="/login/" method="post">
みたいなフォームでデータを送信したときに
<input type="hidden" name="action" value="login">
で、
controller=login
action=login
みたいにしたいな〜と思ったんです。
>>360 URIパスマッピング=ルーティングに、POSTの話し混在させるのがよくワカランけど
やりたいならルータコントローラーを拡張すればいいんじゃないの。出来るでしょ。
でも普通はパラメタで処理するよ、そういうのは。
>>362 >
http://example.com/index.php/foo/bar/ この 〜〜.phpがいやーんな時に使いたいのが ScriptAlias かな?
mod_php で使えるのかは知らないが。
でもこれだと、画像やCSS,JavaScriptなど外部ファイルのURL指定は /img/hoge.gif みたいな絶対指定にする必要がある?
それは mod_rewrite つかう場合でも同じなのかな。みんなどうやってるんだろ。
>この 〜〜.phpがいやーんな時に使いたいのが ScriptAlias かな? まあそういうことかもしれんけど、 ScriptAlias 指定出来るサーバなんだったら 普通mod_rewrite使えるだろ。 >絶対指定 なんで?
>>350 indexでhiddenのactionの値見て振り分けるとか。
有料ならいらね( ゚д゚)、ペッ
どのクラスがzendの魅力なんだ。
369 :
nobodyさん :2007/06/29(金) 22:13:28 ID:u0ng+pVR
370 :
nobodyさん :2007/06/29(金) 22:22:03 ID:2SpZ3JSR
まだまだだろ?
ZFって純粋な利便性のためというより ゼンドが金儲けするために作ってるっぽくね? なんかうさんくせー
372 :
nobodyさん :2007/06/29(金) 22:36:46 ID:2SpZ3JSR
金儲けできるほどのクオリティのがタダで使えるならおいしいじゃん
いやいや 有料アタッチメントを売り込むための撒き餌って感じ で、実際はたいしたことないの。
ありがたく使える部分を使わせてもらおう。 フレームワークじゃなくライブラリなんだから。
セミナーみたいので馬鹿の金持ちから毟るんだろ
>>205-209 あたりで話題になってるけど、そのままだと、ZFって日本語のメールダメですよね?
>>210 あたりはオンボロ携帯を全く視野に入れてないだけ?
377 :
nobodyさん :2007/06/30(土) 23:59:58 ID:NoywJpgr
378 :
nobodyさん :2007/07/01(日) 01:23:26 ID:mg2cJt1/
>>346 まだそれほど良くソースみてないけど
本文やsubjectはquoted-printableでエンコードされるみたいじゃないですか?
しかも、対応してないので改造しないとBASE64にすることができない
ということです。
ほとんどの環境がquoted-printableに対応しているとはいえウィルコムの一部の機種や
古いリレーサーバーには対応してない物があると聞きました。
リレーサーバーはよく知りませんが、少なくともうちにあるウィルコムは文字化けしました。
そういう意味で、対応してないということです。
379 :
nobodyさん :2007/07/01(日) 16:06:36 ID:f6e/Y+9u
1.0.0 ktkr!!
1.0になったところで・・・
,. -‐'''''""¨¨¨ヽ (.___,,,... -ァァフ| あ…ありのまま 今 起こった事を話すぜ! |i i| }! }} //| |l、{ j} /,,ィ//| 『ZFは1.0になったと i|:!ヾ、_ノ/ u {:}//ヘ 思ったらいつのまにか終了していた』 |リ u' } ,ノ _,!V,ハ | /´fト、_{ル{,ィ'eラ , タ人 な… 何を言ってるのか わからねーと思うが /' ヾ|宀| {´,)⌒`/ |<ヽトiゝ おれも何をされたのかわからなかった… ,゙ / )ヽ iLレ u' | | ヾlトハ〉 |/_/ ハ !ニ⊇ '/:} V:::::ヽ 頭がどうにかなりそうだった… // 二二二7'T'' /u' __ /:::::::/`ヽ /'´r -―一ァ‐゙T´ '"´ /::::/-‐ \ 一人開発とか時代後れだとか / // 广¨´ /' /:::::/´ ̄`ヽ ⌒ヽ そんなチャチなもんじゃあ 断じてねえ ノ ' / ノ:::::`ー-、___/:::::// ヽ } _/`丶 /:::::::::::::::::::::::::: ̄`ー-{:::... イ もっと恐ろしいものの片鱗を味わったぜ…
Zend_Validate_AlnumってUTF-8の日本語だとtrueになっちゃうんですけど これも自分で調整しないと駄目なんでしょうかね・・・
383 :
nobodyさん :2007/07/01(日) 20:04:46 ID:eEsmHWC5
Zend_Authの使い方が解らないんですけど、Zend_Auth_Adapter_Interfaceをimplementsしたクラスは何処へ置けばいいのでしょうか。
ユーザー登録して、ログインしたら ユーザー専用ページが表示される っていうだけの簡単なサンプルとか公開してほしいな
386 :
nobodyさん :2007/07/01(日) 21:59:13 ID:KBDlHz5H
俺も作れませんが・・・w
388 :
383 :2007/07/01(日) 22:27:03 ID:???
すいません。 せっかく教えて頂いたんですが、英語でよく解りません。。 翻訳サイト等いろいろ駆使してみたんですが。。 ヒントだけでも頂けませんでしょうか。。 上記のサイトがそうだと言われたらぐぅの根もでませんが。。
>>386 AuthとかAclとかの使い方がいまいちわからないんです><
ていうか日本語のマニュアルあるんだから それをまずくまなく読めよ それでわからなかったらソース読めよ それができない奴はどんな凄いFW使ったって結局詰まるよ ZFは特にモジュール毎に分離されてて 一番ソースも読みやすいのに
結局validateとかプラグインとか自前で作りまくりで 全然フレームワークになってねー
違うFW使って、zendはライブラリとして使うのがお勧め。 CakePHPかCodeIgnaiterあたりがいい。そのままzendフォルダぶち込める
まじで一人で作ってるとか思えないクオリティー それがZF
394 :
378 :2007/07/02(月) 08:35:27 ID:BQ6KugYn
setBodyするときに3番目の引数でencoding指定できるようになってる。 よかったよかった
というかほんとに一人でつくってるんだよね
>>391 FWってその程度でいいんだよ。
流れだけ使えば。
397 :
nobodyさん :2007/07/03(火) 17:14:17 ID:EdzluZTx
Zend Frameworkは,スクリプト言語PHPで記述したアプリケーションを,Webアプリケーション化するオープンソースのフレームワーク。 開発作業には,2005年10月の発表からこれまでに230人の個人および企業系開発者が参加したという。
500日として、一人が二日に一日仕事すると延べ230人になるな。
なにその数字のマジックw
>>398 なるほど、その開発者が500日の内にフリーになったり再就職したりしてるわけだw
takagi神はもっと評価されるべき 本家やPHPUnitのドキュメントとかも翻訳してる人だよな?
403 :
nobodyさん :2007/07/04(水) 01:11:18 ID:y0LJklWR
aclとauthを使った認証システムを考えてて マニュアル読んでも、どうも、自信がない・・・ 例えば、ユーザーIDとパスがDBにしまってあって MyPageみたいに、ページによって、このユーザーは編集できる、とか出来ないとか、分けたいとき、 まず最初のリクエストで、セッションにログインしてるユーザー情報がなければ Authを使って、DBを調べ、パスとIDがあってたら、セッションに保存する。 で、同じリクエスト内で、そのページの編集が出来るユーザーとページのIDを(DBに問い合わせて) ACLに登録、さらにセッションに登録されている認証ユーザーもACLに登録し $acl->isAllowed('セッションのユーザーID', 'ページのID', 'edit') とやって、falseならアボーン。 だいたいこんな感じでしょうか?
404 :
383 :2007/07/04(水) 02:35:22 ID:???
>>390 遅くなりましたがソースざっとですが読んだら解りました。
バカな質問してたと理解しました。
すみません。。
そしてありがとうございました!
405 :
nobodyさん :2007/07/05(木) 01:23:08 ID:+SLXoMdw
Zend_Service_YouTubeキボンヌ
406 :
nobodyさん :2007/07/05(木) 01:29:30 ID:c737okI5
てか2ちゃんって何でこんなに人減ったんだ??? 芸スポも、n+もえらい減ってたぞ。。。
407 :
430 :2007/07/05(木) 04:00:54 ID:qisI43AQ
aclがどうも違うみたいですね・・・ これってRoleに登録されてないユーザーをisAllowedすると 例外投げるじゃないですか?で、認証かけたユーザーもaddRoleしようとすると、 先にDBに問い合わせて登録したユーザーと被ったときに例外投げる (つまり認証が成功するユーザーからの問い合わせの時に、そのRoleは既にいますと)。 と言うことはDBに登録されてるユーザー全員をRoleに登録して その全ページをリソースに登録して、しかも権利も登録して使う物なのですか? まさか、例外キャッチして・・・ってことはないですよね。 使いどころが良くわかりません・・・・ まあ、Authは便利なのでそれは使って、ユーザーが権利があるかどうかは 自分で実装できるので問題ないのですが 便利なのに、勘違いしていたらもったいないかな、とおもって。 ちなみに404とは別人です
>>407 なんかRoleの理解がおかしいような
管理画面にログインできる人が複数いるとして
一番偉い人だけが触れる画面とそうでない画面がある場合に
総合管理者(=super_admin)と一般管理者(=admin)みたいにRoleを分ける、
DBにはそれぞれの管理者ユーザはどのRoleなのか入ってる、
その場合実際に必要なRoleはadminとsuper_adminだけでしょ
411 :
407 :2007/07/07(土) 03:17:23 ID:???
案ずるより生むがやすしですね 作ってみたら、結構思い通りに出来ました お騒がせしてすんません。 acl便利ってか、いいですね
412 :
407 :2007/07/07(土) 03:36:58 ID:???
>>410 レスありがとうございます。
専ブラがうまく読み込めなくて、レス着いてないかと思って411のレスしちゃいました。
おっしゃるとおり、アクセスレベル的な要素(adminとかstaff、userなど)を、ユーザーに登録して
非常に楽に、色々なレベルでのアクセス制御を実現できました。
ただ、407を書いたときに疑問に思ったとおり、認証をかけたユーザーがすでにaddされていると
例外投げるので、事前に hasRoll(でしたっけ?)で、そのユーザーがいるか確かめてから
addすれば何の問題もなかったわけでして・・・
まあ、ちょっと複雑(ユーザーによって権限が違う)認証システム作るのがはじめてだったので
勘弁してくださいOTZ
filter_input使ったほうがソースが長くなって手間が増えるんだけどw
414 :
nobodyさん :2007/07/07(土) 20:53:32 ID:NqO9AG9o
(゚ε゚)キニシナイ!!
pdfかぁ
なんでこの平成の世にpdfなんて使うんだ・・・
ZendFrameworkっていま覚えても仕様がどんどん変更されそうで面倒だな。
さすがにどんどん変更ってことはないだろう。 微妙に変更はありそうだけど。
1.0にしちゃったからさすがにここからは APIや構成とかも後方互換性取りつつ直していくだろう 1.0にした以上実際に使う人も多くなるから これ以降もコロコロ仕様が変わるようだとMLが苦情で溢れるよ
互換性欲しい人はMaintenance Branch使えばOK
PagerはPEARの使うの?
restのリクエストでZFが勝手に変なパラメータつけるせいで youtubeAPIのレスポンス取得が失敗する
チラシの裏に書いてろ
>>415 のpdfはすごくよかったよ。チュートリアルとして。
現在、ZendFrameworkを利用した出会い系サイトのプロジェクトも
終了まじかです。
数年前に出会い系サイト作ったことあるけど 当時の様子見てもこれ何年も持たないなって雰囲気だったが 今でも新規案件とかあるんだねぇ……
ミクシィっていうでかい出会い系があるじゃない
キャッシュ作成のタイミングってデータ更新時じゃなくて、 アクセス時にやるの?
429 :
nobodyさん :2007/07/14(土) 15:33:19 ID:iLG/qrGc
キャッシュ作成ってかクリアだろ? 両方じゃね?
どっちでもいいんじゃね
Zend_Cacheを使って作成したキャッシュの作成日時って取得できる?
432 :
nobodyさん :2007/07/15(日) 08:55:28 ID:S10qjWJs
>>432 レスありがとう。
ないとなると、save()するときに日時を取得しとくとか、
Zend_Log関係で工夫するくらいしかないか。
ZFを使ったブログやCMSやSNSってまだないのかな プロジェクト等あったら教えて
>>434 激しく希望。
PHP4を引きずり続けるいやーな流れをぶった切るようなキラーアプリが欲しい。
MovableTypeやRuby on Railsの様に、レンサバの環境から変えてしまうような。
・・・ZFにそこまでの力があるかはおいておいて、とりあえずPHP5限定のすごい
アプリをつくってエロイ人
軽く調べたところだとZFでCMSを作っている人はいるようだ
438 :
nobodyさん :2007/07/15(日) 23:49:43 ID:S10qjWJs
まぁ、そういうの欲しいよね。 そっから勉強したいし
439 :
435 :2007/07/15(日) 23:52:28 ID:???
>>436 thx
ざっくり見てみたが、ZFのサンプルというか練習土台としていい感じ?
間違ってもキラーアプリにはなりそうにないが、読みやすいからこのままいじりたく
なるソースの様な気がする。
こういうのが、PHP4との互換性をごにょごにょしてて読めねーよてCMSとかを
押し流してくれたら・・・。
ただ、気になったのは、やっぱり
private static function _stripslashes(){〜〜}
を自分で定義とか
$hoge = isset($_POST['hoge']) ? $_POST['hoge']: '';
なのね。
Notice出まくるソースよりはいいが、この辺をフレームワークに取り込むとか
言う動きはないのかな?
結局DBのクラスが未完成だったからZend_Db使ってますってくらいだなー俺は。
>>133 の記事はZFのバージョンがかなり古い
リクエストもスーパーグローバルから取ってるし相当古い
(Requestすらcoreに入ってない時だったんだろうか)
てかチュートリアルやサンプルのアプリ待ってたんじゃ
FWなんざいつまで経っても使えないぜ
つかヘルプ割と充実してる気がするんだけど俺だけ?
>>442 でも、最新のソース(1.0.0)でもstripslashesは見あたらない。
.htaccess使う前提だから、そこに一行足せばいいと言えばそれまでかもだけど。
開発の早さだったらCakePHPの方が上かなぁ メンテだったらZFのような気がするけど
ZFが今のところsymfonyやcakeに比べて 素早く書ける仕組みだったり周辺ツールだったりが 色々足りてないのは異存ないが、 個人的にはcakeはコードが醜い、使う気にならない symfonyは今ある中では一番いいとは思うけど これもちょっと好みに合わない、 propelはとてもじゃないけど好きになれない
名古屋|A`)まーた揺れた
cakeならCIのがいいな
cakeってマジ糞だよね なんで流行ってるんかわからん 使うだけのやつにはいいのかね
どこが糞か説明してもらわんと納得もできない
449じゃないけど、やっぱ、ソース見づらいってのがあるんじゃないの。トレースするの疲れる。 ZFとか見やすいしな。
別にいいっちゃいいんだけどさ、 ZF: 基本PEARスタイル(スペース4) symfony: スペース2、ブレスで一行 cake: タブ CI: タブ、ブレスで一行 主要なFWで全部コーディングスタイルが違うってどうなのよっていう 比較しようとリーディングするのにも激萎えだよもうw どれがいいとかって話になるとまあ 宗教じみたものになるからアレだけど とりあえず揃えてくれよって思う (個人的にはPEARスタイル希望) まあそういう意味でもZFはやっぱソース追いやすいのはある
>>452 >cake: タブ
これがなあ。こっち側でタブ表示修正すればいいといえばいいんだけど
if (
isset(
) && ...............
)
こんなの最初に見た時は、何事かと思ったもんだ。
タブって結構嫌われてるのか? 環境によって見え方が違うっていうのは分かってるんだけど、 タブ=スペース4コが大多数だと思っていた。 考え方を改める事にするよ。 って言ってもおおっぴらに公開するようなモノもないけどさ。
455 :
453 :2007/07/17(火) 15:42:42 ID:???
いやまあ、452氏が言ってるようにタブなのかスペース(その数もあれこれ)なのかっていうのは 結局は神学論争の域だから論じても仕方がないことがあるんだけど、cakeのアレはさすがに・・っていう印象。
formatterで一気にソースを書き換えすれば解決? 他にも問題あり? > cake
そのユーザー名は既に使用さています っていうのはバリデータでやるのがいいの?ちがう?
>>456 実際にFW使うとなると拡張したりする作業は絶対に出てきて、
その時にFWのソースを読みつつ拡張していく事になるけど
それがcakeのソースある程度読んで
別に構わないと思うなら使ってもいいんじゃない
php4に対応する必要があるとかの理由がないなら
基本どれ使うかは好みっちゃ好みだし
>>458 結局ソース読まなきゃいけないことは確かにあるなぁ
だからどういう動きをしているのかとか利用者が多くて情報の多いFWの方がいいよね
うん、全部読まなくてもいいけど 何か必要に迫られた時に 深追いする気になれるコードかどうかってのは 見ておいた方がいいと言うか、 まあ結局FW使ってて深追いしない事なんて無いからw、 それだったら構成がすっきりしていて 自分が綺麗だと思えるコードの方がいいから
1.0以前の情報はいっぱいあるのに 1.0の情報がほとんど見つからない おまらどこみてんだよ
もう飽きたんや
ほんまかいな
完成するまでが楽しかってん。
悔しいっ 遊びだったのね
466 :
nobodyさん :2007/07/22(日) 21:56:14 ID:dU3L4Ryu
Smartyをもっとスマートに使いたい。 キャッシュの判別自動化できないかな・・・
controller周りはほとんど分かってきたから filter_inputとaclあたりの情報をくださいお願いしま
1.1でレイアウト付くから作り直すの面倒なんでまだ使ってない
まーーーーた仕様変更すんのか・・・ 俺も安定したら本気だす
入力フォーム → 確認画面 → 完了画面 をやるのに、 Zend_Session でフォームの値を持ちまわして echo $this->formCheckbox('hoge', $session->hoge); ってやると失敗する。 「確認画面に行って入力フォームに戻る」を繰り返すと <input type="hidden" name="hoge" value="0" /> <input type="checkbox" name="hoge" id="hoge" value="0" /> って感じで、 hidden も checkbox も value が 0 になっちゃう。
そんなところにセッションなんて使わなきゃいいじゃん
ZFでセッションなんて使えるわけないじゃん
475 :
472 :2007/07/29(日) 20:08:14 ID:???
>>473 確認画面で受け取った値をそのままhiddenに入れるのは危険だよ
自己解決しますた。
echo $this->formCheckbox('hoge', $session->hoge === '1' ? '1' : null);
こんなかんじで…
なんだかなー
477 :
nobodyさん :2007/07/30(月) 18:46:09 ID:0pTg8goE
Zend_Sessionで use_only_cookies = on にしておけって書いてあるけど、 携帯対応するとoffにせざるを得ないよね?
そんときゃ自前でセッション管理のコードを書いた方が良い気がする
479 :
nobodyさん :2007/07/31(火) 13:59:05 ID:ti5DbwcI
>477 Zend_Session::setOptions(array( 'use_only_cookies'=>0, 'use_cookies'=>0, 'use_trans_sid'=>1, 'remember_me_seconds'=>3600, 'name'=>"psm", )); これで動いてるけど、まずいのかな。 たしか ZF_Configとあわせて、この設定をiniファイルで外側に出す方法もマニュアルに出てると思った
480 :
479 :2007/07/31(火) 14:02:44 ID:???
追記 たしかZF_Session内でini_set()してるから .htaccessに書いてもうわがかれちゃう。
セキュリティ的によろしくないって話でしょ? 30.4. グローバルセッションの管理に書いてあるヤツ
482 :
nobodyさん :2007/07/31(火) 23:53:28 ID:qBa+C6/R
>>481 そうれはそうだけど
>>477 さんも言っている様に
日本の携帯特にDOCOMOはとてつもなく技術が遅れていて
そうするよりしかたがないんですよ。
商用サイトを作るときに携帯を無視とか、DOCOMOを無視するわけにはいかないので。
で、たとえばユーザー認証を作るのにセッションを使用しないわけにもゆかないので、
nameを変えるのはもちろん、有効時間を短く設定し、ユーザーエージェントや、固有ID(これも出ない携帯あり)
などをチェックし、外にリンクを張るようなところはIDが投下しないように気を配ったり
本当にめんどくさい!
IPである程度固定で切ればよかったんだけど、DOCOMOはリクエストのたびにIPが変わると来てるから・・・
ワンセグや着うたも良いけど、そういう基本的なところもうちょっと進歩させてもらいたいですな。
話が噛み合ってない件
横からスマソ $validators = array ( array('aaa', 'bbb') => 'Digits' ); $input = new Zend_Filter_Input($filters, $validators, $data, $options); みたいに、グループ化して検証することって出来ないの? QuickFormではグループ化できたんだけどなぁ
>>484 それなんてRuby?
PHPて(連想)配列のキーに数値・文字列以外使えたっけ?
>>485 できないんで、何か良い方法がないかと模索してるんです。
viewで
echo $this->formText('hoge[aaa]');
echo $this->formText('hoge[bbb]');
ってしたけど、このやり方はどーなんだろ。
487 :
nobodyさん :2007/08/05(日) 13:48:03 ID:jVkpvx0G
1.0.1きたでええええええええええええええ 何がかわったにゃあああああああああ?
Zend_DbってLongblobのデータどうやって拾うんだ? なんか0がかえってくるんだが…
490 :
nobodyさん :2007/08/08(水) 00:43:29 ID:47b/4FiE
Zend_Session::start(); で応答がなくなる事があるんだけど同じ現象の人いない?
zendでセッションなんて使えません
ウチはそんなことないが(DB互換ハンドラと通常)、 応答無くなるって具体的にどんな感じよ?
493 :
nobodyさん :2007/08/08(水) 10:19:59 ID:47b/4FiE
index.phpの頭で Zend_Session::start(); としてるんだけど、ブラウザの応答がなくなる事があるからログを出してみたんです。 $logger->debug("test1"); Zend_Session::start(); $logger->debug("test2"); で通常は test1 test2 と正常に出てるんだけどブラウザに応答がなくなったときは test1 で止まってる。 全然具体的じゃなくてすいません。 いつ起きるか調査中なので続報あったら書きます。
zendが新しいCMSみたいの出したね どうなんだろあれ
なんつーか、1.0なのに完成度低いな…
496 :
nobodyさん :2007/08/11(土) 15:24:00 ID:efQm7yYJ
お前らバリデータとかFilter_Inputとか使ってる? アレ使うとソースが無駄に長くならね? どういう風にやってんの?
つーか、普通はoutputにフィルターかけねぇ?
入力に対してフィルターかけて出力しますよっていうことじゃないの
499 :
nobodyさん :2007/08/11(土) 19:58:53 ID:DjfayvKV
500 :
nobodyさん :2007/08/20(月) 15:40:21 ID:tSriHhKp
おまえらSmartyはどうしてる?
Smartyとかいらないでしょ。Smarty使いたいならフレームワークとしては違うの使ってゼンドはライブラリとしてつかうべき
502 :
nobodyさん :2007/08/20(月) 22:11:36 ID:tSriHhKp
ほら、キャッシュとかどうしてるのさ?
APC
>>501 なんで?
Smartyを使うかどうかが、フレームワークの選択肢に影響するの?
たまに伸びたと思ったらまたsmartyの話か お前らsmarty好きだよな 俺zend_view使ってるぞ
お前らって一部だろ
最近のフレームワークならview使えばsmarty必要になる機会も 少ないんじゃないの
Smartyとかのテンプレートエンジン使わない場合の、テンプレート変数値のエスケープってどこでやるの?
>>508 マニュアルではテンプレート内でやっているようだが。
1.1まだぁ? 早くLayout付けてよ
validate_arrayってのを早くしてほしい
512 :
nobodyさん :2007/08/28(火) 16:04:26 ID:XU/nJc53
英語できるやつ 次のバージョンアップいつごろとか言ってたりしないか教えてくれよ〜
たった一人の開発者が退社した 続き作ってくれる人募集中だって
514 :
nobodyさん :2007/08/28(火) 18:42:35 ID:XU/nJc53
>>514 ZendFramework使ってんの?
英語出来ないけど九月の上旬って言ってたような気がする。 ほんとに出るかは知らんけど
include_pathはlibraryを指定でいいの?
522 :
nobodyさん :2007/09/10(月) 17:03:05 ID:or3awNLm
in Actionのほうもうっすいな チュートリアルぽい内容かな
本屋行ったらzend本売ってて「おっ」と声出してしまった かなり太い本だね
で内容的にはどうすか?
528 :
nobodyさん :2007/09/18(火) 14:05:12 ID:nuy2Jlr4
529 :
nobodyさん :2007/09/18(火) 14:11:36 ID:MFKSKhVe
>>528 コントローラ名を大文字にしてみてくれ。
あと、rewriteちゃんとしてる?
530 :
nobodyさん :2007/09/18(火) 15:37:11 ID:nuy2Jlr4
できました、rewriteが上手くいってなかったみたいです。 ありがとうございます。
531 :
nobodyさん :2007/09/20(木) 20:15:14 ID:VUodyB3I
特定のディレクトリだけをrewriteの対象外にしたいんだけど、どうすればいい?
RewriteCond %{REQUEST_URI} ^/static/ RewriteRule .* - [L] RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php
533 :
nobodyさん :2007/09/25(火) 18:30:38 ID:D7nKFtyY
zendはsymfonyのpagerみたいな機能ってないですか?
535 :
nobodyさん :2007/09/26(水) 08:27:29 ID:MYWbpKEC
536 :
nobodyさん :2007/09/26(水) 10:58:48 ID:kAbaoEHt
Zend Framework 1.0.2 age
537 :
nobodyさん :2007/10/03(水) 11:37:55 ID:37NbQuPT
page1->page2という風に必ず特定のページからしか 移動できないようにし、他のページからきた場合には他の ページに飛ばしたいのですが、 どこのページから移動してきたか確認できるようなものってないですか?
トークン?
ZFベースのAlex@Net BlogってCMSのソースもってるひといませんか? 雑誌やらで記事がのっててコード見たいんだけどWeb上から消滅してる
>>541 どうも。でもどうやらページごと消えたんですな↑のWeb上から…。
543 :
nobodyさん :2007/10/11(木) 00:00:12 ID:9NrsxWrE
バージョン古いやつのソースだから消したんじゃね
544 :
nobodyさん :2007/10/11(木) 19:57:35 ID:Y4cbxz38
夏前にやったチュウトリアルの内容、全部忘れてしまった
>>534 Pear使うんだったらZend Framework意味無いな
546 :
nobodyさん :2007/10/14(日) 00:22:24 ID:mwhCy2ge
modelsっていうフォルダに入れるものって結局どういうもんなの? 意味がわかんないんだけど
モデル
548 :
nobodyさん :2007/10/14(日) 03:54:49 ID:utDu4jlp
VとC以外のもの
MVCもわからん奴が来たか…
ZFにおけるModelの扱いって微妙に厄介なテーマだと思うなー Zend_Db_Table、Zend_Db、バリデーションなどをうまくさばいた モデル設計の最良解が見えにくいので 結局オレオレFWが出来上がりやすい⇒FWの意味半減
model周りに限らずなんつーか、ZFって 「デフォルト状態ですぐに使えるモノ」が色々と足りなさ過ぎるよなあ 自由度や柔軟性とのトレードオフな部分もあるけどさ かゆいところに手が届かないフレームワークというか RoRはConvention over Configurationだけど ZFってCustomization over Conventionだもん もう決め打ちしてくれよって感じ
553 :
nobodyさん :2007/10/18(木) 01:20:47 ID:KqVQHgFy
symfonyで言うところのsfPropelUniqueValidator みたいなやつ用意してくれませんのかね?
>>552 そこやっかいですよね〜
そんなこんなでまだethna使ってます。
コンポーネントとか素材はいいんだけど。
早くethna捨てたい
555 :
nobodyさん :2007/10/19(金) 19:04:08 ID:/DeIRb8R
1.1.0まだ〜?
cakephpからpear::DB使うみたいに、Zend_Db 使う ってことは可能なの? Zend_Controller や Zend_View なしでも 動くようになってるんでしょうか?
557 :
nobodyさん :2007/10/20(土) 03:44:11 ID:hv51ePaW
controllerとview周り意外は大体単品で使える
>>556 Zend_Db つかうドライバ(DboSourceを継承したクラス)を書けばいい。
pear::DB用ドライバがコメント除いて100行程度だから簡単だろう
>>557 それってZF内でなんか方針として決まってるんだろうか
それとも今後Zend_Controller前提になるんだろうか
560 :
nobodyさん :2007/10/20(土) 12:03:07 ID:lDCmHmbT
単品で使えるのはそういうポリシーでしょ
561 :
nobodyさん :2007/10/20(土) 19:45:35 ID:hv51ePaW
Filter_Inputでfieldsに配列入れると Validate_IsEmptyがちゃんと動かないんだけど これって正しい動きなの?
562 :
539 :2007/10/21(日) 16:14:54 ID:???
>>556 Zend_Controller や Zend_View なしでもOK
>>558 ドライバ不要
>>559 独立したコンポーネントで使えるのがZFの方針
PHP4で動かないの?
PHP4で動かないのがZFの方針
PHP4(笑
(笑 w
567 :
nobodyさん :2007/10/22(月) 00:05:58 ID:nQ80Rs2X
w
コンポーネントで使えるおかげでいろいろな別フレームワークに組み込めてらっきーですよ。 あくまでPHP5用ライブラリね>ZF
zfを勉強中なのですが、アクションコントローラはapplication/controller配下にだだ並びになるのが普通なんでしょうか。
RewriteRouterのModuleでサブディレクトリに分けることもできるよ
571 :
569 :2007/10/23(火) 14:06:52 ID:???
レスありがとうございます。 皆さんはどうしてますか? ディレクトリ分けしているのでしょうか?
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ってできますか?
Zend_Db の insert、updateメソッドのように SQLを意識しないで使用できるSELECT用のメソッドって ないのでしょうか? マニュアル見てみましたが見当たりません。 SELECT文の場合、みなさんシコシコとSQL書いてるんでしょうか。 where句とかを見るとげっそりするのです。
SQLくらい意識しろ
575 :
572 :2007/10/24(水) 08:27:04 ID:???
できました。というか、マニュアルにでてたの見逃してた。
参考までに一応書いておきます。
$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。
お騒がせしました。
しまった。 "edit"=>"/path/to/controller/edit", は "foo"=>"/path/to/controller/foo", です。
>>573 Zend_Db_Selectっていう名前ズバリそのもののクラスがあるだろうが
selectは複雑だから別クラスになってんだよ
578 :
573 :2007/10/24(水) 17:11:28 ID:???
>>577 サンクス、
見てみたけど、さすがにupdateやinsertのようなシンプルさはないですね、、、
ていうかマニュアルちゃんと嫁よ十分シンプルだっつーの SELECT文は取得条件の項目が多いから単にメソッドが多くなってるだけ メソッドチェインで取得条件足してくだけだろうが あれがupdateやinsertみたいな1メソッドだったら引数が複雑になる
phpでメソッドチェインなんかはじめて見た
581 :
nobodyさん :2007/10/25(木) 23:00:57 ID:YQ1wPxgb
よくある改行コードを\nに統一するフィルター作ろうと思うんですけど どんな名前がいいと思いますか?
CrRemover
aaa(\r)bbb を aaa(\n)bbb にするかもしれないから CrRemover って名前はどうかな そのまま名前にしちゃえばいいんじゃない? WellKnownFilterToUnificateNewlineCodeToLf とかw
>WellKnownFilterToUnificateNewlineCodeToLf こんなの嫌です>< >CrRemover にしときます!
nl2lf だと関数みたいだよね
ポチ
Ethnaたんハァハァ
なにやら海外生活に興味津津な奴がいるな
590 :
539 :2007/10/28(日) 01:00:56 ID:???
592 :
591 :2007/10/28(日) 10:46:21 ID:???
ごめんトンチンカンなこと言ってた。
Zendがそういう規約作って無くても ネームスペース縛りが厳しいPHPで オレオレライブラリにZendのプレフィックス 安易に使っちゃう奴の気が知れん
zfのwikiで考えてるのと同じ仕様のものを非公式に配布してるってことじゃないの? それでもややこしいことしてくれてるけど
>>595 staticだからってことなんじゃないの?
あと、
$mail = new Zend_Mail();
$mail->send($tr);
Zend_Config Zend_Mail Zend_Db が使いやすいな〜と思い、 ZF使いになった俺です。 極力ZFを使用するように努めてるんですが、 たとえば認証部分の場合、 DBにユーザ情報格納するときには、 DBのuserテーブル、IDとPASSでwhere句で調べて、1行じゃなければアウト、って いう俺俺クラスを作ったほうが、 Zend_AuthやZend_Aclを使うよりも恐ろしく楽な気がします。 こういったときの使い分け基準ってみなさんどうしてますか?
俺も極力ZFのやつで・・・ って考えて作って行ってたけど 無理だと思ってやめた
Zend_Mail::sendの結果で if処理したい場合、 $result = Zend_Mail::send; if( $result ){ echo "成功"; }else{ echo "失敗"; } でよかとでしょうか? マニュアルにはboolenとか書いてないとですが。
600 :
nobodyさん :2007/11/01(木) 08:46:28 ID:yKQSluaW
>>599 * @return Zend_Mail Provides fluent interface
601 :
600 :2007/11/01(木) 08:47:16 ID:???
上げちゃった。ごめん。
1.0.2インスコしてるが、あんま使わねーな
603 :
599 :2007/11/01(木) 13:42:31 ID:???
>>600 おいらにはそれを訳す能力がありません。
へるぷみ
606 :
599 :2007/11/02(金) 01:49:05 ID:???
Zend_Mail Provides fluent interface Zend_Mail は「流れるようなインタフェース」を提供する が return? メソッドチェーンと何の関連が。。。 全然意味わからんとです。
@return Zend_Mail -- Provides fluent interface
↓
返す型:Zend_Mail …… fluent interface を提供するため。
599は
>>605 のリンク先を少しは読め
ZFはFWのFWとなるべく生まれてきたんじゃないかと思う。 FWのFWというかDSLのDSLというか。
dslって何だ? adsl?
PHPの文法じゃDSLとは言い難いだろ
611 :
nobodyさん :2007/11/04(日) 00:45:50 ID:pUsvR5iH
Db_Table_Rowって昔 user_nameみたいなカラムを $row->userName みたいにするような感じじゃなかった?
だからdslって何なんだよ Nintendo DS Lightのことか?
614 :
nobodyさん :2007/11/04(日) 17:38:17 ID:pUsvR5iH
http://ho.ge/user/:username みたいなページで:usernameのユーザーが登録されてないときに
404ページ出す場合ってforwardでエラーページに飛ばすべきか
throw new Zend_Controller_Dispatcher_Exception()をするべきか
どっちがいいですか
ちんぽまるだしで全部解決
>>614 Controllerの中でerrorActionを定義するのが簡単
その次がException
しばらく見てないけど Zendルータってもう使いものになるレベルになってんの?
いつのバージョンと比較してるのかは知らんが 使えないのは、単にお前の能力不足じゃないのか
いや… 前見た時はなんかろくすっぽ実装されてなかったけど
ってかルータ使うのに能力も何もねーだろ・・・
意味不明な煽りすんな氏ね
>>618
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());
>>617 まだがっつりとは触ってないけど、私見では十分使えるレベルだと思う。
Net_URL_Mapperなんかでごりごり書くよりも直感的で、本当にルータっぽく
設定できるので、個人的には結構気に入っている。というか、他の機能が
まだ少し未熟な(好意的に見れば柔軟性に富んだ)感触なのに対して、ほぼ唯一
そのまま使える機能といってもいいw
むしろ、Validator周りが予想以上に使えなくて、今頑張ってるよ…。
623 :
nobodyさん :2007/11/10(土) 00:36:32 ID:grKOANVo
>>622 その辺はZend_Formとかとくっつける為にあんな感じなんだろう
なんで放置されてるZend_Form?適当な事言ってない?
PonkotsuFramework
Zend_Log組み込んでるんだけど、 DEBUGはロギングしない、とか後で変更できないの? わざわざ継承して、debug関数の処理空にする、とかしか思いつかない。
627 :
626 :2007/11/10(土) 02:59:42 ID:???
スマソ、フィルタってのがあるね
Zend_Db_Adapter_Abstract::insert() で1日ハマってるんだけど、誰か助けてくれ〜〜 $db->insert( $table, $insert_data ); としても全くインサートされない。 Zend_Db_Profiler でクエリー文調べてみたら INSERT INTO `table` (`hoge`, `hoge2`) VALUES (?, ?) となってるんだが、ホワィ?? なぜにプリペアドステートメント?
なぜってお前・・
>>628 Zend_Db_Profilerで見られるクエリでPDOでbindする前のじゃなかったっけ
だからそれはそれであってるんじゃないの(この仕様もどうかと思うんだけどね)
例外が返ってくることもなくデータが入らないの?
>>607 objectが返るってことはソースからなんとなくわかったんだが、
結局
>>599 のように送信が成功したかどうかで分岐させたい場合、
どんな記述をすればよいの?
try catch
>>631 sendで失敗したら例外が投げられるから投げられてたらエラー
tryでsendしてcatchに失敗した時の処理を書く
Zendframeworkはやはり諸々のお手本として勉強になりますなぁ ZF周辺の頭脳派集団的オーラがぜひPHPコミュニティ全体に波及しますように
try catch ってソース汚くなっていやなんだが ほかの人はあれ好きなの?
好きなヤツはいないと思うけど、さっくりとException投げられるから仕方なく使ってる .NetでもSMTPにメールアドレスが拒否られた場合、普通にException投げてくれるから同じ書き方になる try{mail.send(primary)} catch try{mail.send(secondary)} catch{return false;} 他の言語だとどうなんだろうね
637 :
nobodyさん :2007/11/12(月) 00:32:16 ID:OoaTyYVU
try catchの美しさを理解できないのか
インデントが1段下がるのが嫌だ
Zend_Db_Tableはリレーションまでまともに使い物になる日は来るんだろうか? SimonとかいうヤシのProposalはどうも現場感覚が決定的に不足してる感じがする
640 :
569 :2007/11/12(月) 07:21:42 ID:???
throwsがないのが不便。
641 :
nobodyさん :2007/11/12(月) 10:09:01 ID:zaguTSbK
汚いって思うやつは、try{〜}の中が長すぎるんだろ。
642 :
nobodyさん :2007/11/12(月) 14:04:06 ID:MO0zYBuT
Zend_Mailって日本語もばっちり?
>>642 一つ書き忘れ。送信者名に日本語使うときの対処方法がZend framework入門の
P299に書いてあります。
ばっちりちゃいますやんw
646 :
644 :2007/11/13(火) 13:00:03 ID:???
647 :
642 :2007/11/13(火) 19:59:22 ID:lFhItDW1
なるほどです。
>>644 給料出たので奮発してその本買って見ます。
「Zend Framework入門」は別に買わなくてもいいんじゃないかと。 マニュアル以上のことが書いてあるわけでも無いし。 俺は買って損した気分です。
ZF入門は残念ながら内容薄かったね。 英語でよければ「Zendframework in action」がオンライン購入で途中まで読めるようになっており コチラはもう少し読みやすく実践的なのでモチベーションが上がる。 まぁZFのバージョンアップではやくも内容が古くなりつつあるけど。
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だとメモリ確保できないぞゴルァみたいなエラーが。
poka-n
try{ $db = Zend_Db::factory('PDO_MYSQL', $params); $db->insert('table', $params2); }catch(Zend_Exction $e){ echo "メッセージ: " . $e->getMessage() . "\n"; } でinsertのエラーがキャッチできないんだけどなぜに?
Zend_Exception
うわ、これって「Zend_Exction Class が未定義」というエラーにならないんだな。 はじめて知った。さすがPHP、奥が深いな。
うむ
Zend_Exception としたところでキャッチされない。 反映行数がinsertの返し値なようだから、 0ならfalseとかthrowとかしなきゃいけない、でファイナルアンサー?
insertの戻り値ダンプしてみて0だったってこと? それで例外キャッチできないって絶対何か別の原因があると思うけどなあ 内部で何かエラーがあれば必ずZend_Exception派生の例外は投げられるはずだけど データの取得(SELECT)はちゃんとできるかい?
659 :
657 :2007/11/15(木) 12:38:07 ID:???
>>658 はい、そうです。
selectなども正常にできています。
意図的にDBパスワードミスとかするとちゃんとcatchしてくれます。
何となく思ったのですが、
653のままでも
本来insertが例外を投げているのであれば、
catchされないままになってしまうので
通常はエラーが出るはずですよね。
は?insertの返り値が0だったら本当に例外返ってくるのか?
なんで通ってんのに例外なげんの?
662 :
658 :2007/11/16(金) 12:18:44 ID:???
>>659 うむ
>>660 戻り値が0だったら例外が投げられるとかって事じゃなく
insertが通っているのに戻り値0で
実際にはinsertされてないってのは
何か別の原因が、って意味で書いた
そりゃどう考えてもスキーマかお前さんのSQL文が悪いんだろう
Java厨のおいらがPHPやりたくないけどやらざるをえない状況になったんで ZendFrameworkってどうよ?って質問しに来たんだが、 ざっとスレ読んで放置することにしたわw
PHPのピの字も分からんうちからFW使おうとすんな。
PHPって子どものおもちゃじゃないですかwww
>>666 お兄さん大人なの?おしりの穴貸して欲しいナ
668 :
664 :2007/11/16(金) 23:12:19 ID:???
いや仕事で使ったことはあるよ。てかフレームワークスレも読んだがgdgdだな。 自分で作ることにするわ。汎用性ありそうだったら公開するお。
いつ頃?
素直にPhrameでも使っとけよ
672 :
nobodyさん :2007/11/16(金) 23:56:08 ID:rj+nso4l
ZF好きだけどな ソースとかなんでもclassにしちゃうとことか とっても好感を持てます
? それ普通じゃないの
PHPはModuleとか無いからなぁ 普通にClassにするだろ
$db->beginTransaction(); ってController_Actionのところでやるのがいいの? MVCとかにこだわるならコントローラーではやらないほうがいいの?
どう考えてもビジネスメソッドじゃねぇの?
じゃあ User extends Zend_Db_Table UserProfile extends Zend_Db_Table みたいな2つがあるとして ユーザー登録ページみたいなので 2つ同時にinsertするときは どういう風に $db->beginTransaction(); するのがいいんですか?
トランザクション使わないといけないほど重要なページなのならストアドでも使えば?
679 :
nobodyさん :2007/11/17(土) 05:35:35 ID:eWyQP34E
例外の扱い方にもよるだろ
>>677 俺ならUserにregisterメソッドを用意して
その中でbeginTracnsanctionして
UserへのinsertとUserProfileへのinsertを行う
って感じでmodelに押し込めるな
Controllerからはトランザクションを意識したくはないな
俺はControllerでbeginTracnsanctionしちゃうな。 でUser::insert(),UserProfile::insert() でControllerでcommitする。 Controllerでトランザクション意識するのってそんなに良くない事かな? 俺はどっちかっていうとmodelでcommitすることに抵抗あるな。 トランザクションの制御はなるべく外側でやりたい。
それはMVCじゃない
683 :
681 :2007/11/17(土) 20:44:28 ID:???
>>682 そうか、やっぱりダメか。
なんかControllerで何やって良いかまだ良く分かってないんだ。
なら
>>677 の別の解答として、
UserRegisterクラスを作って
その中で
beginTracnsanction()
User::insert()
UserProfile::insert()
commit()
とするのはどうかな。
>>681 いや俺もコントローラでコミットするよ。
そんでbeginとcommitの場所はソース的には一カ所になるようにする。
そうすると安全。
>>683 上記2つはともかくそれはないw絶対ないw
MVC学べよ
MVC厨乙
この辺もどっちがMでどっちがCですべきかはあいまいだしな。 まー好きにしろってこった。
MVC構成を想定で設計されているフレームワークスレで何をいうか。 データの処理関係はモデルです。曖昧も何もない。勉強不足
MVCが何かも知らずにMVCフレームワークを使い始めるのはどうかしているよ・・w 根本的にセンスがない。
VCはやること基本的に決まってるけど モデルって結構幅広いから どういう設計にしたらいいかすっげー悩むんだけど その辺のルールがよくわからない
何をもって最適と?
流れ読めよ。MVC的にだろ。
MVC厨的には最適ですw
696 :
688 :2007/11/18(日) 08:16:49 ID:???
>>689 ぶっちゃけZendFramewordつかってないから良くしらんのだがwww
単に複数の別クラスのモデルを1つのトランザクションで処理するときどうするの?
トランザクションをコントロールしている…と考えれば Cでコントロールしてもおかしくない
そんな理屈なら表示をコントロールするからってVの部分をCでやっていいのかw
まあ、ありな場合もあるんじゃね
>>696 複数の処理をする単一のモデルを新たに作れってことじゃないの
702 :
688 :2007/11/18(日) 12:18:02 ID:???
>>700 うわwそれは嫌だな。
なんかMVCにしろデザインパターンにしろ、その流儀を守るために
無駄にクラス作ったりコードが増えたり複雑になるのは嫌だわ。
そもそもカプセル化という重要なことを忘れているヤツがいるな。 小規模個人サイトくらいなら気にすることないけど
原理主義と簡便性のバランスはいつだって難しいね…… データが(程度の問題で)かなりアトミックに扱うべきだと思ったら 一見複雑になるように見えても新たなクラスを作る合理的理由があるはずだろうし シチュエーション的な理由(Cによるということ)だけでに複数のモデルを同時に扱いたいってのなら Cからtran制御することにもそれなりな正当性がありそうに思える
ケースバイケースだろ ただ上記のUserとUserProfileっていう名前の場合、 普通1:1か1:nの関係でエンティティとしては「ユーザ」という1エンティティなわけで そのユーザエンティティを登録する処理なんだから Userの登録処理に押し込めるのは自然な流れだと思うし それ以外の場合でも、そういう複数モデル(テーブル)にまたがる 一連の更新処理をモデルに対応するテーブル間のマッピングから考えて いずれかのモデルに押し込めておくのは俺はわりとやる でも全く関係のない2者間のモデルを同時更新するなら(UserとLogとか) Cでトランザクションすることだってあるだろう どっちかでしかトランザクションしないってのは思考停止 っていうか実際そんな簡単にMCは割り切れない部分もあるし その場に応じてちょっと普通ではやらない置き方になる時も多々あるよ MVCMVC言って盲目的に割り切ろうとしてる奴も思考停止だ
明らかに全然関係なかったらトランザクションいらないんじゃないの?
よーわからんが、1リクエストの処理が以下のように共通化されてて try { トランザクション開始 アクション関数呼び出し } catch () { ロールバック ログ出力 } finally { 例外じゃなきゃコミット } アクション内ではトランザクションとか何も意識しない とかなっとけばいいんでないの? モデルのなかでいちいちトランザクション貼ってロールバックとか 毎回書く方がナンセンスじゃないか? 複数のモデルの処理が全部正常に行われたらコミット、 何か1つでも失敗あったらロールバックてときも上の方法だと何も考えなくても対処できてる。
708 :
569 :2007/11/18(日) 14:56:17 ID:???
PHPにfinallyあったっけ?
>>707 アクション内全部が1トランザクションとか愚の骨頂
どんなアクションだろうが最初にファイルをオープンしてロックかけておけば
いつでもファイルいじれるよ!どうだい柔軟で便利だろ!
とか言ってるのと同じくらいバカ
CだろうがMだろうがどこでトランザクション張ってようが
そこで毎回rollbackの対応を書いたりなんてしない
FW使ってるなら普通上層で一元的に例外に対するコントロール部分があるし
そもそも例外発生したらcommitされないんだから
そのまま終了しても自動的にrollbackされる
710 :
707 :2007/11/18(日) 15:47:47 ID:???
>>709 すまん、
>>707 は簡素すぎた。
実際はopenTransaction()ってメソッドが親のコントローラとかにあって、
それを呼ぶとトランザクションが貼られる。
で、明示的にアクション内でcommit()呼ばないとアクション抜けたときに自動的にコミット。
>FW使ってるならほげほげ
そういう仕組みがあるならいいよ。
てか上の話見てて毎回書くようなことを書いてるように見えたから
ちょっぴり自己主張しちゃいました。
>>708 すまん、実はJava厨が紛れ込んだだけなんだ。
711 :
nobodyさん :2007/11/18(日) 19:22:08 ID:kBwRbUKB
でも、finallyは必要だよな。
finallyって存在意味あるの? 例外投げられたらcatchに移行する 例外投げられなかったらfinallyが実行される てことはtryの最後にfillany内の処理書いとけば同じことじゃんなんて思うんだが
714 :
707 :2007/11/18(日) 20:32:34 ID:???
>>711 namespaceもほしいお
>>712 ファイルとかセッション閉じる処理とか例外でも正常終了でもしないといけないっしょ?
そういうのをfainallyにまとめて書くのだ。
>fainally (^-^)
>>714 PHPの場合はリクエスト(≠プロセス)終了時に変数はすべて開放されるし、
そのときリソースも開放される。(ファイルを閉じたり、DBならトランザクションを
アボートしてコネクションを閉じたりする。セッションハンドラも然り)
てなわけで、JavaやC++ほどfinally節の必要性は感じない。
まあ無いよりはあった方がいいとは思うけど。
717 :
707 :2007/11/18(日) 22:45:39 ID:???
そういえば前にcloseしてねーけどいいのこれ?って聞いた覚えが。 確かにphpではfinallyはあんまいらないかも。
JavaだとデストラクタがあってもGCでいつ開放されるかが予測しにくいので finallyで処理する必要があるんだよね。 DB接続もリクエストをまたいで使い回すのが普通だし。
Java信者も大変だよな
720 :
707 :2007/11/19(月) 00:10:52 ID:???
>>718 そうなんだよね。
そういう点ではC++のがデストラクタにきっちり組み込めるのでfinally無しでもいけたりする。
>>719 Javaはフレームワークは混沌としてる。
結局railsだけだなFW的にまともに軌道乗ってるの。
VM乗って高速化したらrailsの天下かもね。
PHPも十分混沌としてると思うぞ
選択肢が一つしかないよりは乱立してるほうが健全じゃね?
723 :
nobodyさん :2007/11/19(月) 13:24:40 ID:xD0eowNd
そうか?
最後には淘汰されつついくつかに統合されるのがプログラミング以外にも当てはまる世の流れだな。最初から選択肢が一つは不健全
そうして文字コードもたくさんできました。
Zend_Configで.も含む設定名ってどうすればいいんでっしゃろ。 [sample] hoge.hoge = var だと $sample = $Zend_Config->sample->toArray(); で $sample[hoge][hoge]; に格納されてしまうけど、 $sample[hoge.hoge]としたいんです。 そもそも[]の中に.使えませんでしたっけ?
>そもそも[]の中に.使えませんでしたっけ? 使えるよ。っていうかこれはすぐ調べられることだと思うんだが^_^
コーディング規約だけつこうた。
Zend_Viewきっついな Controllerとやたら密接に絡んでるせいですんげぇ使いづらい・・
なんであんな密接にしたんだろうな しなくてもよさそうなもんなのに
732 :
nobodyさん :2007/11/22(木) 12:08:27 ID:8IILrWGo
>>730 $front->setParam("noViewRenderer",true);
にしておけ。
zendはコンポーネントベースだからPearライブラリを使ったみたいに自分で構成までくむの?それとも推奨構成あり?
推奨構成はあるよ規約ではないけどな ドキュメント嫁
世間のウェブデザのほとんどが使いこなせないのがPHP。 真珠の掲示板ですら設置できない低スキルで、毎月数十万のぼったくり請求している酷い業界。
それでいてデザイン発注するとテーブルレイアウトで返してきたりな
737 :
727 :2007/11/24(土) 14:31:21 ID:???
どなたか改善策きぼんぬ
parse_ini_fileでいいじゃん 設定ファイル読み込むだけのクラスが 直感的に使えない時点でもう何かダメだと思うんだ
てか単純な設定ファイルなら普通に.phpで書いてもいい気がするけどな
作法に従いたいって事だろうな。
初歩的な質問で、検討はずれな事を言っていたらすいません。 $db->query('SELECT * FROM `hote_table` WHERE `id` = ?', $id); Zend_Dbでプリペアドステートメントを使ってSQLのクエリを送信しようとしているのですが、 数値文字列にもクォーテーションがついてしまいます。オプションか何かで数値文字列に クォーテーションが付かないようにしたりできますか? また、そうでなくとも似たような簡略化する方法は予め用意されていますか? ご教示お願い致しますm(_ _)m
$db->query('SELECT * FROM `hote_table` WHERE `id` = ?', (integer) $id); でキャストしてもそうなる?
$db->-select() ->from( 'table' ) ->where( "status = '1'" ); 特定条件下で上記 where句を取り除きたい場合、 if($hoge){ $db->-select() ->from( 'table' ) ->where( "status = '1'" ); }else{ $db->-select() ->from( 'table' ); } のようにif文で分けるなどの方法しかないでしょうか? $db->-select() ->from( 'table' ) if($hoge){ ->where( "status = '1'" ) }; みたいな感じの書き方はないでしょうか。
>>743 出来ないはず。
whereメソッド戻り値見てみ。すぐに意味が解るはずだから。
>>743 取り除くんじゃなく必要に応じて足していく
$select = $db->select()->from(〜);
if (条件1) {
$select->where(〜);
}
if (条件2) {
$select->order(〜);
}
...
$sql = $select->__toString();
>>727 ここを参考にしてちょ
プログラマ向けリファレンスガイド 5.3. Zend_Config_Ini
---引用開始---
デフォルトでは、キーの区切り文字はピリオド (.) です。 しかし、これは変更することもできます。変更するには、 Zend_Config_Ini オブジェクトの作成時に $config のキー 'nestSeparator' を設定します。たとえばこのようになります。
require_once 'Zend/Config/Ini.php';
$config['nestSeparator'] = ':';
$config = new Zend_Config_Ini('/path/to/config.ini', 'staging', $config);
---引用終わり---
また内緒でZend_Loaderが変わってたらしいじゃない。
Gdataとかそんなサブ的な、おまけ的なところ後回しでいいから Formとか作れよ
PDFの日本語はまだダメ?
adroitおもすれ
1.0.3 リリースで鯖落?
くう… 良さそうな無料レンサバがみんなPHP4だorz
xreaでいいじゃん
safemode懐かしい
>>753 今は復活 ヨーロッパ諸国やイスラエルが活動を始めるまえに
(日本時間で 冬15時、夏14時)ダウンロードするものを済ませ
たほうがいいよ。それ以降は混雑しますので、Zend Frameworkに限らず。
今日使い始めたばかりなんだけど、いきなり躓いてしまった。
インストールや初期設定は終わり、一番最初のindexアクションは成功。
controllers/以下にIndexController.phpを作って
http://127.0.0.1/ でIndexController.phpのindexactionは表示できるようになった。
そこで次は別のを作成。
controllers配下にMainController.phpを作成
<?php
require_once 'Zned/Controller/Action.php';
class MainController extends Zned_Controller_Action
{
public function indexAction()
{ echo "初期"; }
public function newsAction()
{ echo "ニュース"; }
}
内容は単純なこんなもの。
調べた結果によると、
http://127.0.0.1/main/ でアクセスすれば初期と表示され
http://127.0.0.1/main/news/ でアクセスすればニュースと表示されるはずなのに
どちらも
Not Found
The requested URL /main/ was not found on this server.
とでて表示されない。
何か設定が足りないのだろうか?
ttp://blog.so-net.ne.jp/pluto-blog/ 環境はこのブログを参考にして構築してみた。
Zned→Zend スペル間違い訂正。 修正しても変わらず。
とりあえずZendがZnedになってるtypoを確認 でも404だと根本的にroutingできてなさそうだな .htaccessを確認をしてみるとか
言われたとおり.htaccessでした。 そもそもApacheの方で設定できてなかった・・・orz 設定後、表示はされるようになりました。 しかし何故か文字化け・・・ 日本語を使うと文字化けしてしまう。 でもIndexController.phpの方は日本語でもちゃんと表示される。 MainController.phpの方だと文字化けしてしまっている。 それぞれのファイルの保存文字コードや改行コードを調べてみるもどちらもUTF-8で保存、改行はLFのみ。 全部化けるならPHPのマルチバイト辺りの設定かなと思うのだけど、 indexのが化けないで、mainが化ける意味が・・・
吐き出すコンテンツにmetaタグ指定も無しで response headerでもcharset指定してないんだったら そりゃ化けてもおかしくないだろう ・とりあえず吐き出す内容にmetaタグ入れてみる ・responseのcontent-typeヘッダにcharset指定を入れる くらい最低試せ
そういやそうだよね・・・ indexが化けなかったのは日本語が長めだったからブラウザが自動認識してたみたい。 初期とかじゃないくて同じ文字入れたら化けなかった。 こっちは短すぎてブラウザが文字コード断定するに至らなかったようだ。 metaタグ入れたら短くてもちゃんと表示されるようになった。 どうもありがとう。 一通りいけたので、これから頑張ってやっていけそう。
764 :
nobodyさん :2007/12/08(土) 23:59:02 ID:vYBrSVgv
がんがれ
1.03使ってみることにしたよ。 あまりユーザいないのかもしれないけどよろしく。
767 :
nobodyさん :2007/12/20(木) 00:41:26 ID:xSS/j6Nl
いるよ。いっぱいいるよ
そうか?
お前は何を言ってるんだ
>>771 さんくす、そうだったのか。
>>770 うまく伝わらなかった? それとも「今更」だったのか。
まぁ、今更だったんだろうけど、念のため確認しておきたかった。
既出だったらスマソ。
そこで、/sample/index.phpとアクセスされた場合、みなさんどうしてる?
1. エラーメッセージhtmlを吐く
2. ErrorControllerから _forward('index')
3. ErrorControllerから setRedirect() でHTTP Location: ヘッダーを吐く。
他
2と3を比べた場合、2の方が負荷が低いだろうけど、何となく気持ち悪いので3かな。
>>772 いや、というかURL Routingしてんだから
index.phpというURLに対して特別にRoutingする必要自体がない
404 Not Foundにするべき
(すでにindex.phpで公開していてその形に変更するなら
ブックマークへの対応としてindexへリダイレクトする必要はあると思うけど)
バックエンドがphpであろうとperlであろうと
最終的にブラウザに返すリソースはこの場合htmlであって
.phpというURLにリクエストしなきゃいけないのはあくまでサーバ側の都合によるもの
>>773 あーそっか、頭堅すぎだな > 俺
404ね、納得した。
ありがd。
>>772 自分でそういう風にルーティング設定しているのにわざわざ騒いでて意味わかんねってこと。
index.phpにリクエストが来てどういう挙動をすれば納得したんだ?
>>775 >>773 の説明でスッキリした。確かにそういう風にルーティングしたんだからな。
769の時点ではクライアントにはわからない(関係ない)のだろうけど、index.phpを
置いているんだから、/index.phpにアクセスがあったら/index/indexに自動的に
ルーティングされるべきと思っていたんだよ。
最初から404を吐いてたら気づいたか... いや余計に混乱したかな?
まぁ、俺の頭の固さ所以だ。許してつかーさい。
PHPでコマンドラインねぇ コード生成とかか
cakeとかsymfonyにもあるけど、zendのはxml書くのかもしれん
ZFの中のメソッドから直接echoしてるとこってある?
grep -r echo * (省略されました・・全てを読むにはワッフルワッフルと書き込んでください)
あるよ
無理矢理どっちかからしかアクセスさせない、とかやる方法もあるとは思うけど、 基本的には無理なんじゃないかな。 面倒だけど {$baseUrl}/controller/otherAction みたいなことにしてる。
ルーティングを前提としたFWならリンク生成は Controller/Action/Parameterを引数にとるヘルパがあって それを使って生成するもんじゃないかね ZFにもUrlHelperってやつがあるよ一応 (リンクは生成してくれない、上記引数からhrefになるパスを生成するだけ) デフォルトでリンク生成のヘルパすら無いZFもどうかと思うんだけど
windowsなんだけど、Modelをrequireする時ってc:\app\models\someModel.phpみたいに フルパスで書いてる?それともinclude_pathに基底パス入れてる? Modelも指定ディレクトリを参照してControllerと同名のファイルを自動で読み込んでくれればいいのに。
>>786 置き場所変わっても動くように相対でやるのが基本。
require dirname(__FILE__) . '/aaa/bbb/ccc/Hoge.php';
みたいに、そのスクリプトファイルからの相対で書く。
ちなみにModelを一気にrequireするときは
foreach (glob(Modelのディレクトリ . "*.php") as $path) {
require_once($path);
}
のようにする。
>>787 ありがとう。相対パスでやってみる。
ZFでこれだけモデルが冷遇されてるのは何故なんだろう。
他のFWではモデルも自動で読み込んでくれるようなんだけど。
autoload使えば?
別に冷遇されてないだろ。 Zendのコンセプトは疎結合なんだから、自動で読み込まれたら結合しすぎってことだろ。
じゃviewが自動で読み込まれるのは?
よく知らないけどビューはコントローラを使う時ほぼ必ず必要になるからじゃない? ごめん俺よく分からないから適当なこといってると思う。
controllerとviewも最初は疎結合だったよ viewが自動でロードされるようになったのもだいぶ後になってから 結局疎結合過ぎてもっていう部分で ようやくバランス取って来てる段階
これにDIコンテナつけて欲しい guiceみたいにコードで書ける奴
>>794 お前そこらじゅうでDIコンテナいってるな。どうかしたのか?
Smartyの手動呼び出しではなくViewRendererに組み込む方法が スムーズにいなかなくて悩んでいたんだけど、setViewBasePathSpec()メソッドが肝だった。 これでZend_Viewとほぼ同じように扱える。 既に知っていた人、Smarty使ってない人は気にしないで下され。
PDT最新版だいぶマシになってるね。 ただphp_mysql.dllを読んでくれない・・・ php_mbstring.dllはよんでくれるんだけどなぁ。
Zend Framework使用しているアプリでEclipseにうまく対応できるの?
Zend使おうと思ってるけど、スレ過疎ってるなぁ・・・ 今はもう人気ないのかな? これってURL直下におかずに、外部から呼び出すタイプでおk?
高木神のおかげでZFの日本語マニュアルが完璧なので掲示板で聞くことがあまりないし。
>>800 ちょっと詳しく聞かせてもらおうじゃないか
今ZFダウソして、使ってみようと思うんだが
参考サイトとか何かないのかな
インスコ出来ないんだったら素直に聞けばいいのに。。。
インスコのしかた教えてください(´;ω;`)ブワッ
マニュアル嫁
マヌアルより -------------------------------------------------- <?php require_once 'Zend/Controller/Front.php'; Zend_Controller_Front::run('/path/to/app/controllers'); これは、フロントコントローラのインスタンスとディスパッチを行います。 この結果、アクア本コントローラへリクエストが転送されます。 -------------------------------------------------- Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (error)' in C:\xampp\php\ZendFramework\library\Zend\Controller\Dispatcher\Standard.php:198 Stack trace: #0 C:\xampp\php\ZendFramework\library\Zend\Controller\Front.php(929): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #1 C:\xampp\php\ZendFramework\library\Zend\Controller\Front.php(233): Zend_Controller_Front->dispatch() #2 C:\xampp\htdocs\Project\ZendTest\index.php(3): Zend_Controller_Front::run('/path/to/app/co...') #3 {main} thrown in C:\xampp\php\ZendFramework\library\Zend\Controller\Dispatcher\Standard.php on line 198 いきなりこれかよZend死ね
>>807 いきなりも何もまだ続きがあるだろ
というかクイックスタートの終わりまでくらいは我慢しろよwww
おまえの限界クイック過ぎだろwww
>>808 ごめ、ちょっと先走った
コントローラー設置してみて、最初の
Zend::loadClass('Zend_Controller_Action');
の部分が「Class not found」になるんだけど、
index.phpでクラスをインクルードしてからコントローラーをインクルードしてるんじゃないの?
htaccessから直接コントローラーを呼び出しているとは思えないし・・・
>>809 Zendクラスなんてもう無いよ
どこのマニュアルを読んでるんだ?
>>810 適当に探してブログ見つけて読んでましたorz
記事見ると07/1/13だた・・・
マニュアルは何か飛び飛びでわからないので、
簡単なサンプルを解読していく感じにしているのですが、
そういったサイトを探すので手間取ったうえでやっと見つけた資料なのにorz
これはひどい
おk、流れつかんできた!
>>816 なるほど!
だんだん分かってきた
これ面白いな
もっと遊びつくしてみま
質問すると
>>817 と同じ人と思われるかもしれんが・・・。
/Controller/.htaccessで自動的にAction.phpスクリプトを読み込むようにするのってアリかな?
毎回先頭にrequire_onceを記述するのがめんどう
>>818 Action.phpってZend/Controller/Action.phpのこと?
Zend/Controller/Action.phpはZend/Controller/Dispatcher/Standard.php
でrequire_onceしてるから、コントローラに書かなくてもおk。
Zend/Controller/Action.phpを継承したオレオレ_Controller_Actionクラスだと
require_onceしないとダメだけど。
自分なら.htaccessに書くんじゃなくて、index.phpとかに書くかなぁ。
だから面倒ならautoload使えと(以下略
今subversionのやつ見てきたら、Zend_Layoutってのがあったから次のバージョンから追加されるっぽいのかな
FW語るスレからきました Zend使ってるんだけど(始めたばかり) モデルのところで、データベースアクセス関係作って、 必要に応じてコントローラから呼び出す形になるのかな? 入門書買ったけど、その辺が詳しく載ってない データベースアクセス関係のスクリプトばっかりでどこに保存しとけばいいのかわかんない
モデルは基本的に好きなようにやれ
PDTでZF使ってる人いる? どこで指定すればZFを読み込んでくれるの?
なんだ、IDEとして互換性があるのかと思っていたけど普通にincludeして実行できるだけなのね・・・。ともあれthx
>>826 ZendStudio for Eclipseならincludeしなくてもいい。
>>823 というと、基本的にFrontかコントローラから必要に応じたモデルのみincludeするのかな?
ふと見たら1.5.0のプレビュー版リリースされてたのね
PDT使ってるけど、デフォルトでZendFWを使えるように設定とかないかな・・・? 自分でパッケージ作っておくべきか
>>831 便利そう
便利そうなんだけど・・・
高いんだよなorz
Zend_Mailってマルチバイト対応してないっけ
>>833 してる
$this->_mail = new Zend_Mail(Zend_Mime::ENCODING_7BIT);
$this->_mail->setBodyText($str,Zend_Mime::ENCODING_7BIT);
zend_mailって携帯に送っても文字化けしたりしない?
変な文字コードで送らなければ大丈夫だろ
>>835 JISで送るといいよ
そこはZendだけじゃなくPHPのmail関数でも一緒
(Zendもmail関数だっけ)
ところで、ディスパッチャ処理で$this->_forward("hoge", "hoge")って、
リダイレクトじゃなく呼び出し?
フロントコントローラ通さずに直接アクション呼び出してると思うんだが・・・
$_POSTデータもそのままだし・・・。
838 :
837 :2008/02/01(金) 11:12:47 ID:???
・・・と、リダイレクトは_redirectがあったのか・・・。
アクションヘルパーのredirectorもあるでよ
actionとviewってactionnameActionの代わりにactionNameActionみたいに書けますか? /actionName でリクエストしても、Zend_View_Interface#renderに全部小文字で渡ってくるぽいので デフォルトだと無理そうなのですけど、何か設定変えてやる方法ないでしょうか?
あれ、俺の環境では大文字小文字関係なしにテンプレート読んでくれるけど
そりゃWindowsだからだろ
そういうわけでなくハイフン区切りにしなくてもということ
>>841 そう。ソース追ったら、
$this->getViewScript($this->_request->getActionName());
でViewRendererから呼ばれる
Zend_Controller_Action_Helper_ViewRenderer#_translateSpec
でtolowerしてました。Renderer変えないとだめそうです。
/controller-name/action-name (url) -> ControllerName#actionNameAction (controller) -> controller/action-name.php (view)
がZend推奨ぽいですね。
>>842 >>844 そうですね。これドキュメントまちがってますね。
>>834 > $this->_mail = new Zend_Mail(Zend_Mime::ENCODING_7BIT);
こっちは new Zend_Mail('ISO-2022-JP'); ですよね?
しかし、ヘッダー関連足すときに自分でencodeしないと変なエンコーディングになって面倒・・
>>846 ああ、ごめん、確かに間違ってたわ
__construct($charset='iso-8859-1')
なのね
失礼、引数みるとsetBodyTextも2番目はcharsetなので setBodyText($str,'ISO-2022-JP',Zend_Mime::ENCODING_7BIT); ですな まぁラッパークラス作ればエンコーディングの指定は毎度毎度やらないだろうからいいんじゃないかな
camelcaseの区切りはアンダースコアにして欲しいんだけどな アンダースコアはpath delimiterに使われてるからか url: controller/action_name action: actionName() view: controller/action_name.phtml が一番しっくりくるんだけど
851 :
nobodyさん :2008/02/06(水) 12:07:54 ID:P8eN/dUP
オプションで変更できればいいんだけどな。
このフレームワークって controller/action/引数名/値/引数名/値/ ってリクエストの形式だけど、 controller/action/値/値/ の形式でgetParam(0)とかで引数参照できるようにできないのかね。そっちのほうが好きなんだが。
>>852 デフォルトでできるんだが
むしろ前者のパターンだと相当古いバージョンを使ってると思うが
デフォでできんの?どうやんの?
>>855 routerにrouteを追加するだけ
$route = new Zend_Controller_Router_Route(':controller/:action/:id/:id2');
$router->addRoute('two_params', $route);
ていうかマニュアル嫁
1.5のPreでても1.5の話題が全然でなくてしょんぼり。
859 :
nobodyさん :2008/02/08(金) 02:27:47 ID:kZbVINNL
でも、良いの〜。あたしゲイツ様に捕まってうれしいの〜♪
Zend_Db使ってDBの行に値を格納するときって、 必ず自分で class Bugs extends Zend_Db_Table_Abstract { protected $_name = 'bugs'; protected $_primary = 'bug_id'; } みたいに書かなきゃいけないの?
そんなことないけど?
>>860 1.5はまだ触っていないけど、1.0.3の話で言うと
テーブル名から機械的に作れないようなクラス名を使いたい時だけ $_nameの明示が必要だよ
$_primaryはキー項目を要求するメソッド、たとえばfindを使いたいときに指定してあげる必要があるよ
modelsディレクトリの存在って特に意味ないのかな ただ、そこにスクリプト置くと効率がいいよってな感じと見ておk? モデルを簡単に呼び出すようなものがあれば便利なんだけどなぁ
MVCについて勉強するといいよ
>>864 いや、仕組みは理解できたんだけど、
ZendにはModelをサポートするような機能がないから気になって・・・
結構Modelに関しては放置してるような記事が数点見られたし、どうなのかなと
Zend_Db_TableとZend_Db周りがあるじゃない
質問です。 PDO接続で、どうしてもエラーが出るのですが、 The mysql driver is not currently installed' MySQLは使えるのですが、PDOの接続ができないということでしょうか? 普通のMySQLとして接続する方法とかないのでしょうか
pdoは入っているけど、pdo_mysqlが入っていないと見た。
>863 >モデルを簡単に呼び出すようなものがあれば便利 これって例えばどんな感じ? ただ、ZFのDB関連は比較的プリミティブだとは思う。
>>868 そのとおり、Pdo_Mysqlが入っていませんでした・・・
Zend_Dbを見ると、Pdo_Mysqlが入っていること前提ということなのでしょうか?
ローカルでできたのにレン鯖でできなかったorz 作り直さなきゃいけないのか・・・
pdo_mysqlだとレン鯖では難しいかもしれない。ユーザ領域に追加するのが難しい。 サーバがCentOSみたいなパッケージベースでバージョンが分かっていて、 PHPのインクルードパスを変更できるなら、 コンパイル済みのpdo_mysqlパッケージをユーザ領域に展開してインクルードできるかも。 当然、コンパイル環境はないんだよね?
>>871 当然ないです。
ということは、ZendDbは使えないということで決定でしょうかorz
おとなしくPEARに戻らないとorz
php5とmysqlサポートしてるのに pdo_mysqlのドライバが入ってないっていうサーバもアレだな とりあえずサポートに連絡して 40秒で今からpdo_mysql入れなかったら解約だバカってクレームつけろ まあライブラリがサポートしてるドライバくらい先に見とけってのもあるけど mysqliドライバはZend_Dbにあるからmysqliが使えないか調べてみるとか 書き直すくらいなら自分でZend_DbのAPIに合わせて PHPネイティブのmysqlのfunction使ったドライバ書く方が早いんじゃね
たまたま自分もさくらで試していたけど、Pdo_Mysqlもmysqliも入ってなかったorz Pdo_Mysqlが入ってる鯖に乗り換えました
意外とPdo_Mysqlの入ってる鯖って少ないのかな? だったらDb関係は全てPEARで実装するしかないか・・・ $select->from()みたいな感じの記述方法結構気に入ってたのになー
877 :
nobodyさん :2008/02/14(木) 11:46:52 ID:Fq1v3NmX
xrea
PDOで$select->from()? PDOはプリペアードステートメントじゃねーの?
何言ってんの?
あれ?別のアクション呼び出しって$this->_callじゃなかったっけ・・・
インターフェースとか正直PHPにとってJava真似のカッコつけでしかないよな。 これはインターフェースを使って実装したからうまくいったなんて例あったら教えてくれ。
いきなりどうしたんだ?
> これはインターフェースを使って実装したからうまくいったなんて例あったら教えてくれ。 Javaの例がそのままあてはまる。以上。
> Javaの例がそのままあてはまる。
>>881 インターフェイスはメソッドを実装せずにそのまま継承するとエラーを出すクラスを表現する糖衣構文。
絶対なくてはならないものじゃないけど、あった方が便利でいいよね。
それはabstract classじゃないのか
>>886 abstractはすでにいくつか実装されたメソッドを持ってるけど、interfaceは持ってない。
まあ似たようなもんだけど。
あ、もしかして
>>881 は全部abstractでいいじゃんって言いたいのか?
インターフェイスってタイプヒンティングにも使えたっけ?
もち。 使えなかったらインターフェイスの意味なくね?そうでもない?
PHPでの例ならZend_View_Interfaceが良い例だと思うよ。 正直JavaやC#やるまでインターフェイスの便利さが理解できんかった。 便利さが実感できるのは厳格な型がある言語とそうでない言語との違いじゃないかと思う。
891 :
881 :2008/02/15(金) 04:02:49 ID:???
>>890 まさにそうだと思う。PHPなんて何でも受け取れるんだからイランと思う。
PHPは方向を見失ってるな。matzは嫌いだが、言っていることは正論だ。
彼のオブジェクト指向に対する考えの深さには驚く。
ってかrubyも厳格な型がある言語じゃねーだろ
厳格もなにも型がない事の利点を見出して活用してる言語だし、881への指摘としては的外れじゃね その割には仕様がない事による迷走具合が酷かったりするが、まあスレ違いだな phpはどこに向かうんだろな。goto導入とか既にブロガー共の定番ネタ化してるが
>>891 Interfaceいらないっていう理由がよくわからんな
単に自分が使ってないだけじゃないのか?
理由をもうちょい詳しく言ってくれ
>>890 はPHPではインターフェースの便利さが理解できなかったって書いてるのであって
インターフェースが要らないとは書いてないしな。
JavaやC#だってインターフェースを使わなくてもプログラミングが出来る。
しかし、OOPするならインターフェースは欲しい。
言語じゃなくてプログラミングスタイル(っていうのか?)次第じゃね。
896 :
nobodyさん :2008/02/15(金) 08:54:29 ID:WvlYrnu/
インターフェースってのはつまり、エラー報告機能のついたドキュメントだよね。
>>891 >>893 890だけど、ごめん言葉足らずだったわ。
要るか要らないかって言うと俺は便利だから要る。
>>895 言いたい事書いてくれてありがとうw
>>885 ,896
なんか"エラーを出す"にこだわっているというか重点があるように読めるんだけど、
インターフェースはクライアントに見せる仕様書みたいなものだから、
エラーは二次的なもというかそれ以前の話。
茶碗と箸を用意しても腹はふとらない。
茶碗と箸を使うことを決めてるだけで、クライアントは原則それを使う。
インターフェースでプログラムするのがOOPの基本だろ。
>>898 エラーを出すから仕様書みたいな扱いにできるんじゃね?
まあ鶏が先か卵が先かみたいな話になるけど。
900 :
898 :2008/02/15(金) 10:59:35 ID:???
>>899 いや、意外と重要だと思うんだ。間違いじゃないけど、理解度の問題かな?
俺もOOを100%理解しているとは思えないので間違ってたら叩いてくれ。
茶碗と箸を用意(実体化:new)して「飯が食えない」ってエラーが出て便利か? ってこと。
インターフェースが便利なのは、飯が和食じゃなくて洋食となりお皿とスプーンが
必要となったとしても、それは実装で変えればいいだけでインターフェースは変わらない。
クライアントコードは茶碗と箸で洋食が食える(クライアントコードを修正する必要がない)
例えが変な気もするが許してくれ、言いたいことは伝わると思ってるんだが。
> 茶碗と箸を用意(実体化:new)して「飯が食えない」 ワロタ
902 :
898 :2008/02/15(金) 11:08:54 ID:???
ごめん、ちょっと勘違いw。
もちろん、茶碗だけ用意して「箸忘れてんどー」ってエラーが出るのは便利。
>>885 ,896がインターフェースに対してnewしてエラーが出ると言っていると思ってたスマソ。
903 :
898 :2008/02/15(金) 11:27:10 ID:???
なんかツッコミどころを間違えて、ちょっとじゃなくて大きな勘違いだったな。マジでスマソ。 とは言っても、俺的には「実装し忘れてエラー」なんかよりも、 「実装が変わってもクライアントコードはそのまま」がインターフェースの本質だと思ってる。 だから「エラーが出る」とだけ書かれるとなんか引っかかる。 ついに言い訳モード(´・ω・`)
>>892 インターフェースがいらないといってるだけなんだが、良く読んでくれ。
Rubyは動的言語(ダックタイピング)をうまく活かして、インターフェースじゃなく
mixinで多重継承を実現してるといいたいだけ。
>>894 上に述べたことに答えは含まれているけど、
PHPでインターフェース宣言するメリットがどこにあるのかわからない。
Javaは受け取る変数の型によってもクラスを作り変えなきゃいけないからインターフェースで外面を定義するのはわかる。
matzの言葉を借りるなら、「仕様の継承」と「実装の継承」
PHPもJava真似をせずに、違う形で多重継承をサポートすべきといいたい。
905 :
nobodyさん :2008/02/15(金) 16:18:44 ID:WvlYrnu/
厳格性を重視するなら、mix-inとインターフェースは対立するよね。
>>904 上の方でいくつかインターフェイスの利点が挙げられてるけどそれについてはどう思ってるの?
それを言わずに、メリットがどこにあるのかわからない、って言われても俺には何言ってるのかわからない。
すまんけど、もっときちんと説明してくれ。煽りとかじゃなくてマジでわからんから。
PHPはJavaじゃねえっつーの。 interfaceなんかとりいれる暇があったらmixinを実装しろや。 interfaceの利点なんてmixinのそれに比べれば屁みたいなものだし。 ってことじゃないかと思った。
Zendの例で言うとViewを拡張してオレオレViewを作りたい、って時に Zend_View_Interfaceで既定されたAPI通りに作ればそのまま Zend_Controllerに放り込んでも動きますよ、っていう感じで 別のクラス内部で使われるものを拡張するような ライブラリを使う場合にinterfaceの意味はちゃんとあると思うけど (別になくてもいいけど使う側の苦労が増える) rubyのmoduleのようなmixinが欲しいってのはそりゃ同意だけど、 配列をブラケット表現で書けるパッチに大半が反対意見の惨状を見る限り ドラスティックに改善する見込みの無いこの保守的な言語に何言っても無駄だと思うので PHPの言語仕様に文句言う暇があったら他の言語の勉強してる方がまし それか、こんなところでウダウダ言ってないでinternalsに苦情のメールを投げつけたらいい
mixinてIDEの自動補完きかないよね? そんなのイラネ
コーラ噴いた
静的で型の強い言語で得られる利点と、動的で型の弱い言語で得られる利点は違う。 型推論を持つ関数言語では、コンパイル時のほぼ全てのバグを検出できるというけど、 PHPはもともとそういうところを目指した言語ではないから、 PHPの性質からいえば、mixinみたいなものの方が緩くていいように思う。 var引数にどんなクラスのインスタンスも渡せてしまうというのが、 欠点なのか利点なのかというのは、バグ検出の立場から言えば明らかに欠点だけど、 例えばストラテジー・パターンでアルゴリズムを書いた場合に、 C++のテンプレート・アルゴリズムみたいに使えるという利点はある。 interfaceの話で言えば、ここである程度型の保証をしたいということになる。
これ以上PHPをゆるくするのは個人的には勘弁だなあ そういうのはもうRubyでやればいいんじゃね?と思う PHPはJavaのマネをすべきとは思わんがRubyのマネをすべきとも思わんしなあ
半端なのがまずいんでしょ 結局phpは緩い自由度提供したいのか、 堅いチェックできっちり作れる言語にしたいのか。 両方を上手く取り入れられれば理想なんだけど、そうもいかんしね 現状では妥協点がはっきりしないまま迷走してる
現状は前者だろ? 後者に揺れて迷走してるって具体的に何を指してるんだ?
え?おれ自由って認識ないな。制約だらけというか とりあえずcreate_functionは不自由だと思う。透過的に引っ張り回せないし。 nullと空文字を区別してたり===/!==が必要になったりってのも リフレクション周りも妙に不自由するじゃない 良い意味でユルい言語ではないし、良い意味で堅い言語でもない
「良い意味でユルい言語」ではないし、「良い意味で堅い言語」でもない としないと意味が逆にw
917 :
nobodyさん :2008/02/17(日) 01:52:40 ID:HodSsYVt
array();なんて書くのかったるいから[]でいいし hashも区別させたいから{}もつかいたい でもinternalの中の人はそういうの好まないってきいた
ゆるい/堅いというより型が動的だからなぁ。 だからインターフェースがあっても意味が半減するかもしれないが... 以前「php4はメンバがオールpublicなんでカプセルかできねーYO」って書き込みがあって、 そんとき、「カプセル化は独立性が目的なんだから、PEARのようにコーディング規約で...」 って書いたんだけど、そんなんじゃ意味ねぇってことだったかな。 で、アクセス権が指定できるようになって、言語仕様上カプセル化が可能になったわけなんだから カプセル化されたオブジェクトを弄るインターフェースも、ってのは普通の流れになると思うが、 なんでそれがJavaのまねごとになるかなぁ。 一番の自由はユーザの要望かw。 そんな俺はC#の静的コンストラクタが欲しい。
919 :
nobodyさん :2008/02/17(日) 05:24:11 ID:an+fL3fY
privateなメソッドの単体テストってどうしてる?
>>915 > nullと空文字を区別してたり
いや、nullと空文字は概念的に違うものだろ。
ついでに空配列とfalseもそれぞれ違うもの。
たとえばデータベースなんかでも、
nullと空文字は違うもの扱いになっていることが多い。
>>919 それさぁ、前から思っているんだけど、privateなメソッドというものは、
その実装をクラス内部しか知らないわけだから、クラス自身が
自己テストという形でやればいいんじゃないかなと思っている。
つまり、クラスにpublicなtestメソッドを作ってそのメソッドが自己テスト。
問題点としては、クラス自身にテストコードが含まれるため
クラスのコードサイズが膨れ上がるということ。
この問題は、C# 2.0の話になるが、C#には一つのクラスを複数のファイルで書くことができる
partial というものがあってそれを使えばテストコードを分離しながらテスト時にはテストコードを
追加してコンパイルリリース時には省いてコンパイルという方法が使えると思う。
とここまで書いたが、単純に条件コンパイルでリリースモードの場合testコードを取り除くという方法でいいかw
テストコードを別ファイルにしたかったら、include。
Zend_Filter_Inputを各画面で使いたいんですけど、 validatorsには、受け取る可能性のある全てのフィールド (パラメーター) 名を指定しないと行けないのでしょうか。 どんなフィールド名が来るかわからない時にZend_Filter_Inputオブジェクトを取得する良い方法はありますか? 一部のフィールドにはvalidatorを掛けたいので、 validatorsに指定していないフィールドが来た時はvalidateなしでそのまま格納する、 と言うオプションでもあれば良いんですが、今のところ見当たらなくて。 こっちのフィールドがこういう値だったらこっちのフィールドはこういう値じゃないと駄目、 とか言うチェックもやりづらいし。。
924 :
922 :2008/02/17(日) 13:44:48 ID:???
雑にだけどPHP版で書いてみた。 class A { private $value = 1; private function foo() { $this->value++; } public function test($unit_case_object) { include 'a.test.php'; } } //テストコード a.test.php <?php $unit_case_object->assertEqual($this->value,1); $this->foo(); $unit_case_object->assertEqual($this->value,2); $unit_case_object->assertEqual($this->value,100); ?> //UnitCaseからこんな感じで呼ばれる予定 class UnitCaseMock { function assertEqual($value1, $value2) { if($value1!=$value2) { print $value1. ' != ' . $value2 . '<br>'; } } } class TestCase extends UnitCaseMock { function test() { $a = new A; $a->test($this); } }
925 :
922 :2008/02/17(日) 13:47:15 ID:???
privateメソッドはテストすべきとか ユニットテストはそもそもpublicなものをやるものだとか いう話はあるけど、自己テストという形でやるべきだという 話は聞いたこと無いんだよね。 まあ詳しく調べたわけじゃないから知らないだけだろうけど。 誰か知っていたら教えて。
926 :
922 :2008/02/17(日) 13:57:17 ID:???
思いついた改良ポイント class Aをの親クラスでfunction testを作っておけば class Aを継承させるだけですむ。 テストコードのファイルをクラス名から自動判断。 またフォルダにし、a.test/〜.php という形にすれば、 テストコードを記述したファイルを細かく分けられる。 そこに、setUp.php tearDown.php を作ることで、初期化・終了コードも実行できる。
Modelsって、一部の動作を簡略化するためにライブラリみたいな感じで置いて使ってるんだが、 こんな使い方でいいのかな?
modelが処理の根幹だろ・・・
929 :
nobodyさん :2008/02/18(月) 11:12:15 ID:IeH302DJ
modelsにPEARも置いてる俺
>>928 処理はあくまでコントローラで処理のサポートの主な部分がモデルだろ
通常はModelがビジネスロジックを持つ WebフレームワークだとControllerはRouterになりがち ただ、遷移の多いアプリであれば、Routerこそが処理とも思える まあ、役割がちゃんと分かれていればいいんじゃないの
一つのモデルから、もう一つのモデルへ データを移動するような処理は どこに書けばいいのだろうか?
933 :
nobodyさん :2008/02/18(月) 19:06:28 ID:+oxjUq0H
>>933 そもそもSmarty自体が複数のパスに対応してないからしょうがない
まあパスが複数必要になるケース自体も稀だと思うが
最悪、複数Viewのインスタンスを用意して別々のパスを設定すればいいよ
それが手っ取り早いだろう
コントローラの分割の仕方が良く分からない。 結局DB主体に作ってる。 4〜5のマスタを管理するコントローラと、3〜4の関係を管理するコントローラみたいな。 でも結合させるから境界なんてあいまいだし。 流用するモデルもあまりないから利点が実感できない。結局アクションごとに独立しちゃってる。
>>933 Zend_Controller_Action_HelperBroker::addHelper($viewRender);
で $viewRenderを指定すると、よろしくコントローラにひもづいたテンプレートを
取得してくれるけど、そういう話ではない?
単純に色んなパスから取得するのなら、毎回setSctriptPathを指定するしかないんじゃないかなぁ。
$smarty->setSctriptPath('path/to/foo');
$foo = $smarty->render('path/to/foo.tpl');
$smarty->setSctriptPath('path/to/bar');
$bar = $smarty->render('path/to/bar.tpl');
$smarty->setScriptPath('path/to/hoge');
$smarty->assign('foo', $foo);
$smarty->assign('bar', $bar);
$hoge = $smarty->render('path/to/hoge.tpl');
echo $hoge;
Zend/View/Smarty.phpの中身を好きなように書き換えればおk
なんだかんだでSmarty利用率高いよな
>932 それはたぶん、主となるマスタ側のモデルでしょ モデルさえ定義しておけば自然にロジックが機能するのが理想
なんかMVCの良い見本になるオープンソースアプリとかないかね。 理屈は分かるんだけどやはり実物を見ないと理解が深まらない。
Struts
> Struts 重い死に行くフレームワークを持ってこられても・・・
SSH(笑)の一角を死に行くとかいわれても・・・
いや、SpringにとってのStrutsは、JSFに取って代わられつつある というか、>940の言ってるのはフレームワーク使ってる側でしょ たぶん、osCommerceとかXOOPSとか、 あのあたりがフレームワーク準拠のMVCで書かれると、 大きさとしてはいいサンプルになると思うけど そういうのはまだないのかな…
リクエストを受け取って動作を決める部分をC ストレージとのアクセスを担当する部分をM レスポンスを吐く部分をVと言ってるだけだよ 疎結合とDRYを求めたら自然とそうなっていく形 「ここはCなのか?Mなのか?」とか考え始めたら本末転倒になりがち
946 :
nobodyさん :2008/02/19(火) 13:49:56 ID:BGhiTflR
osCommerceのソースって改めて見るとひどいな
XOOPSはXOOPS独自のフレームワークで書かれてて、見た目は結構いいね。 中身は良く知らないけど。
中身はいろいろ糞だと突かれてたな 最近のはどうなのかな。全体を包む部分の設計は良い感じなんだけど、掘り進むと(※現場適用を想定)あーこれこっちからも使えるようにしたいなーでもそういう組み方じゃないんだよなーとか色々悩んじゃうね プロジェクト逼迫してる今やるこっちゃないなw zendでメールマガジンサーバ/webUIをきっちり作り込んでみたものの、MTA選定が右往左往。。validationクラスは素性が良くて助かります。DB絡みのブリッジでもプレースホルダきっちりしてて良い感じです ここで俺はぷかぁと煙草くゆらすわけです。 ほんとにこれでいいのかと。この後にDB版に投げて大丈夫なのかいなと。 cube以前のxoops採用は弊社では失敗で終わりました故の愚痴でしたお気に絵図
>>948 時間が出来たら、是非サンプルとか公開してくだちい>q<
オープンソースのウェブアプリって なんか有名だから、簡単に採用できるだろ?と 思って使ってみると、こりゃダメだってのが多いよな。 スキル無くて、こういう機能は搭載されていません。 自分のところでは作れません。 できるのは設置とプラグインいくつか入れる程度です。 って所なら、こういうもんってあきらめて終わりなんだろうけど、 自社で開発できる所が、開発費・開発日数削減で使おうと考えると 自社で作ったら簡単に出来るであろうことが、 改造で組み込む→ソース汚い→改造しにくい→愚痴が出る。 ということになるんだよな。
愚痴ですか?
事実です
そのプロジェクト、ぜんぶ空みたいだけど なんかZFに対していいしれぬ不安を覚えた…
始める→ZFショボ!!→他やるわ こんな感じじゃね 俺もだけど
MVCの切り分け方は自由であることを承知の上で聞くけど、 各コントローラに対するアクションって、confirm,update,deleteみたいな3〜4個の機能を実装するのが基本なの?
>>956 1コントローラに対して1リソースのCRUD関連アクションを
実装するのはまあ普通だ、わかりやすいからな
前にSmartyについて質問したもんです。おかえさまで解決。 サンクス。 しかし、デフォルトと違うディレクトリ構成にしたせいか。 ルーティング?でこけて404になる。 <?php require_once 'Zend/Controller/Front.php'; $front = Zend_Controller_Front::getInstance(); $front->setParam('noViewRenderer', true); $front->setControllerDirectory(array( 'default' => '../../application/modules/aaa/controllers', 'aaa' => '../../application/modules/aaa/controllers', 'bbb' => '../../application/modules/bbb/controllers', 'ccc' => '../../application/modules/ccc/controllers', 'ddd' => '../../application/modules/ddd/controllers' )); $front->dispatch(); aaaとかはモジュール名です。ここに書いたパスにちゃんとコントローラーが 置いてあるんですけど、404になるんです。この程度のことでルーター系の クラスとかいじらないといけないんでしょうか???
.htaccessちゃんと設定できてるか? routingのエラーなら404にはならないよ少なくともデフォルトでは
routingのエラーならZend_Controller_Dispatcher_Exceptionが発行されるはず。 パスの指定に相対パス使ってるけど、それって行けるの? いつも絶対パス使ってる。。 とりあえず$front->dispatch(); を try-catchでくくって例外エラーひろってみたら?
961 :
nobodyさん :2008/02/23(土) 22:32:04 ID:NHRB8E0h
漏れも絶対パスつかてるよ。 相対パスは試したことないから分からないけど… Zend_Db_Table って JOIN できるの? マニュアルには出来るって書いてあるけど出来ねー 例 10.97. は嘘か
962 :
958 :2008/02/24(日) 00:34:51 ID:???
Zendの入門本が相対パスだから、相対パスにしてみた。 それで簡単な(Hellow Worldだけ)IndexControllerを書いたら、 ちゃんと動いた。 しかし、ちょっと進化したController書いて958のように したら、404に。そこで、絶対パスに変更してみたところ、 960氏の言うようにZend_Controller_Dispatcher_Exception が発行された。よく分からない・・・。
君にゃFWはまだ早いんでは・・・
>>962 >>958 見て思ったんだけど、
'default' => '../../application/modules/aaa/controllers',
'aaa' => '../../application/modules/aaa/controllers',
ってこれって同じディレクトリ指定してるけど、'aaa' => の方を消したらどうなる?
aaaの方は要らないと思う。
フォームはテンプレートから呼び出せた方が良いと思う
禿同。オレも使わん。 ファイルのアップロードのクラスとか、Zend_Configでyamlをデフォルトで使えるように サポートして欲しい。
968 :
958 :2008/02/25(月) 01:00:35 ID:???
だめだ・・・直接index.phpを呼んでも404だ。 index.phpを単なるハローワールドにして呼ぶとちゃんと出てくる。 でもZendにフロントにすると404だ。 俺にはFWは早いって言うか、プログラマやめっかな。
ホントに404か?それ
ひょっとしてErrorHandlerとかErrorControllerが設定されてない? ほんでもって、アクセスしてるURLは規約通りか?
971 :
958 :2008/02/25(月) 12:44:26 ID:???
ErrorHandlerもErrorControllerもないです。
昨日とは状況が変わって、
http://host/index.php と呼ぶと
defaultのIndexControllerが呼び出されるけど、
http://ホスト/index/ とかにすると、
Not Found
The requested document was not found on this server.
になるんだよね・・・。
htaccessだろ
973 :
958 :2008/02/25(月) 18:56:29 ID:???
.htaccess以前だな 規約に従えってことか
addModuleDirectoryを使ってるとよくわかるけど モジュール名が必要というよりは、 defaultモジュールの場合だけモジュール名が省略できると思っていればいい
Zend_FormのaddElementでselectを作りたいんですが、 optionsはどうやって指定すればよいのでしょうか? $form->addElement('select', 'test', array(1 => 'a', 2 => 'b')); $form->addElement('select', 'test', array('options' => array(1 => 'a', 2 => 'b'))); $form->addElement('select', 'test', array('attribs' => array('options' => array(1 => 'a', 2 => 'b')))); 上の三つは全てダメでした。分かる人教えてください。
今見てみたら俺のZFにZend_Form入ってねぇ
Zend_Form は 1.5.0RC1 からだと思う
979 :
976 :2008/02/27(水) 16:53:34 ID:???
自己解決しました。 $form->addElement('select', 'test', array('multiOptions' => array(1 => 'a', 2 => 'b'))); マニュアルにサンプルソースを書いておいてほしかった…
どのレベルからmoduleを分けたら良い? いま、全部デフォルトモジュールにしてるんですが、 ユーザー画面と管理画面くらいは別モジュールにするべきか、 または、もっと細かいレベルで分けるべき?
ほんとそれは俺も目下の問題 何か指針になるものがあればいいんだが
全部デフォルトモジュールで良いよ でURLをRouter側でうまいことやりくりすればいい ZFのモジュール構造だとディレクトリがごちゃごちゃし過ぎる railsやcatalystみたいに各controller/view/model以下での サブディレクトリの形にしたらいいのにと思う ただ管理画面みたいに普通ならモジュール切りそうな括りは AdminControllerみたいな継承元になるベースコントローラを用意しておくと便利 アプリ全体のベースコントローラが1つ、 管理画面全体のベースコントローラが1つ、 とかで良いんじゃないかな
モジュールよりもコントローラの分け方が分からん
modelsにモデルを置いたところで、 呼び出す時はどうしてる? いちいちrequire_once 'パス';とかするのって何か効率悪くね? それならライブラリの集まりにでもしておいて予めinclude_pathを設定しておいたほうがいいと思うんだが それともモデルを呼び出すような関数があるとか・・・?
最初にmodelsにあるファイルを まとめてロードするようにしとけばいいだけの話 毎回全部modelをロードするのが嫌ならautoloadで modelもロードできるようにしておけばいい というかZFはやりたいようにやればいい
何か、Zendって規則きっちり勝手に作るわりには その辺が曖昧だよなぁ・・・ 自分でモデルを呼び出すスクリプト組んだわ・・・
どういうの?気になる
ディストリパッケージより いい加減公式でPEARチャンネル立てて PEARでインストールできるようにして欲しい 自前のスクリプトでPEARパッケージにして入れてるけど 自動でupgradeできないのが面倒
pearには入らんだろ たぶん。
だよな
うめ
うめ
うめ
うめ
うめ
ZendFramework \(^o^)/
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。