Zend Framework Part4
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん
2010/02/09(火) 22:21:24ID:???http://framework.zend.com/
マニュアル
http://framework.zend.com/manual/ja/
翻訳状況
http://mikaelkael.dyndns.org/checker/language/details/lang/ja
http://framework.zend.com/wiki/display/ZFDEV/Japanese+(Nihongo)
バグ報告
http://framework.zend.com/issues/secure/Dashboard.jspa
API
http://framework.zend.com/apidoc/core/
前のスレッド Zend Framework Part3
http://pc11.2ch.net/test/read.cgi/php/1239320100/
0838nobodyさん
2011/01/23(日) 11:24:33ID:???あだ名付けようぜ、今日からお前「グダ質」な
お前相当仕事でストレスたまってんだろ
はっきり言って見苦しいぞ
スレにケチつける暇あったらコード書け
0841nobodyさん
2011/01/23(日) 13:42:14ID:???0842nobodyさん
2011/01/23(日) 15:24:06ID:???$request = Zend_Controller_Front::getInstance()->getRequest(); でもいいし、
$request = new Zend_Controller_Request_Http(); でもいいし、
$request = Zend_Registry::get("REQUEST"); でもいいし、
$request = $_POST; でもよい。
0843nobodyさん
2011/01/23(日) 18:41:07ID:???ZFでエラーが起きた行を表示してくれる機能などあるのでしょうか?
0844nobodyさん
2011/01/23(日) 18:54:57ID:???0845843
2011/01/23(日) 18:57:36ID:???自動で行ってくれないかなと思って質問しました
0846nobodyさん
2011/01/23(日) 18:59:06ID:???0847nobodyさん
2011/01/24(月) 02:13:32ID:???開発環境にxdebug入れてるが、自動でエラートレースしてくれて便利だよ。
それが無理なら、
エラーと例外のハンドラ作って、var_dump(debug_backtrace()) とでも書いとけ。
0848759
2011/01/24(月) 19:25:07ID:???その後の報告ですが、
やっと原因がわかりました。
Hogeクラスの親クラスのプロパティの初期値に
nullと設定すべきところを
nulとしていたのが原因でした。
お騒がせいたしました。
0849nobodyさん
2011/01/24(月) 21:15:03ID:mS3EM73vclass IndexController extends Zend_Controller_Action{
public function indexAction(){
a
}
}
ってするとパースエラーが表示されますが、
class IndexController extends Zend_Controller_Action{
public function indexAction(){
$this->hoge();
}
}
ってするとエラーハンドラにキャッチされてerror.phtmlが表示されてしまいます。
エラーハンドラを無効化しようとBootstrap::_initView()に
$front=Zend_Controller_Front::getInstance();
$front->setParam('noErrorHandler', true);
と書くと、
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><META content="IE=5.0000" http-equiv="X-UA-Compatible">
<META content="text/html; charset=utf-8" http-equiv=Content-Type></HEAD>
<BODY></BODY></HTML>
という書いたことのない謎のソースが表示されてしまいます。
ふつーにUncaught Exceptionって表示させたいだけなんですがどうすればいいのでしょうか。
0850nobodyさん
2011/01/25(火) 02:21:16ID:???Bootstrap::_initView() に
$front->throwExceptions(true);
または
$front->setResponse(new Zend_Controller_Response_Http())
->getResponse()->renderExceptions(true);
ソースは以下
Zend_Controller_Front::dispatch()
} catch (Exception $e) {
if ($this->throwExceptions()) {
throw $e;
}
$this->_response->setException($e);
}
Zend_Controller_Response_Abstract::sendResponse()
if ($this->isException() && $this->renderExceptions()) {
0851nobodyさん
2011/01/25(火) 02:50:09ID:???Zend_Applicationを導入する優位性を教えてくれないか?
煽りとかでは無く、
アプリケーションの起動処理って、分岐の無いロジックかつ、アプリケーション固有処理が入る事が多いので汎用クラス(Zend_Application)を使うメリットが感じられないんだ。
0852nobodyさん
2011/01/25(火) 10:44:20ID:???してくれる。やってることはZend_Applicationを使わない場合でもそう変りないはずだよん。
むしろ一番フレームワークらしい気がする。
0853nobodyさん
2011/01/25(火) 11:05:16ID:???自分でカスタマイズするときは、application.iniでパラメーター変更したり、クラス名変更したり、
Bootstrapで自分でnewするんだす。
0854nobodyさん
2011/01/25(火) 12:15:31ID:???ありがとう!
やっぱ基本的な初期化処理とかを行うクラスみたいだね。
元々BootstrapもApplicationも無いバージョンから使ってて、
独自クラスで実装してたんだけど、乗り換えてもあまり大差なさそうだ・・・
暇を見つけて乗り換え検証してみるよ。
0855nobodyさん
2011/01/25(火) 21:14:33ID:Mp2xKR4sできた!さんくす
…Zend_Applicationは巨大すぎて把握しきれんわ
あとvar_dumpしたら至る所に*RECURSION*って出てくるんだが大丈夫なんだろうか?
0856nobodyさん
2011/01/25(火) 21:22:58ID:???0857nobodyさん
2011/01/25(火) 23:20:26ID:???大丈夫。
リファレンス値が入っていると無限階層になっちゃうから、
そういう変数はRECRUSIONと表示される。
0858nobodyさん
2011/01/29(土) 00:59:18ID:gRK6VmbLZend_Application使ってるとき、
・ビュー内で$this->baseUrl()するとindex.phpまでのパスが取得できる
・コントローラ内で$this->view->baseUrl()するとindex.phpまでのパスが取得できる
でも、
・ブートストラップ内で
$view = new Zend_View();
$view->baseUrl();
ってやってもNULLになります。
アプリ全体で使うものについて
protected function _initView(){
$view = new Zend_View();
$view->headScript()->appendFile($view->baseUrl() . 'js/jquery.js');
}
とかやりたかったんですが普通はどこらへんでやるものなんですかね?
0860nobodyさん
2011/01/29(土) 01:55:56ID:gRK6VmbL0861nobodyさん
2011/01/29(土) 01:58:15ID:???0862nobodyさん
2011/01/29(土) 03:40:53ID:???$request = new Zend_Controller_Request_Http();
$baseUrl = $request->getBaseUrl();
0863nobodyさん
2011/01/29(土) 06:44:22ID:???デザインも複雑な場合(チェックボックスの最初の1個だけラベルが二つとか)、
Zend_Form_Elementを使ってフォームの要素を出力しようとすると、フォームの要素の部分がすげーめんどくさいんだが、
なんとか楽にやる方法ないかな?
0864nobodyさん
2011/01/29(土) 11:49:18ID:???0865nobodyさん
2011/01/29(土) 23:04:56ID:???Locale/Data/ja.xml に和暦のデータ(calendar[@type="japanese"])
が入っていたので扱えるのかと思ったんですが、
Zend_DateのtoString('GGG')などとしたときのコードを追っていくと
使うデータが calendar[@type="gregorian"] 決め打ちみたいで
「紀元前」と「西暦」しか出てきません。
Zend_Dateを継承して自分で日本のものを作らないとだめでしょうか?
0866nobodyさん
2011/01/30(日) 03:02:00ID:???0867nobodyさん
2011/01/30(日) 11:13:05ID:Mz9WohIAZend_View
これ以外で覚えたらいいの教えてください
0868nobodyさん
2011/01/30(日) 13:07:07ID:???覚えたらいいのってのも漠然だけど
Zend_Layout
大抵使う
Zend_Date
Zend_Log
Zend_Cache
Zend_Mail
Zend_Session
この辺は手軽に使えるから試すのも楽
腐れ実装もあるけど
Zend_Application
Zend_Config
Zend_Db
Zend_Form
フレームワークとして使い込む度合いで
この辺りも
他は需要と実装に応じて
0869nobodyさん
2011/01/30(日) 13:13:17ID:???0870nobodyさん
2011/01/30(日) 13:15:42ID:???自前のクラス使ったままだったわ
でも、確かにZend_Formやら使う時は必須ね
0871nobodyさん
2011/01/30(日) 13:46:43ID:???cakephp|CIと,ZFを使い分けるべきって
どういうケースにcakephp|CIを利用してどういうケースにZFを使うんですか?
0873nobodyさん
2011/01/30(日) 15:27:59ID:???0876nobodyさん
2011/01/30(日) 18:15:38ID:7lsYYH4G逆にその先輩だか同僚だかに使い分けの理由を聞いて結果をここに晒してくれ。
0878nobodyさん
2011/01/31(月) 06:55:28ID:???複合主キーをもつDBのシステムを作るときはZF、単一の主キーだけで構成
されるDBを扱う場合はCakePHP、とか言いそうだなそいつ。
どちらかに統一したほうが、スキル習得コストの面でも作成するコードの品質面
でも将来のメンテナンスの面でも、いいよ。
似たようなスキルを分散するのは、良くない。
てか、その先輩はそんな事は承知の上で言っているんだろうから、単に両方使
えますと威張りたいだけ。
そんな人の言葉を真に受ける必要はないと思うよ。
0879nobodyさん
2011/01/31(月) 09:15:17ID:???上でZend_Formの事書かれてるけど、皆アレ使ってるんだ・・・
俺はマニュアル見て「何だコレ、めんどくせぇ」と、逆にぐちゃぐちゃになりそうだったから止めたんだけど
単純なフォームを作成するだけでもかなり長いコードになりそうな気がしてるんだけど結構使い勝手いいものなの?
もしそうだったら学習しなおそうかな
0880nobodyさん
2011/01/31(月) 09:55:25ID:???0881nobodyさん
2011/01/31(月) 12:59:08ID:???普段はsymfony使いだけどzendでやるところに呼ばれたらzendもできるし、cakeでやる人に呼ばれたらcakeでやる。
俺俺のところに呼ばれたらその俺俺を学習して使ってみせるよ。
0882nobodyさん
2011/01/31(月) 13:19:04ID:???トップページ
お問い合わせ
会社紹介
求人
製品紹介
各製品のページ(5ページ程度。デザインは使いまわし)
0883nobodyさん
2011/01/31(月) 13:24:47ID:???0884nobodyさん
2011/01/31(月) 15:27:51ID:???既製のもので適わないなにかあるなともかく
0886nobodyさん
2011/01/31(月) 19:09:35ID:???Firefoxだと一番下にチェックつけると一番上にもチェックがつく。
IEとChromeだと一番下にチェックつけると一番上が一瞬選択状態になる。
あとチェックを解除するためにチェック済みの項目をクリックするとチェックがはずれないことがある。
フォームはViewに手書きしてValidateを手動で使うのが良さそう。
Zend_Formは概要を理解するまでがはてしなくめんどくさい。
理解しても細かいとこを覚えきれないから結局これどうやんだっけって調べるはめになる。
ちょっと機能詰め込みすぎて逆に使いにくい。
うまいこと分割していけば使いやすい物になると思う。
0887nobodyさん
2011/01/31(月) 22:00:47ID:???所詮HTMLを出力するだけなのに、学習コストが高すぎる。
Validateは基本英語ってのが微妙だし、
自分で一度作ってしまえば延々使い回せるものなので使いやすいクラスを自作している。
(Zend_Validateを扱えるAdaptorも一応用意してある)
逆に一度覚ると楽で手放せないのは、
Zend_Session、Zend_Cache、Zend_Dbくらいかなぁ・・・
Zend_Log、Zend_Mailは俺俺クラスで一枚ラップしてやらないと微妙に使いにくい気がする。
0888nobodyさん
2011/01/31(月) 22:10:12ID:???自力開発能力ほんとないのな
0889nobodyさん
2011/01/31(月) 22:44:21ID:???日本語だってBootstrap.phpで対応可能で、
カスタマイズするのも元があるから簡単よ。
public function _initValidate()
{
$lang = 'en';
$locale = new Zend_Locale();
if ($locale->getLanguage() === 'ja')
{
$lang = 'ja';
}
$translater = new Zend_Translate(
array(
'adapter' => 'array',
'content' => APPLICATION_PATH . '/../resource/languages',
'lang' => $lang,
'scan' => Zend_Translate::LOCALE_DIRECTORY
));
Zend_Validate_Abstract::setDefaultTranslater($translater);
}
0891nobodyさん
2011/01/31(月) 23:15:07ID:???CMSって使ってる?
俺使ったことないんだけど
どんなの使ってるの?
xoopsとか?
というかさ、CMS使ったら別に俺たち要らなくなるような気がするんだよな
0892nobodyさん
2011/01/31(月) 23:16:29ID:???複数項目チェインさせたり、条件分岐させる場合に使いにくいと感じたなぁ。
コードをZFで統一する美しさには惹かれるけど、
いちいち調べてカスタマイズして・・・ってやる程のモノでも無いと感じたから、自分で書いちゃった。
>>888
車輪の再発明したのに、自己開発能力無いと言われるとは思わなかったわw
>>889
ありがとう。試してみるよ!
0893nobodyさん
2011/01/31(月) 23:18:49ID:???0894nobodyさん
2011/01/31(月) 23:24:18ID:???大抵のプログラムは再発明を得てブラッシュアップされていくものだ。
多分、今君が書いてるプログラムも、世の中探せば既存コードがある。
探す手間をかけるか、自分で書いて理解を深めるか、好きにすればいい。
0895nobodyさん
2011/01/31(月) 23:25:19ID:???0896nobodyさん
2011/01/31(月) 23:54:50ID:???ありがとう!できた!
一体どうやって調べるんだこういうの!
ただそのままリクエスト引き回そうとしたら
$request->getParams()がNULLだった。
Smartyでいう$smarty.request的なものってViewにありませんか?
Viewでvar_dump($this)ってしたかぎりではそれっぽいものは見あたりませんでした。
とりあえずコントローラのinitで
$this->view->request = $this->getRequest()->getParams()って
やったんだが、もっと汎用的な方法ってあるよね?
0897nobodyさん
2011/02/01(火) 01:31:02ID:???Zend_View(_Abstract)自体には、Requestを保持する機構は無いみたいなのでそれでOKかと。
もしくはgetRequestを実装した、Zend_View継承クラスを使うとかかね。
__get / __set マジックメソッド使ってるからvar_dumpでは解読出来ないよね・・・
IDEとか使ってソースコード追うのが一番早いよ。
0898nobodyさん
2011/02/01(火) 01:34:01ID:???$router = new Zend_Controller_Router_Rewrite();
$request = $router->route(new Zend_Controller_Request_Http());
var_dump($request->getParams());
っていう意味?
つーか、ここまでやっちゃうともうZend_Controller_Front::dispatch()丸パクリだから
本当にそこでする必要があるのか悩んでみてもいいかも。
調べるのはZend Frameworkのソースをgrepで検索してる。
0899nobodyさん
2011/02/01(火) 10:04:22ID:???色々と議論されていますが、
皆さんどれくらいの規模のシステムを開発されてますか?
フレームワークの選定権とかもたれているのですか?
0900nobodyさん
2011/02/01(火) 10:37:13ID:???Zend_Validateの派生クラスを生成するクラスを作っておけば、使い回しもできて便利だと思うのだけど。
0901nobodyさん
2011/02/01(火) 11:22:37ID:???特にForm
Layout、MVCとかと一緒にすると自分には逆に混乱してしまう
0903nobodyさん
2011/02/01(火) 14:25:39ID:???<?php
// Define path to application directory
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
// Define application environment
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));
// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
realpath(APPLICATION_PATH . '/../library'),
get_include_path(),
)));
/** Zend_Application */
require_once 'Zend/Application.php';
// Create application, bootstrap, and run
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap()
->run();
0904nobodyさん
2011/02/01(火) 16:11:09ID:???大した事してないのにコード追うのが面倒になるので使ってねーや。
(というかちょっと前のバージョンには存在して無かった)
疎結合で好きな機能だけ使えるのもウリなのに、
最近は兎に角あるものは極力ZFを使うべきって流れになってて嫌だなぁ
0906nobodyさん
2011/02/01(火) 16:29:11ID:???setting.php
$a="ヘッダ";
$b="メイン文章";
$c="フッタ";
index.php
<?php
include "setting.php";
echo <<<HTML
<div id="header">$a</div>
<div id="main">$b</div>
<div id="footer">$c</div>
0907nobodyさん
2011/02/01(火) 17:23:30ID:???デザインとロジックを分けるためだけにFWを導入するわけでは無い。
それ以前に君の例だと、
ViewからController(?)であるsetting.phpを呼び出している時点でMVCのなんたるかすら理解していないと思われる。
基礎からお勉強してきなさい。
0908nobodyさん
2011/02/01(火) 18:31:42ID:???setting.php
$a="ヘッダ";
$b="メイン文章";
$c="フッタ";
include "index.php";
index.php
<?php
echo <<<HTML
<div id="header">$a</div>
<div id="main">$b</div>
<div id="footer">$c</div>
略
0910nobodyさん
2011/02/01(火) 18:56:17ID:???自分がついていけないから、必死でフレームワークの存在を否定したいんだよ。
クラス設計とか全く出来なそうな臭いがするな。
0911nobodyさん
2011/02/01(火) 19:01:27ID:???まぁ、それ以前の問題だけどドヤ顔で>>908を出しちゃうあたり微笑ましい。
専門学校生以下。間違っても職場にいたら足を引っ張るタイプ。
0912nobodyさん
2011/02/01(火) 19:09:19ID:???jsonファイルやxmlファイルやcsvファイルはどこにドキュメントルートの外に置く場合は置いたらいいですか?
0913nobodyさん
2011/02/01(火) 19:23:37ID:???データとかなら data/resources とか好きにディレクトリ作ればいいと思うよ。
推奨プロジェクト・ディレクトリは良くも悪くも冗長で、時として管理し辛い。
0914nobodyさん
2011/02/01(火) 19:31:34ID:???0915nobodyさん
2011/02/01(火) 20:59:45ID:???<li>メニュー1</li>
<li>メニュー2
<ul>
<li>サブリンク1</li>
<li>サブリンク2</li>
</ul>
</li>
<li>メニュー3</li>
</ul>
これをZend_Navigatorで表示したいのですがどなたか教えてください
0916nobodyさん
2011/02/01(火) 22:53:14ID:???0917nobodyさん
2011/02/02(水) 01:22:54ID:???http://framework.zend.com/manual/ja/zend.navigation.containers.html これの
「例7 Converting a container to an array」で$container = Zend_Navigationうんちゃらをコピーする。
フロントコントローラを使っているなら、
Bootstrap.phpにpublic function _initNavigation()作ってそこに貼り付けて、
Zend_Registry::set('Zend_Navigation', $container); しておく。
表示は view/scripts/ にあるphtmlのなかで
<?php echo $this->navigation()->menu(); ?> とする。
使ってないなら
$container->toArray()から作るのかなぁ?
0918nobodyさん
2011/02/02(水) 03:21:43ID:???素朴な疑問なんだが、なんでHTMLを書こうとせず、壁にぶつかってまで自動生成しようとするの?
後々カスタマイズとか非常に面倒な気がするんだが・・・
慣れると手書きよりカスタマイズ性と運用性が上がるとか?
0919nobodyさん
2011/02/02(水) 03:28:13ID:???0920nobodyさん
2011/02/02(水) 09:31:38ID:???Zend_Frameworkde作られたWebサイト、Webアプリなどのソースコードを出しているようなサイトとかCMS等は何かありませんか?
マニュアルとかの断片的なものではなく、実際どのように製品として組み立てているのかとかを学びたいのですが
0921nobodyさん
2011/02/02(水) 09:52:56ID:???TomatoCMS http://www.tomatocms.com/
SetucoCMS http://sourceforge.jp/projects/setucocms/
Live Commerce ! http://www.live-commerce.com/
有名所だと、こんぐらいかね。
Xoops本家の次期版が採用って聞いた気もする。
0922nobodyさん
2011/02/02(水) 11:01:32ID:???<link type="text/css" rel="stylesheet"href="http://example.com/style.css">
っていうタグを全ページに入れたいのですが???Cntroller.phpのfunction ???Action(){〜}で一つ一つアサインしてます
これだとstyle.cssを書き換えると手間がかかってしまうのでいい方法ありませんか?
0923nobodyさん
2011/02/02(水) 11:02:21ID:???×前頁
○全ページ
0924nobodyさん
2011/02/02(水) 11:34:25ID:???Zend_Layoutは、そういう用途のためのもの。
取り敢えず、全体に1回でいいから目を通したほうがいいよ。
0925nobodyさん
2011/02/02(水) 13:50:05ID:???俺はZend_Controller_Actionを継承した中間クラスを作って、init()でアサインするという手でやってる。
0927nobodyさん
2011/02/02(水) 14:53:36ID:???俺はSmartyを連携させて使ってる。俺はこっちの方が楽だ。
0928nobodyさん
2011/02/02(水) 16:07:58ID:???ありがとうございます
0930917
2011/02/02(水) 19:53:18ID:???正直、手書きも含めて自作しちゃうのが簡単だとは思うw
あえて利点を挙げるなら、パンくずリストとサイトマップにも
変換可能ってところかな。
0931nobodyさん
2011/02/03(木) 05:28:20ID:???なじみの無い人には
「パッと見のコードは綺麗だし、IDEとの親和性も良いが、実際使うには冗長な気がする。
疎結合なのは良いが、ドキュメントやサンプルが無いとその関連性が理解出来ず苦労する。」
と、あまり評価がよろしくないw
結局自作クラス群を更にラップするクラス群を作る事になっている件・・・orz
極例だけどStringクラスがあったとして
A) $str = String::create("xxx")->convertEncoding("utf-8")->convertKana("KV")->toUpper()->toString();
B) $str = String::convert(array(options));
C) $str = String::convert($str, "utf-8", "KV", "UP");
AとBは面倒らしい。
パラメータや処理が増えた時はC)の引数を増やせば良い、と・・・。
0932nobodyさん
2011/02/03(木) 07:28:11ID:???普段はCakeを使うことが多いが、個人的には引数増えるよりBの方法が楽だと思う。
というか引数の順番をいちいち記憶するのが面倒。
array(
'val' => $str,
'encoding' => 'utf-8',
'convert' => array('KV', 'upper')
)
とかすれば引数の順番覚えなくてすむし。
Cakeを触りすぎたせいかもしれないが
Aのようなメソッドチェーンの引き回しはPHPの文法に向いてないと思う。
("->"と"."の違いは心理的に大きい)
0933nobodyさん
2011/02/03(木) 09:39:49ID:???意見ありがとう!
A)は冗長だけど、エラーハンドリングのしやすさとか、処理の順番とかキッチリしていて扱いやすいとは思う。
コードは冗長だけど、補完の優秀なIDE使えばタイプ数は、Bよりタイプ数が少なくてすむよ。
B)案だと、配列のキー名のタイポが発生したり、IDEのコード補完が使えないのが辛いよねぇ・・・
かといって引数をクラス化すと途端に冗長と言われるし。
適材適所なんだろうけど、皆の意見をもっと聞きたいっす。
0934nobodyさん
2011/02/03(木) 10:46:00ID:???B型にしとけば良かったよと後悔するタイプだな
0935nobodyさん
2011/02/03(木) 21:13:17ID:???Cはなんとなく気持ち悪いかなぁ。。
その例でいうなら
Number::convert()作ったときに引数が違ってくるよね?
0936nobodyさん
2011/02/03(木) 21:30:04ID:???日本では流行ってないけど時間が立てば流行るよぐらいすごいんだけど
それにZFが使われてた
んで、megentoをダウンロードするとZFが含まれているんだけど、最新のZFにアップグレードするのはファイルの上書きだけで大丈夫か教えて欲しいのです
レス数が900を超えています。1000を超えると表示できなくなるよ。