Zend Framework Part3
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2009/04/10(金) 08:35:00ID:???http://framework.zend.com/
マニュアル
http://framework.zend.com/manual/ja/
(有力翻訳者のm-takagiさんのver)
http://www.m-takagi.org/docs/php/zend/
バグ報告
http://framework.zend.com/issues/secure/Dashboard.jspa
API
http://framework.zend.com/apidoc/core/
前のスレッド Zend Framework Part2
http://pc11.2ch.net/test/read.cgi/php/1204726884/
0733nobodyさん
2009/12/09(水) 23:10:19ID:???0734nobodyさん
2009/12/10(木) 18:41:05ID:???どういうこと?
機能のことを言ってるの?
0735nobodyさん
2009/12/10(木) 19:43:33ID:???いろんなフレームワーク使って作っているうちに解るよ
ちなみに一人で全部やるなら何使っても同じ
0736nobodyさん
2009/12/11(金) 02:44:29ID:???趣味で遣るなら、駄目なら乗り換えるで居心地いい所に落ち着くまでは苦労が続くのが普通。
http://pc11.2ch.net/test/read.cgi/php/1253912143/
【PHP】PHPフレームワーク総合スレ14
http://pc11.2ch.net/test/read.cgi/php/1172328149/
2ch有志がPHPフレームワークを作るスレ
0737nobodyさん
2009/12/11(金) 03:02:24ID:???大規模ってのはそれこそYahooとかあんなレベルだから
ECサイトとかオークションとかあんなくらいなら普通に中規模
0738nobodyさん
2009/12/11(金) 08:44:01ID:???0739nobodyさん
2009/12/11(金) 11:52:51ID:???PEARだけでSNS作っちゃうスーパマンも居るだろうし、フレームやCSS生成にフレームワーク必須レベルも居るだろうし。
0740nobodyさん
2009/12/11(金) 12:16:14ID:???そう言うことじゃないと思う
0741nobodyさん
2009/12/11(金) 12:33:25ID:JAvSDZev0742nobodyさん
2009/12/11(金) 14:37:08ID:???それはあるね。
でも、新しいフレームワーク使うときは教えるのに一苦労。
後輩からちょっと変わったこと聞かれて、
「今忙しいから後でいい?」
と答えたくせに、裏で必死こいて調べるとかw
先輩面すんのも楽じゃないぜ。
0743nobodyさん
2009/12/11(金) 14:38:42ID:???調べたら解るから自分でやりなよ
でいいのでは
Symfony除く
0744nobodyさん
2009/12/11(金) 14:59:07ID:???いろいろやってると訳わからん不具合も出てくる。
システム担当者が俺だから責任持ってやらんとならんのよ。
0746nobodyさん
2009/12/11(金) 15:28:34ID:???不具合出るたびに担当者に投げるプロジェクトってなんだよw
0747nobodyさん
2009/12/11(金) 16:00:25ID:???それにすぐこの業界は「自分で調べないと成長しない」というけど、
会社としてチームとしては聞きにきてくれたほうがいい。
そうすればたいがい10秒で終わる。
仕事時間が増えれば体力を消耗するし、残業になれば余分に金がかかる。
自分で長い時間かけて問題に取り組めば知識や技術が身につくが、
そんなもん会社でやるべきことじゃない。
少なくとも忙しいときにそんなことやってはいけない。
なぜなら会社は利益を上げることが第1の目的だから。
会社で新人がまず学ばなきゃならないのは、どうやって金を稼ぐかってこと。
日本のIT業界に関係する人間はその部分が弱すぎる。
コスト計算さえできないのにSEを名乗ってるバカが多すぎなんだよ。んったく。
おっと私怨失礼。
0749nobodyさん
2009/12/11(金) 17:30:20ID:???0750nobodyさん
2009/12/11(金) 23:20:12ID:???0751nobodyさん
2009/12/12(土) 12:39:05ID:???ありがとうございます。
ちゃんと考えて作られてたのですね、素晴らしい!
検索してみたらこんなページがあったので貼っておきます。
ttp://codezine.jp/article/detail/2929
0752nobodyさん
2009/12/13(日) 02:14:28ID:???コントローラーで表示させないといけないんでしょうか?
0753nobodyさん
2009/12/13(日) 02:23:10ID:???0754nobodyさん
2009/12/13(日) 02:31:08ID:???publicディレクトリはドキュメントルートじゃないの
0755752
2009/12/13(日) 03:51:18ID:???>>754
返答ありがとうございます.でもやっぱりできませんでした.
ディレクトリの構造はZend Framework推奨のものにしています.
画像だけならコントローラー内で
$response = $this->getResponse();
$response->setHeader('Content-Type', 'image/jpeg');
$response->setBody(file_get_contents('./images/temporary-closed.jpg'));
で読み込めたんですが
これだとビュースクリプトの内容が表示されなくて困ってます.
0756752
2009/12/13(日) 03:54:25ID:???コントローラ内の画像がhoge.jpgでした
$response = $this->getResponse();
$response->setHeader('Content-Type', 'image/jpeg');
$response->setBody(file_get_contents('./images/hoge.jpg'));
0757nobodyさん
2009/12/13(日) 04:03:33ID:???どこから説明していいか迷うわ
0758nobodyさん
2009/12/13(日) 12:20:48ID:???0759nobodyさん
2009/12/13(日) 19:43:28ID:???もし本気ならContent-Typeはultipart/mixedだぞw
0760nobodyさん
2009/12/13(日) 19:57:29ID:???こういうのが聴いて来られても無駄に成るだけのタイプ。
自分で調べないから、成長しないしねえ。仕事出来る人の時間を消耗するだけだから、チームとしてのパフォーマンスが堕ちる。
0762752
2009/12/13(日) 20:50:29ID:???もっと勉強してからにします.
変な質問してすみませんでした.出直してきます.
0763nobodyさん
2009/12/13(日) 21:35:29ID:???ZFでドキュメントルート外の画像等に認証を書けたり、画像を変換してから
送出する方法を知りたいわけでしょ。
Cakeでもそういう話は出てくるけど、重いからねぇ、その処理。
ちなみに、ZFのResponseオブジェクトは標準ではバイナリは扱えないから、
オレオレResponseオブジェクトを作ればいい線いくと思う。
0764nobodyさん
2009/12/13(日) 21:40:41ID:???$this->_helper->viewRenderer->setNoRender()
Layout使ってるなら
$this->_helper->layout()->disableLayout()
すれば何の問題もない。
バイナリ使えないとかいっちゃうおじさんの話は聞いちゃだめ。
0766nobodyさん
2009/12/13(日) 23:10:24ID:???はぁ?
Zend_Controller_Response_AbstractでStringにキャストされるんだが、
それでも、sendResponseで画像が送れるとでも?
0767nobodyさん
2009/12/13(日) 23:25:40ID:???え、、俺のサイトで何の問題もなく送れてるけど。。
そもそも文字列(バイナリ)を文字列にキャストして別物になるとか、、
だいじょうぶ?
<?php
$file = file_get_contents('http://www.google.co.jp/intl/ja_jp/images/logo.gif');
echo md5($file)."\n";
echo md5((string)$file);
/*
4ecc2708ed3a513b22f7ca108a96fc0c
4ecc2708ed3a513b22f7ca108a96fc0c
*/
0768nobodyさん
2009/12/13(日) 23:30:36ID:???0769nobodyさん
2009/12/13(日) 23:44:31ID:???質問者も画像は出てるんだろ
でないのはビュースクリプトの内容であって
だからみんなスクリプトにimgタグ挿差込めって最初言ってたわけで
0770nobodyさん
2009/12/14(月) 02:35:57ID:???0771nobodyさん
2009/12/14(月) 19:15:06ID:???過去のバージョンとの互換性は完全に無くなる。
0772nobodyさん
2009/12/14(月) 20:15:24ID:???0773nobodyさん
2009/12/15(火) 17:44:35ID:???0774nobodyさん
2009/12/16(水) 08:05:51ID:???Cakeは画期的でphp知らない人を対象にした感じだったけど
ZFはphpが出来る人を対象にしたような印象だった
0775nobodyさん
2009/12/17(木) 10:39:14ID:???この値を以下のようにビュースクリプト内で条件分けして表示したりしなかったりしてるんですが、
<?php if ( $this->hogeflag ) { ?>
<!-- # 表示するものがあるなら-->
<?php echo $this->hogemsg ?>
<?php echo $this->hogemsg2 ?>
<?php echo $this->hogemsg3 ?>
<?php } else { ?>
<!-- # 何も表示しない-->
<?php } ?>
これを、どのページでもやりたいって思いました。
この場合、全部のアクションコントローラに、
モデルの結果を$this->viewに代入っていう処理を追加していかなきゃいけないのでしょうか?
アクションごとってのはさすがにあれなので、コンストラクタで行ってしまうとか?
いいやり方が無いかなぁと思って、
自作ビューヘルパを作って、モデル呼ぶのとか上記部分を中でやるってことも考えたのですが、
これだとページのデザイン変更時にビュースクリプトではなくビューヘルパの方を変えないといけなくなってしまうので
デザイナーの方が困るようです。
何かいい方法ありますでしょうか?
0776nobodyさん
2009/12/17(木) 10:42:20ID:???複数のコントローラに跨がるならスーパークラス作る
0777nobodyさん
2009/12/17(木) 11:52:20ID:???似たようなレイアウトのページをいくつも作らないといけない場合、
今はビューヘルパのスーパークラスを作って、継承したサブクラスでページを出力しているんだけれども、
もっとスマートか方法があるんじゃないかなと常々思っていまして。
0778775
2009/12/17(木) 13:06:25ID:???スーパークラス化というのですか?共通の基底コントローラを挟もうと思います。
※基底コントローラ
class DefaultController extends Zend_Controller_Action {
public function init() {
// 共通初期処理
$model = new GetHogeModel;
$this->view->hogeflag = $model->getflag();
$this->view->hogemsg = $model->getmsg();
$this->view->hogemsg2 = $model->getmsg2();
$this->view->hogemsg3 = $model->getmsg3();
// 継承先初期処理へ
$this->init2();
}
public function init2() {
}
}
※他のコントローラ
class IndexController extends DefaultController{
public function init2() {
//コントローラごとの初期処理
}
public function indexAction() {
echo $this->view->render("hoge/index.html");
}
}
こんなイメージでいいんでしょうか???
0779nobodyさん
2009/12/17(木) 13:37:26ID:???サブクラスでinitをオーバーライドして、オーバーライドしたinitメソッド内でparent::initすればいい
0781nobodyさん
2009/12/17(木) 16:02:16ID:???0782nobodyさん
2009/12/17(木) 16:19:54ID:???0784nobodyさん
2009/12/17(木) 17:03:41ID:???他のオブジェクト指向なフレームワークや言語でも応用できる方法だから
あんまりZendべったりじゃなくて俺は好きだ
0785nobodyさん
2009/12/17(木) 17:57:23ID:???0786nobodyさん
2009/12/17(木) 18:14:18ID:???0789nobodyさん
2009/12/17(木) 18:41:00ID:???プログラミングは発展してるじゃん。
楽したいと思うのは当然のことだ。
いや、プログラマの権利だね!
0790nobodyさん
2009/12/17(木) 19:00:47ID:???0791nobodyさん
2009/12/17(木) 19:01:22ID:???0792nobodyさん
2009/12/17(木) 19:49:58ID:???0794nobodyさん
2009/12/29(火) 16:05:32ID:VOALtVVE教えてください。
ZendDB使ってfetchallとかした場合に
SQLエラー、DBエラー、正常終了だけどゼロ件
など考えられますが、その処理の分け方がよくわかりません。
0795nobodyさん
2009/12/29(火) 17:24:07ID:???try-catcheでZend_Db_Exceptionをとれば分かると思うが
俺はSQLエラーとDBエラーの区別まではやってない
データ無しは返り値をcount()すればよいかと
0796nobodyさん
2009/12/29(火) 17:42:55ID:VOALtVVEレス感謝。
Zendといってもやり方は普通でいいんですね!
0798nobodyさん
2009/12/31(木) 11:20:51ID:???他人の設計を見ると、いろいろ参考になるな。
0799nobodyさん
2009/12/31(木) 12:48:19ID:???0801nobodyさん
2009/12/31(木) 13:34:59ID:???0802nobodyさん
2010/01/01(金) 16:40:50ID:A1Hlzrb8来年もよろしくなぁ!みんな
ありがとうZendFramework!!!!!!!!!!!!!!!!!!!!!!!!!!
0803nobodyさん
2010/01/01(金) 16:51:38ID:???札束の風呂に入ってウシシな状態。
これもそれも全部zendのおかげ。
0804nobodyさん
2010/01/01(金) 17:51:24ID:???0805nobodyさん
2010/01/01(金) 22:45:55ID:A1Hlzrb8ZendFrameworkさんお願いします。
0806nobodyさん
2010/01/02(土) 03:21:31ID:I6hjNCgm僕も奇麗なコードにしたいです。
module構造でDefault, Adminというモジュールを作成しています。
DefaultにはDefault_Bootstrapクラスとして
Zend_Application_Bootstrap_Bootstrapを継承し、
AdminにはAdmin_Bootstrap.phpクラスとして
Zend_Application_Module_Bootstrapを継承しています。
両方とも_initから始まるメソッドを定義しています。
上記の状態でブラウザからDefaultモジュールにアクセスすると
AdminモジュールのBootstrapまで動いてしまいます。
動き的に期待しているのはそのモジュールのみのBootstrapが
動いてくれればと思っているのですが、うまくいきません。。
皆様、どうやって使用してますか?
0807nobodyさん
2010/01/02(土) 11:34:18ID:2ObkH84Vリソースプラグイン
moduleControllerDirectoryName (アプリケーションがモジュールに分割されている場合)アクションコントローラが設置されているサブディレクトリ名を指定
moduleDirectory (アプリケーションがモジュールに分割されている場合)モジュールが設置されているディレクトリ
ttp://codezine.jp/article/detail/4366?p=4
会員にならないと見れないかも
0808nobodyさん
2010/01/02(土) 11:37:43ID:2ObkH84V設定ファイルに設定を記入する際、
フロントコントローラーを生成するリソースプラグイン
項目名 説明
controllerDirectory アクションコントローラが設置されているディレクトリ名を指定。ただし、アプリケーションが複数のモジュールから成る場合には、配列で(モジュール名)=>(ディレクトリ名)という形で指定
moduleControllerDirectoryName (アプリケーションがモジュールに分割されている場合)アクションコントローラが設置されているサブディレクトリ名を指定
moduleDirectory (アプリケーションがモジュールに分割されている場合)モジュールが設置されているディレクトリ
0809nobodyさん
2010/01/02(土) 17:16:07ID:???これのことでしょ?
http://framework.zend.com/issues/browse/ZF-6685
0811nobodyさん
2010/01/02(土) 23:47:45ID:I6hjNCgm>808さん
>809さん
教えて頂いてありがとうございます。
もしかしたらですが、自分はBootstrapの使い方自体を間違えているのでしょうか?
期待しているのは各モジュールのBootstrapに_initLayoutというメソッドを追加し、
そこでモジュール毎のlayoutファイルを変更したいと考えています。
こういう使い方、そもそもBootstrapにて記載しないほうが良いのでしょうか?
_initAutoload()のような感じでモジュール毎のクラスを自動読み込みするような
処理のみをBootstrapには記載したほうが良いのですかね?
0812nobodyさん
2010/01/03(日) 00:00:40ID:quLBmdEYresources.modules[] =
お騒がせしてすいません。。
0813nobodyさん
2010/01/03(日) 05:37:52ID:???ZFに限っていえば、その辺の作法は自由でいいんじゃないかな。
他のフレームワークの多くはFWが用意するアーキテクチャ以外は邪道だけど
ZFの場合はアーキテクチャが緩いから、自分好みに設計すればいいよ。
ただ、モジュール別のレイアウトファイルを使うだけなら、
モジュール別Bootstrapというより、Layoutパスの与え方だけで済むと思う。
0814nobodyさん
2010/01/03(日) 23:51:26ID:GumIc7qR共通設定みたいなので
My_Application_Resource_Configって作ろうとしたら
init()が呼び出されないんですけど
Configって名前なんで使えないんでしょうか?
0815814
2010/01/04(月) 00:14:31ID:???Bootstrap.phpに_initConfigがいたせいでした
ごめいわくおかけました
0816nobodyさん
2010/01/05(火) 04:24:32ID:OIqW2mkQ空白の場合は「名無しさん」になるようなことをしようとしたのですが
そうするとgetValue()がフィルターを通す関係で
デフォルトの空白が「名無しさん」に変換されてしまいます
これを打開するにはどうしたらよいでしょうか
0817nobodyさん
2010/01/05(火) 04:30:13ID:???0819nobodyさん
2010/01/07(木) 09:06:02ID:7Y5nOQnh$db->fetchAll(
"SELECT hoge FROM hoget WHERE var = :v",
array('v' => 'Sir')
);
どうも不慣れというか面倒なので普通に
SELECT hoge FROM hoget WHERE var=$v
とかのクエリ書いてしまってるけどこれだとどういう問題があるんでしょうか?
SQLインジェクション対策を自前でやらなきゃいけなくなるってことですか?
0820nobodyさん
2010/01/07(木) 09:31:31ID:???exprを動的に投入しないならどっちでもいいわよ。好きにして
0821nobodyさん
2010/01/07(木) 14:02:33ID:7Y5nOQnhどうもありがとう
もう一つ聞きたいんですが、バーチャルドメインで siteA.com, siteB.comの2つを運用してて
両方でzendFWを利用する場合どうしたら良いんでしょう?
FWのソフトのインストールを一つだけし、それぞれのフロントコントローラでapplicationディレクトリを
別々に指定すれば独立したアプリケーション構造を持たせることが出来るんでしょうか?
0822nobodyさん
2010/01/07(木) 14:14:33ID:???微妙に意味がわからないが、エスパーしてみると。
モジュールを共有しないで独立で作成するなら、
moduleディレクトリを独立で作成してエントリポイントで振り分けるといいかも。
モジュールを共有するなら、ドメインでルーティングするだけでOK
つ Zend_Controller_Router_Route_Hostname
0823821
2010/01/07(木) 16:22:54ID:7Y5nOQnhありがとうございます。
なるほど、ドメインでルーティングすることが出来るのか〜。助かりました。
では、さらにまた少し違う質問ですが siteA.comで携帯版サイトを作るとします。
ドメインは mobile.siteA.comです
この場合、apacheの設定でサブドメインでフォルダ振り分けという良くある方法と
zendFWのルーティングでコントローラ名(mobile)を実行する方法とどっちが良いんでしょうか?
この2つはどう違うのか、そもそもわからないんです…
フォルダ振り分けってことは、zendFWが動いてる以上任意のコントローラーに委譲することとほぼ同じですよね?
(mod_rewriteの例外指定してなければ)
現在、コントローラ(仮にmobileコントローラ)に委譲するのが気が進まないのですが、その理由として
PC版サイトに profileコントローラ(indexアクション/editアクション)、searchコントローラ…て風に
複数コントローラがあってそれを携帯版でも実現しようとすると、コントローラはmobileコントローラで
「固定」(確定?)しているために、PC版で独立したコントローラとして動いてたものをその中の細かいアクションとして
動作させなきゃいけない気がするためです。
profileコントローラのindexアクションは -> profile_indexアクション(mobile.siteA.com/profile_indexにアクセス)
searchコントローラのshopアクションは -> search_shopアクション(mobile.siteA.com/search_shopにアクセス)
…と言う感じに。。
つまり、全部のコントローラとそのアクションを全部mobileコントローラにまとめて書かなきゃって
思い込んでるんですが、勘違いでしょうか? 解決方法あれば教えてもらえると嬉しいです。
長くてすみませんが宜しくお願いします
あと、>>822さんに教えていただいたドメインを使ったルーティングって、ドメインが存在してないと
テストできないのですか?
自宅サーバのlocalhostで動かしている環境で、この機能を試すことは出来るんでしょうか?
0824nobodyさん
2010/01/07(木) 18:36:43ID:???hostsに書くといいよ
0825821
2010/01/08(金) 03:09:11ID:???凄い! hostsなんて知りませんでした。疑問がわいた部分もありますが、それは別板で質問します。
>>823の前半部分の、
「apacheの設定でサブドメイン用ディレクトリにリンクさせるのと、任意のコントローラにroutingする場合の違い」
「mobileコントローラに全部のコントローラ+アクションをまとめて記述しなきゃダメなのか?」
という部分はどうなんでしょうか?
繰り返しですみませんが、気が向いた方回答いただけると嬉しいです
0826nobodyさん
2010/01/08(金) 09:11:27ID:???モバイル版でもPC版と全く同じコントローラ/アクションを使用したいのであれば、
コントローラ自体はPC版と共有し、ビューのみモバイル版を用意すればいい。
PCとモバイル版でロジック自体が変わるのであれば、mobileコントローラを作り必要なアクションを記述する事になるかと。
ページ数が多いのであれば、Mobileモジュールにしちゃうかな・・・
PC版と共有する処理は基底クラスに記述しておき、両方のモジュールから使用出来るようにしておく。
>apacheの設定でサブドメイン用ディレクトリにリンクさせる〜
複数ドメインで同じシステムを使い回す場合、
ルーティング処理で振り分けるか、ブートストラップをドメイン分用意して処理をわけるかしか無いんじゃ?
難しく考えすぎている気がするw
0828nobodyさん
2010/01/08(金) 23:32:05ID:FFzCAEUMRADとして使用するのであればCakePHPが〜といった風潮が現在はありますが
ZFでもzfコマンドがもっと強化されたり、modelがもっと簡単に実装できたり、
最終的にscaffoldがついたりすると本当に良いフレームワークになりますよね。
勿論そういったRADのガシガシの堅さがなく、緩くて自由度が高いのが
ZFの良さでもありますがZend_Applicationなんかが出たときからは
ある意味、作り方のルールみたいなのができたりしてますしね。
早くより、便利になりませんかね。
皆さん、ブログとかでもっともっとZFの情報を増やしていきましょい。
0829sage
2010/01/08(金) 23:46:30ID:FFzCAEUM0830nobodyさん
2010/01/09(土) 04:18:51ID:???SymfonyかCakePHPだけでいいよ。
■ このスレッドは過去ログ倉庫に格納されています