ZendFrameworkってどうよ?
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/10/07(土) 02:49:15ID:6wQ8r0Dcこれってどうよ?
PHP5に移行したほうがいいのかな
0112nobodyさん
2007/03/02(金) 20:31:47ID:MGhMK5UUレスありがとうございます
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も無事取得できました。
0113nobodyさん
2007/03/02(金) 22:29:09ID:???$params = array(
'host' => 'localhost',
'username' => 'hoge',
'password' => '',
'dbname' => 'hogedb'
);
みたくパスワードもちゃんと空のパラメータにしてみて
あと、試しにfactory直後でクォートせず何かクエリ投げてみて、
同じようにroleがないみたいな例外が返って来るなら
多分DB接続がうまくいってなくて
PDOはクォートする時もコネクション使うからそこでこけてると思うんだ
0114112
2007/03/02(金) 22:32:52ID:AEjNDMWgZend/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です。
0115nobodyさん
2007/03/02(金) 22:45:15ID:???PDOのコンストラクタの引数は
new PDO('mysql:host=localhost;dbname=test', $user, $pass);
こんな感じ
そこのコードは特に間違ってはいない
んで引数の指定がなかった場合なんだが、
おそらくDB側はUNIX自体のユーザ名・パスワード
をDBのユーザ・パスワードと仮定して扱うと思うから
ちょうど今君はapacheのユーザ・パスワードを合わせてしまっているから
たまたま接続がうまくいってるとかそんな気がする
0116114
2007/03/03(土) 01:47:36ID:fjJSaYh6確かに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を使っています。
0117116
2007/03/03(土) 02:45:02ID:???うちの環境ではやっぱり
new PDO('pgsql:host=localhost;dbname=test', $user, $pass);
ではなく
new PDO('pgsql:host=localhost dbname=test user=user password=pass');
じゃないとつなげないっぽいですね。
ZendFrameworkと関係なさそうなのでPHP版の方へ行ってみます
ありがとうございました。
0118nobodyさん
2007/03/03(土) 05:32:34ID:???> 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のバグかもしれない。
0119112
2007/03/03(土) 13:57:46ID:fjJSaYh6>>113を見逃していました。みなさんごめんなさい。
passwordを省略すると、あの得体の知れないエラーが出るようです。
エラーが間違ってるジャン!PDOのバグだ!と怒りたいところですが
113の指摘を見逃した私がすべて悪いわけでして・・・
申し訳ございませんでした。
&ありがとうございました。
0120nobodyさん
2007/03/03(土) 23:21:06ID:???symfonyが10としたらZendは3くらいだし
Zendしょぼすぎワロタ
0121nobodyさん
2007/03/04(日) 04:37:54ID:???面白いなこれ。
0122nobodyさん
2007/03/04(日) 05:28:00ID:???いちいちescapeしてられるかっての
0123nobodyさん
2007/03/04(日) 14:32:22ID:???http://www.zend.co.jp/tech/index.php?%A4%BD%A4%CE%C2%BE%2FZend%20Framework
ここのサンプルだと、View呼び出すのに絶対パスコントローラに埋め込んでるじゃねぇか…
いくらなんでもひどすぎだろ
0124nobodyさん
2007/03/04(日) 14:52:52ID:???0125nobodyさん
2007/03/04(日) 16:57:57ID:brIiO66uZend_Db_Selectと連携出来ないっぽいですか?
0127nobodyさん
2007/03/04(日) 17:05:28ID:???0128nobodyさん
2007/03/04(日) 17:21:00ID:brIiO66upublic 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使った方が早いと思うんですけど、どうなんでしょう?
0129125
2007/03/05(月) 00:37:51ID:514EdfV5やっぱり早いですね。当然ですけど。
まあ、WEBアプリでは一回に何千もレコード取得して表示する事もそんなないだろうから
差は微々たる物だけど
このフレームワーク、完成度は(当然正式版じゃないので)イマイチだけど
ソース見てると、すごいよく設計されてると思う。
今後に期待しちゃうな
とりあえず自分で改造したやつ使うつもりだけど。
0130nobodyさん
2007/03/05(月) 10:22:28ID:???Symfony、Zend Framework
とりあえずこの二つを使えればプロとして自信が持てそうですw
0131nobodyさん
2007/03/05(月) 10:43:01ID:???0132125
2007/03/05(月) 14:11:20ID:c6MP6ips1rowが1objectじゃなくて
Zend_Db_Table_Rowset Object に全行の配列を持ってるんですね
見間違いました。
>>130
PHPの薬箱は、まだ読んでないですね。チェックしてみます。
私のオススメは
Zend Frameworkと関係なさそうで、微妙に関係ある
「PHPによるデザインパターン」
0133nobodyさん
2007/03/12(月) 08:54:48ID:2JUfcRN6この記事試してみた人いますか?
動きが解って良いんですけど、このブログツールにログインするIDとパスが解りませんOTZ
記事投稿してみたり、いろいろしてみたいんですけど・・・
解りましたら。教えてください。
0134nobodyさん
2007/03/14(水) 10:42:23ID:62gHBZHzIndexControllerのnoRouteActionが呼ばれないんですけどなんか設定が必要なのでしょうか?
例えば
http://www.hoge.com/Index/foo/
とか設定してあるActionを呼ぶと問題なく動きます。で、
http://www.hoge.com/Index/bar/
とか、設定してないActionをよんでもnoRouteActionが呼ばれません。
試しに
http://www.hoge.com/Index/noRoute/
とすると呼ばれます。
なぜでしょうか?指定がないときに呼ぶActionを設定したりしなきゃならないのでしょうか?
お願いいたします。
0135nobodyさん
2007/03/14(水) 10:47:31ID: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>
しかありません。
0136nobodyさん
2007/03/14(水) 11:52:04ID:???最新の0.8ってもうnoRoute自体なかったような(__call()で処理)
0138135
2007/03/14(水) 13:09:56ID:???>>137
レスありがとうございます
まさに0.8でした。
__callで処理するようになったんですね。
うまく出来ました。
0139nobodyさん
2007/03/14(水) 20:08:38ID:???マニュアルには
$compat = new Zend_Controller_Router_Route_Module();
$this->addRoute('default', $compat);
って書いてあるけど、いろいろ試したが動かない・・・・・・
0140nobodyさん
2007/03/14(水) 21:37:24ID:???よっぽどでない限りデフォルトのルートだけで事足りるじゃん
0141nobodyさん
2007/03/14(水) 22:10:20ID:???http://framework.zend.com/manual/ja/zend.controller.modular.html
ここ読めば分かると思うけど普通のフロントコントローラー使って、
配列でディレクトリ指定してやれば使えるようになると思うよ。
0142nobodyさん
2007/03/14(水) 23:00:11ID:???>>140
確かに普通のルーティングだけでも十分満足だけど、
admin を別のアプリにしようと思って。
ソースよむかな・・・
>>141
なるほろ。
助言を基にもう一度やってみます。
0143139
2007/03/15(木) 10:40:52ID:???include_path が通っていないだけでした。。
0144nobodyさん
2007/03/18(日) 13:33:48ID:WPSFKvBpやっぱりmodelsにはincludeパスは通して使う物なのでしょうか?
そうすると
Zendのlibrary
pear(使いたい物がちょこっとあるので)
全アプリ共通で使うclass群の入ってるディレクトリ
そして、いくつかのmodelsディレクトリ
と結構includes path通すところが数が多いのですが、
なんか、どこかで、あんまりいっぱいincludes pathを通すと、
検索する場所が増えるので、全体のパフォーマンスが低下するって
見た覚えがあります。
modelsにあるものを毎回フルパスで指定するのも何だし・・・
なんかうまい方法見逃してますか?
それとも5.6個通すぐらいなら気にすることないのでしょうか?
0145nobodyさん
2007/03/18(日) 20:07:56ID:???php.iniレベルで設定しておいていいし
pear本家でZendネームスペースを使う事もないだろうから
pear用ディレクトリ以下でZend/Zend.phpをsymlinkにしておけば
アプリ側でinclude_path追加するのは
lib/modelくらいで済むんじゃないかね
0146nobodyさん
2007/03/18(日) 22:00:42ID:WPSFKvBpレスありがとうございます
ふむ。modelに関してはそのアプリのindex.phpでパスを通せばいいのか・・・
まあ、なれてないのでいろいろ考えちゃってるけど、とりあえず作ってみれば
どうすればいいか解ってくるかな。
プレビューが0.9.0になってますね。
マニュアルもちょっとアップされたかな。たぶん。
祝い上げしておきます。
ところで、フォームはpearでやろうと思ってたけど、viewヘルパーなるよさげなものが
あるんですね。あれとZend_Validateを使ってみます。
0147nobodyさん
2007/03/19(月) 15:31:58ID:Y3+UeIKcクラス名をどうしたらいいか悩んでます
My_Plugin_Viewとか考えたんですけど
なんか良い感じの無いですか
0148nobodyさん
2007/03/20(火) 23:47:27ID:EqlsiciXそんなんどうでもいいよっていう人も多そうだけど
意外にネーミングって悩むし、大事ですよね。
個人的にMyと_(アンダーバー)は嫌いなので
(サイト名や会社名や自分の名前)(機能を端的に表した単語)ViewPlugin
例HogeConvertViewPlugin
とか・・・
長いか・・・・
いっそのこと
HogeConvertVP
とか。
0149148
2007/03/21(水) 00:05:18ID:+1/xKX/rMVCというのが何となく解ったようで解らないんですけど
例えばフォームからの入力をDBに登録後、一覧を表示。
なんてアプリの場合、ファームのヴァリデイトはControlでするのでしょうか?
そんな気がするのですが、Modelのような気も・・・
どんなもんでしょうか?
0151nobodyさん
2007/03/21(水) 16:05:45ID:NvhysGYm0152nobodyさん
2007/03/22(木) 11:11:22ID:???使えばいいと思うヨ!
みんなViewを素で使ってるのかな?
俺はViewを抽象化もせずにSmarty直接叩いてるけど。
0153nobodyさん
2007/03/22(木) 13:22:24ID:???0154nobodyさん
2007/03/25(日) 00:39:42ID:kYJTpB8y0155nobodyさん
2007/03/25(日) 02:34:38ID:07q9VATM奇遇だね。今日おれも同じコトやってた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っていうのが馴染みがないせいか、イマイチよくわからなくて・・・
0156nobodyさん
2007/03/25(日) 02:45:08ID:???404くらいデフォルトでなんとかなるようにしてくださいよ!
フレームワークあんだから!
0157nobodyさん
2007/03/25(日) 12:06:39ID:???デフォルトのコントローラを404コントローラにする
んでアクションが無い場合(__call)もそっちにforwardしてやるとか
何事にも気が利かないのはZFのデフォルトの仕様
rails:設定より規約
ZF:規約よりおまえが書け
0158nobodyさん
2007/03/25(日) 13:20:21ID:07q9VATMそれするとコントローラー省略したときも404が出ちゃわない?
ttp://www.yahoo.co.jp/
みたいにドメインだけ入力したとき。
省略された場合と、存在しない場合で動き変えられれば簡単に解決なんだけど・・
0160nobodyさん
2007/03/25(日) 15:33:13ID:UfKh4Z0S0161nobodyさん
2007/03/25(日) 15:50:16ID:???コントローラごとにオーバーライドするのは面倒くさいと見るか、コントローラごとに分けることができて便利と見るか・・・。
いざとなったら、404用のabstractなコントローラを用意して、継承しまくるとか。
0162nobodyさん
2007/03/25(日) 15:58:06ID:???0163161
2007/03/25(日) 16:49:33ID:???ついでに最新バージョン落としてソースを追ってみたけど、
useDefaultControllerAlwaysをfalseにしておけば、コントローラが存在しない場合にZend_Controller_Dispatcher_Exceptionが投げられるから、これをcatchして404出せばいいんじゃないかと思った。
あと、アクションが存在しない場合はZend_Controller_Exceptionが投げられるっぽい。
さすがにZend_Controller_Exceptionだと、その名前から察するに別の状況でも投げられそうな気がするから、少し微妙かもしれない・・・。
とりあえず、>>155の言ってる、
>Actionが見つからない場合はは__callが呼ばれるので
>そこで404ページを出せばOKだけど
ってのがどういう意味かよくわかんなかったんだけど、__callを自分のアクションでオーバーライドして処理するってこと?
0164nobodyさん
2007/03/25(日) 18:22:22ID:???そう、旧バージョンの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を自分で使えるようにしておいた方がいいと思う
こんな感じかな?
0165161
2007/03/25(日) 19:58:28ID:???なるほど。APIが禿しく変わったと思ってたけど、けっこうちゃんとマニュアルに書いてあるんだな。
404の処理方法も正式バージョンではドキュメント化されるかもね。
ひとまず当面は>>164のやり方しかないんだろう。
0166nobodyさん
2007/03/25(日) 23:02:53ID:clpaUIjl0167157
2007/03/26(月) 10:29:04ID: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がでてますね。早く正式リリースされないかな
0168nobodyさん
2007/03/26(月) 11:28:00ID:B9eaVhyg今までは自前でセッションとリクエスト比較して来たんですが。
0169nobodyさん
2007/03/26(月) 11:55:36ID:???0171nobodyさん
2007/04/01(日) 11:53:09ID:sAfc6g3U例えばある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で認識しないので、ちょっと面倒かなと・・・
0172nobodyさん
2007/04/01(日) 12:01:18ID:???0174nobodyさん
2007/04/01(日) 15:41:17ID:sAfc6g3U.htaccessは
RewriteEngine on
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php
となっています。
変わったのでしょうか?
0175nobodyさん
2007/04/01(日) 18:23:36ID:???思ったんだけどcssだから大丈夫か
相対パスはindex.phpからのであってるよ
0176nobodyさん
2007/04/01(日) 19:08:42ID:+UiPUal0画像やスタイルシートはドキュメントルートからのパスになるだろ?
0177171
2007/04/01(日) 19:14:37ID:sAfc6g3Uレスサンクス
どうやらリクエストした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です
0178nobodyさん
2007/04/01(日) 20:18:45ID:???でいいんじゃないの?
0179nobodyさん
2007/04/01(日) 20:47:16ID:???0180nobodyさん
2007/04/01(日) 22:32:21ID:sAfc6g3Uほうほう、そのタグ知らんかった・・・
サンクス
<base href="http://www.hoge.jp/" />
で、いけました。
しかし、他のmod_rewriteを使ってURIを置き換えるようなフレームワークも
みんな、絶対パスか<base href="">を使ってやるモンなのでしょうか?
たしかに、いたってデフォルトの動きっぽいですけど。
0181nobodyさん
2007/04/01(日) 22:56:18ID:???baseタグ使うとかバカげてる
ほんとにrewrite効いてるのか?
0182nobodyさん
2007/04/02(月) 00:22:58ID:???遅レスだけど、単純に
$front = Zend_Controller_Front::getInstance();
$front->run("/path/to/controllers");
$res = $front->getResponse();
if ($res->isException()) header("Location: http://localhost/");
とかじゃダメ? 話が違う?
header のところを 404 を出す処理にでも変えればいいような気がする。
0183180
2007/04/02(月) 08:46:24ID:UNZvnAmNまじですか?
適切なコントローラとアクションに振り分けられるので
たぶん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というのがあったので
ドキュメントルートのパスを設定したり、"/"のみを設定してみましたが、駄目でした。
どの辺を見直せば良さそうですかね?
ご意見ありましたらよろしくお願いします
0184180
2007/04/02(月) 10:01:33ID:YVop49f1違ったらすいませんが、
もしかして
>>178さんみたいに"/"から指定してないですか?
<link href="/styles/foobar.css" rel="stylesheet" type="text/css" />
それならうごくんです。というか、絶対パスだし。
う〜ん、ちょっとsymfonyのスレで確認してみます。
0185nobodyさん
2007/04/02(月) 18:45:53ID:???どっちのスレで答えるか迷ったけどsymfonyで自動生成されるタグは
絶対パスになってる。
CSSとか画像へのリクエストはクライアントのブラウザがリクエスト
するものだからブラウザに表示されてるURLからの相対パスで
不思議じゃない。
0186181
2007/04/02(月) 19:11:38ID:???相対パスで試したら余裕で無理だったなんか勘違いしてた
よくよく考えたらURLをrewriteする場合に
相対パスでリソース指定なんてした事なかった
今は反省している
普通絶対パス指定だな
あとdreamweaverはサイト設定したら
認識してくれるもんじゃないかね
0187184
2007/04/03(火) 00:18:05ID:3FiNTxl4レスありがとうです。
symfonyのほうでもレス頂きましたが、すっきりしました。
>>186
いえいえ、そんなに反省しなくてもw
勘違いは誰にもあるし
サイト設定はすっかり忘れてました
試してみます
サンクス
0188nobodyさん
2007/04/07(土) 17:33:25ID:???http://www.zend.co.jp/events/
これはノーパソもくれるってことなのかな
0189nobodyさん
2007/04/07(土) 18:19:08ID:???0190nobodyさん
2007/04/07(土) 19:39:02ID:???0192nobodyさん
2007/04/07(土) 21:22:05ID:???0193nobodyさん
2007/04/08(日) 04:50:22ID:???0194nobodyさん
2007/04/08(日) 07:05:34ID:???まあゼンドエンジンを無料で使っておいて、いまさらゼンドを馬鹿にできる立場じゃないだろうが。
他のPHPエンジンを選択して使えれば良いのにな。
0195nobodyさん
2007/04/08(日) 07:11:17ID:???ゼンドジャパンがあまりレベル高いと思えないのは俺だけ?
0196nobodyさん
2007/04/08(日) 09:58:31ID:???レベル高いの
0199nobodyさん
2007/04/08(日) 22:55:44ID:???会社がお金を出してくれるんでなかったら、自分じゃ行ってないな
0200nobodyさん
2007/04/08(日) 23:06:45ID:???0201nobodyさん
2007/04/09(月) 00:24:50ID:???http://www.blackhat.com/html/bh-japan-07/bh-jp-07-jp-reg.html
0202nobodyさん
2007/04/09(月) 00:29:53ID:???0204nobodyさん
2007/04/09(月) 02:02:12ID:???0205nobodyさん
2007/04/14(土) 23:56:03ID:6HoqK2AI日本語どうしてます?
$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に文字コード指定しちゃいけないのかな?
0206nobodyさん
2007/04/15(日) 00:57:32ID:???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は使わないかな
0207205
2007/04/15(日) 04:41:44ID:f7ZVC+MYレスありがとうございます。
携帯のメールで四苦八苦してたんですけど
本文は文字コード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に変えるよりその方がよさそうですね。
0208nobodyさん
2007/04/15(日) 13:38:18ID:???) ) ノ ノ
(((( > ̄ > )))) \(^o^)/ ((( < ̄< ))))
) )
((( > ̄ > )))) code igniterハジマタ
0209205
2007/04/15(日) 16:11:36ID:f7ZVC+MY問題はquotedprintableでエンコードしちゃうところ。
本文なんかは上の方法で変えられるけど、ヘッダーは強制的に
quotedprintableでエンコードされちゃう。
とりあえず、add、set系で日本語入れる可能性のあるものを
オバーライト(ド?)して自動的に文字コードを_charsetにしちゃうようにして
本文のsetはエンコードをENCODING_7BITに、ヘッダーはBASE64にしたら
だいたいOKな感じ。
まあ、まだベータだし今後に期待かな。
0210nobodyさん
2007/04/16(月) 12:14:45ID:l/zxgJIdおまえは何を言ってるんだ?
0211nobodyさん
2007/04/22(日) 00:02:52ID:???init使うってのも考えたんですが他にスマートな方法とかないでしょうか?
0212nobodyさん
2007/04/22(日) 08:57:19ID:xZDJWmeUZFを書き換える
■ このスレッドは過去ログ倉庫に格納されています