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

【PHP】下らねぇ質問はここに書き込みやがれ 26

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/08/07(月) 13:11:50ID:???
PHPに関するくだらねぇ質問用スレです。ここならお前の下らない質問に回答があるかも知れません。

まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレは>>2-10 関連スレは>>4-10 FAQは>>6-10 辺り

◆質問する場合の注意
1. 自分のIDを表示させること。(メール欄に何も記述しないでください)
2. サーバーのOS、WebサーバーとPHPの種類やバージョン等を明記すること。
3. 己の行った操作、変更などを詳しく明記すること。
4. エラーメッセージはそのまま表記すること。「エラーが出ます」では絶対分かりません。
5. 質問者としても態度をわきまえること。
6. 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

◆質問後の注意
・質問者は必ずIDを表示させてください。(メール欄に何も記述しないでください。)
・2回目以降は最初に質問した際のレス番号を名前欄に入れてください。
  (逆に回答者は質問者に対して>>(アンカー)をつけて答えてください。)
・解決しなくても回答をもらった場合はお礼を言う。
  (荒らし、煽りは除く。逆に煽られたときも、無闇に反論せずスルーすべし)

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え。理解できないならムリに使うな。
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0222nobodyさん2006/08/10(木) 13:10:35ID:oKJYDnYF
>>221
どうやって?
0223nobodyさん2006/08/10(木) 13:15:11ID:???
>>219
mb_internal_encoding("SJIS");
これがまずいんじゃない?
たしか内部エンコードSJISは使えなかったはず。
UTF-8かEUC-JPでやるとうまくいくと思う。
02242142006/08/10(木) 13:16:33ID:???
>>215-218
厳しいご意見ありがとうございます。
頑張って理解できるように勉強してまいります。
0225nobodyさん2006/08/10(木) 13:21:15ID:???
リファレンスマニュアルには次のように書いてある

PHPで動作しないと思われる文字エンコーディングの例を以下に示します。
JIS, SJIS, ISO-2022-JP, BIG-5
これらのエンコーディングで書かれたPHPスクリプトは、 特に符号化された文字列がスクリプトで記述子やリテラルに使用される場合には、 動作しない可能性がありますが、
入力されるHTTPクエリに関して mbstringの透過的なエンコーディングフィルタを 設定することでこれらのエンコーディングをほとんど使用しないようにすることが できます。

SJIS使いたければ、内部エンコードUTF-8とかにして出力時に自動変換がお勧め
0226nobodyさん2006/08/10(木) 13:27:35ID:???
>>222

-------- .htaccess --------
php_flag output_buffering On
php_value output_handler mb_output_handler
php_value default_charset UTF-8
php_flag mbstring.encoding_translation Off
php_value mbstring.http_input auto
php_value mbstring.http_input UTF-8,SJIS,EUC-JP,JIS,ASCII
php_value mbstring.substitute_character none
php_value mbstring.internal_encoding UTF-8
php_value mbstring.http_output UTF-8
php_value mbstring.language Japanese
---------------------------
出力をSJISにしたいときは
php_value mbstring.http_output SJIS
とする
0227nobodyさん2006/08/10(木) 13:33:18ID:???
>>219
> $subject = "お問い合わせがありました。\n";
の."\n"を外せ。
「改行コードが余分だ」と言ったのに何を聞いてたんだ。
ttp://www.php.net/manual/ja/function.mail.php
> subject
> 送信するメールの表題。
> 注意
> 改行を含んではいけません。含めてしまうとメールが正しく送信できません。
0228nobodyさん2006/08/10(木) 13:37:33ID:???
>>227
ほんっとにアホだよな
0229nobodyさん2006/08/10(木) 14:15:48ID:83OIGtyl
>223,225,227さん
レスありがとうございます。

教えて頂いた内容を試しましたが、だめっぽいですorz
mb_internal_encoding("UTF8");としてみましたが、
あいかわらずヘッダー情報のようなものは出力されます。

\nはあまり関係が無いようでした。
以下のようエンコードをUTFにして各変数の中身を空っぽにして
送信したところ、そのいらないヘッダー情報だけが本文として送られてきてしましました。

<?php
mb_language("ja");
mb_internal_encoding("UTF8");
$to = "携帯のアドレス";
$from = "PCのアドレス";
$subject = "";
$header  = "";
$msg = $header."";
mb_send_mail($to, $subject, $msg, $header);
?>

上から2行のmb関数の行を削除して送信してみたら、
mime-version:1.0
content-type:text/plane;carset=utf8
content-transfer-encoding: base64
これの最後の行がbace64になったという以外、大きな変化はありませんでした。
0230nobodyさん2006/08/10(木) 14:16:46ID:83OIGtyl
$msg = ""; です。すみません。
0231nobodyさん2006/08/10(木) 14:25:41ID:???
認証の関係でサブスクライバIDを取得したいのですがuser_agentでは取得できませんでした(当然といわれれば当然ですが)
どのような関数で取得できるでしょうか?
下らない質問で申し訳ありませんがお願い致します
0232nobodyさん2006/08/10(木) 14:26:53ID:83OIGtyl
みなさんすみません。こんなのを見つけてしまいました.....orz

ttp://blog.itoy.jp/archives/20050108_0133.php

本家のURLは移動したっぽくて確認できませんでしたが、ドコモ的な仕様っぽいです。どうにもならないでしょうか?
0233nobodyさん2006/08/10(木) 14:28:34ID:???
>>229

<?php
mb_language("ja");
mb_internal_encoding("UTF8");
$to = "[email protected]";
$from = "[email protected]";
$subject = "てすとサブジェクト";
$header = "From: " . $from;
$msg = "本文";
mb_send_mail($to, $subject, $msg, $header);
?>
0234nobodyさん2006/08/10(木) 14:37:03ID:83OIGtyl
>233
ありがとうございます。
ドコモ以外のキャリアをお使いですか?

ttp://www.nttdocomo.co.jp/info/spam_mail/if/index06.html
オフィシャルな情報をみつけました。

携帯に通知するようなサービスは結構あると思うのですが、どうやってやっているのでしょうか。
0235nobodyさん2006/08/10(木) 14:53:19ID:???
>>231
そんな限定された機能の関数はない
0236nobodyさん2006/08/10(木) 15:02:26ID:???
>>235
あるよはげ
$_SERVER['HTTP_X_UP_SUBNO']
0237nobodyさん2006/08/10(木) 15:30:32ID:???
>>231
サブスクライバIDって書いていることはAU限定だろうから
>>236 の方法か getenv() を使えばいいよ
0238nobodyさん2006/08/10(木) 15:37:30ID:???
つうか、サブスクライバIDって単語がわかっているのなら、それで検索かけたら
山ほど例が出そうな気がするが
0239nobodyさん2006/08/10(木) 15:47:02ID:???
>>236
まあ、それは「関数」とは呼ばないね

0240hage2006/08/10(木) 15:47:18ID:GpwygKMQ
すみません。文字コード変換で、euc の"'" を utf-8の"'"に変換したいのですが、
どうしても"''"になってしまう。回避法ご存知のかたいらっしゃいます?
$apo = mb_convert_encoding("'",'UTF-8','EUC-JP');
0241nobodyさん2006/08/10(木) 16:39:02ID:???
>>240
松田さん、手元の環境では再現できませんでした。
0242nobodyさん2006/08/10(木) 16:45:07ID:???
>>240
よく知らないんだが英数記号はどの文字コードでも一緒じゃないの
0243nobodyさん2006/08/10(木) 16:45:42ID:???
>>240
松田さん、こんにちは。
こちらの環境(php4.4.2)でも確認できませんでした。
そもそも、半角の ' に文字コードが関連するとも思えませんし。
0244nobodyさん2006/08/10(木) 16:54:41ID:kXNrpO55
PHPを使ってモバイルサイトから
HTMLファイルを取得したいと思います。

ソケットオープン
↓
ヘッダー送信
↓
データ受信

という流れになるんですが、
その際に、
ユーザーエージェントを携帯端末にしたいと思います。
たぶんheaderで指定する必要があるんだと思うんですが、
誰かサンプルソース持ってないでしょうか?
0245nobodyさん2006/08/10(木) 17:11:12ID:???
ini_set('user_agent', $user_agent);
0246hage2006/08/10(木) 17:13:02ID:GpwygKMQ
>>241,242,243
どうも、すみません。私の勘違いでした。前処理で、余計なことしてて
気づかなく、ハマッました^^;

0247nobodyさん2006/08/10(木) 17:17:46ID:???
>>244
php の公式にサンプルがあるよ

http://jp2.php.net/manual/ja/function.fsockopen.php
0248nobodyさん2006/08/10(木) 17:21:56ID:???
松田・・・・かわいそうな子!
0249nobodyさん2006/08/10(木) 17:31:33ID:???
ちゃんとphp-usersでも解決報告したのはえらいぞ。松田。マルチの鑑だね。
0250nobodyさん2006/08/10(木) 22:05:54ID:???
http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/interact/forms.html#checkbox

上記のページ(W3C勧告私的日本語訳)で、「1つのフォームで複数のチェックボックスが同じコントロール名を共有してよい。こうしたチェックボックスは、例えば、ユーザが1つのプロパティについて複数の値を選ぶことを許容する。」とありますが、
例えば以下のようなformを作って送信すると、

<input type="checkbox" name="q" value="1">
<input type="checkbox" name="q" value="2">
<input type="checkbox" name="q" value="3">

確かに「q=1&q=2&q=3」というリクエストが送信されます(IE、Firefoxともに確認済み)。しかし、これをサーバサイドでPHPで受け取って print_r($_POST) とかで表示すると、

Array
(
    [q] => 3
)

のように q の値は 3 のみになっています。これはPHPの仕様がW3Cの勧告に即していないということでしょうか?
0251nobodyさん2006/08/10(木) 22:10:12ID:???
>>250
<input type="checkbox" name="q[]" value="1">
<input type="checkbox" name="q[]" value="2">
<input type="checkbox" name="q[]" value="3">
でお願いします。
0252nobodyさん2006/08/10(木) 22:17:30ID:???
その文面からだと確かにそのように読めるね。
一応こうならば何とか動くけど。

<input type="checkbox" name="q[]" value="1">
<input type="checkbox" name="q[]" value="2">
<input type="checkbox" name="q[]" value="3">
02532522006/08/10(木) 22:19:59ID:???
うは、遅かった。
0254nobodyさん2006/08/10(木) 22:20:09ID:???
それを動かそうとすると、QUERY_STRINGを取得して、自前で変換するしかないと思う
0255nobodyさん2006/08/10(木) 22:34:13ID:???
>>252-254
できました。ありがとうございました。
0256nobodyさん2006/08/10(木) 22:42:35ID:???
PHPで検索システムを作ってますが、1文字で検索するとたまに?になってしまいます。
なぜでしょうか?
0257nobodyさん2006/08/10(木) 22:57:22ID:???
>>256
文字コードの自動判別失敗と mbstring.substitute_character のせい
0258nobodyさん2006/08/11(金) 01:07:57ID:???
>>257さんへ

文字コードはちゃんと判別してると思います。(たまに?になるだけですので)
mbstring.substitute_character はnone,long,12307と変更してみましたが
やはり1文字で検索するとたまに?になってしまいます。
0259nobodyさん2006/08/11(金) 01:13:14ID:???
>>258
1文字だと誤判別しやすいんだよ。>>257の言ってるのはそういう指摘だと思う。
文字コード自動判別にはある程度の字数がないと正確に判定できないのだ。
0260nobodyさん2006/08/11(金) 01:39:59ID:???
文字コード自動判別の順番変えるべし
02611642006/08/11(金) 03:07:29ID:???
>>171

すいません、そこはここで質問する時にキーを打ち間違えたんです。
「function」ですね、お恥ずかしい。

やりたいことはようはXMLで読み込んだオブジェクト?($xml->itemみたいな)
を引数にして関数に渡して、そっちで処理したい、ってことなんですが、
まだできません。

引き続きどなたかアドバイスなどいただけたらと。
0262nobodyさん2006/08/11(金) 03:20:28ID:???
>>260
ありがとお!!!
解決しますた!!!
0263nobodyさん2006/08/11(金) 04:36:07ID:???
>>261
試したことないのであてずっぽだけど、引数をリファレンスで渡してみたらどうよ?

$xmlを丸ごと渡すなら分かるけど、$xml->itemとかいう渡し方をした場合、
$xml->itemの中で$thisとして$xmlのメンバ変数を参照しようとしたとき
$itemしかコピーされてないと正常動作しようがないんじゃないか?って気がした。
0264nobodyさん2006/08/11(金) 05:20:15ID:???
usleep()で小さい数値を指定した場合に、環境によって待ち時間がバラバラなんですが、そういうものなんでしょうか?

間で処理が遅れる事があるだろうと思うので、少し増えたりするのはうなずけるんですが、
試してみたところ、ある環境では引数に指定した値のの約3倍ずつ待っていたり
またある環境では引数に指定した値より待ち時間が少なかったりしました。

どなたかご存知でしたら教えてください。
0265nobodyさん2006/08/11(金) 07:28:05ID:???
>>264
<?php
$time1 = microtime();
usleep(3);
$time2 = microtime();
list($m1, $s1) = explode(" ", $time1);
list($m2, $s2) = explode(" ", $time2);
echo $m2 - $m1;
?>
これを繰り返したけど0.003〜0.01程度とばらばら(Win32, PHP5.1.4, Pentium D 930)
CPUのスペックや同時に動いているプロセスの数や種類などでかなり差が出るとは思われる
0266nobodyさん2006/08/11(金) 09:36:05ID:???
>>264
$time1 = microtime();
$time2 = microtime();
というふうに連続でやってもマイクロ秒付近の偏差はでるんだから、usleepのせいってわけじゃなくね?
0267nobodyさん2006/08/11(金) 11:15:29ID:???
usleepの精度とかってmanpage見た方がいいと思うんだな
0268nobodyさん2006/08/11(金) 12:11:15ID:???
>>267
The usleep() function suspends execution of the calling process for (at least) usec microseconds.
The sleep may be lengthened slightly by any system activity or by the time spent processing the call or by the granularity of system timers.
>>264
最低、引数の時間は止まるので少なくなることはない
0269nobodyさん2006/08/11(金) 12:14:53ID:???
下らない質問ですが

$a = array(1,2,3,);

この最後のカンマってあってもいいのでしょうか?
echo count($a);
とすると 4 になるかと思ったら 3 になりました。

マニュアルのどこかに載ってますでしょうか?
0270nobodyさん2006/08/11(金) 12:36:17ID:???
>>269
なくてもいい
マニュアルに載っていたかな
Cからの慣習なのかも
0271nobodyさん2006/08/11(金) 12:37:32ID:???
>>270
>>269の質問に対する答えとしては、あってもいいだな
0272nobodyさん2006/08/11(金) 15:53:56ID:???
Cだとコンパイル通らんけどな
0273nobodyさん2006/08/11(金) 16:21:47ID:???
通るだろ
0274nobodyさん2006/08/11(金) 17:20:55ID:???
>>272
エラーでなかったよ
int main(void)
{
char a[] = {1, 2, 3, };
return 0;
}
0275nobodyさん2006/08/11(金) 17:47:27ID:???
>>269
http://jp.php.net/manual/ja/function.array.php
一般的ではないですが、 最後に定義された配列エントリの後に
続くカンマがある場合、 これは有効な構文です。

配列要素を修正した時とかに最後のカンマの消し忘れても
エラーにはならない対応なんだろうけど
一般的じゃないと書かれている以上、消し忘れでない限りは
つけない方が個人的にはいいと思う
02762342006/08/11(金) 18:08:04ID:Pasm0XSV
解決したので、ご報告しておきます。
mb_send_mail($to,subject,$msg,$header)
これの$headerの中に"from:"って書いておかないと、
ヘッダー情報が本文におくられちゃうみたいです。
234でドコモの情報とか書きましたが、上の条件をみたして、携帯に送ったら
至って普通に受け取れました。
沢山レスくれたみなさん、お騒がせしました。
0277nobodyさん2006/08/11(金) 18:43:28ID:???
>>276
>>233のレスのが正解だったわけだ。
言われるまで、$headerにFromアドレスをヘッダ識別子なしで
そのまま格納しちゃってることに気付かなかったよ…
0278nobodyさん2006/08/11(金) 19:25:38ID:???
>>275
$a = array(
  1111111111111,
  2222222222222,
  3333333333333,
);
みたいに行単位で書く場合は最後にもコンマつけられたほうがいいんじゃない?
0279nobodyさん2006/08/11(金) 19:35:45ID:???
好みの問題
0280nobodyさん2006/08/11(金) 19:41:09ID:???
俺見たいに、最後だけ意識的に,を外すようにしてるやつもいれば、付けるやつもいるんだろう。

ただSQL文とかでそれやるとエラーだから、PHP使う上では出来るだけ意識的に外したほうが良いかもな。
0281nobodyさん2006/08/11(金) 20:00:10ID:???
推奨云々で言うなら最終行のカンマは無いのが正しい。
ただ、頻繁に配列内容の変更があるならむしろカンマをつけておいた方がメンテはしやすくなる。
これは
if(式)
 実行文;
っていう1行しかない場合でも、保守性を考慮して
if(式) {
 実行文;
}
と必ず { } をつけるコーディングポリシーに通じる話だと思う。

その辺の兼ね合いを考慮したうえで、後は好みの問題だから好きにすればいい。
0282nobodyさん2006/08/11(金) 21:35:28ID:???
>>278
おいらは値の追加とか削除した際にも最後に,が残らないように

$a = array(
1111111111111
,2222222222222
,3333333333333
);

って書き方してるな。
0283nobodyさん2006/08/11(金) 21:43:56ID:???
コンマって言わないでカンマって言うようにしようよ。
なんかエロくて嫌です><
0284nobodyさん2006/08/11(金) 21:45:38ID:???
>>283
言われて初めて気付いた

俺はカンマ派(どうでもいい
0285nobodyさん2006/08/11(金) 21:59:02ID:256svcAI
すみません。教えてください。
java scriptで自身を500ms周期でリロードするHTMLを書き、
数時間走らせておくと、web serverが重くなります。
web server(httpd)を再起動すると元通り軽くなります。

httpdのconfig設定等でチューニング可能でしょうか?
また、どこらへんを設定すればいいのでしょうか?

環境;
 OS Linux CENT-OS4.3
 web server apach2
 外部公開せずLAN内でのみ使用。クライアントは上記のアクセス1台のみ。
 HTMLで記述
です。よろしくお願いします。
0286nobodyさん2006/08/11(金) 22:00:48ID:???
想像力豊かな思春期の方が居るコンマはここですか?

そんな俺はPHPだけは必ず最後にコンマを付けちゃう派。楽すぎて幸せになれる。
他の言語もみんな同じようになればいいのに。
0287nobodyさん2006/08/11(金) 22:14:54ID:???
>>285
ここはPHPのスレですよ。
0288nobodyさん2006/08/11(金) 22:40:38ID:???
すいません、文字数がある範囲を超えるとその範囲までを切り取って、
「…続く」というのが付け足されるようにしたいんですが、
下のように書いたら、切り取った最後のところに「?」が追加されてしまいます。
マルチバイトの扱いがちゃんとできてないんでしょうけど、
どのように書くのがいいでしょうか?アドバイスよろしくおねがいします

$byte= mb_strlen($str);
if($byte>300){
 $str=mb_substr($str,0,300)."…続く";
}
0289nobodyさん2006/08/11(金) 22:49:45ID:???
>>マルチバイトの扱いがちゃんとできてないんでしょうけど
0290nobodyさん2006/08/11(金) 23:12:10ID:???
>>288
たぶん mbstring.internal_encoding が正しく設定されていない。
それから一応常識だから言っとくけど、PHP(mbstring)で内部エンコーディングSJISは通用しない。
0291nobodyさん2006/08/11(金) 23:18:03ID:???
>>288
mb_strlenで$byteかよ。
やりたいのはmb_strimwidthじゃないの?
mb_strimwidth:「あああ…続く」「aaaaaa…続く」
288の方法:「あああ…続く」「aaa…続く」
0292nobodyさん2006/08/11(金) 23:29:14ID:???
あああぁぁ…いくぅっ
0293nobodyさん2006/08/11(金) 23:44:06ID:???
>>290
>>291
ありがとうございます。
mb_strlenがマルチバイトを2文字として計算してるようなので$byteとかいう変数名にしてしまいました。
ややこしかったですね。
あとphpinfoで調べてみたところmbstring.internal_encodingはno valueになってますね。
これのせいかな、ファイルは全部utf-8で作ってます。

自分のサーバーじゃないんので設定変えたりはできないんですが、
他になにか良い方法があればぜひ…
0294nobodyさん2006/08/12(土) 00:03:14ID:???
おれは0.3mmを「こんまさんみり」と読むから
, は「かんま」と呼ぶようにしてる。
ま、どでもいい事ではある。
0295nobodyさん2006/08/12(土) 00:04:16ID:???
mb_internal_encoding('UTF-8');
0296nobodyさん2006/08/12(土) 00:05:12ID:???
「りみんさまんこ」
0297nobodyさん2006/08/12(土) 00:22:10ID:???
common
カモン
0298nobodyさん2006/08/12(土) 00:41:38ID:???
>>286
元々はPerlが明確に「最後にカンマをつけてOK」を標榜しててPHPはそれを真似しただけ。
0299nobodyさん2006/08/12(土) 00:43:56ID:???
>>293
> mb_strlenがマルチバイトを2文字として計算してるようなので$byteとかいう変数名にしてしまいました。
この時点でmbが正常に動作してないことに気付け。

> 自分のサーバーじゃないんので設定変えたりはできないんですが、
> 他になにか良い方法があればぜひ…
プログラム中でinternal_encodingは設定できる。
mb_strlenの挙動もそうだけど、1度はmb系のリファレンスを読みましょう。
0300nobodyさん2006/08/12(土) 02:44:18ID:???
失礼します。PHP5です。
Win環境でライブラリ(特にGD2)の関数を使用すると
ソースがshift-jisでなきゃうごかんのはphp.iniがおかしいのでしょうか?
激しく既出でしたらスルーしてください。
0301nobodyさん2006/08/12(土) 04:15:24ID:???
そんな不思議仕様は聞いたこと有りません。
0302nobodyさん2006/08/12(土) 08:04:13ID:???
>>295
>>299
ありがとうございます!
ini_set("mbstring.internal_encoding","utf-8");
でいけました
0303nobodyさん2006/08/12(土) 12:42:05ID:???
オレはマンコ派
0304nobodyさん2006/08/12(土) 12:49:27ID:???
phpってsetter、getter必要なんでしょうか?
連想配列でもいい気がするんですが、どうなんでしょうか。
0305nobodyさん2006/08/12(土) 12:53:44ID:???
getter setterと連想配列は全然違うわけだが
0306nobodyさん2006/08/12(土) 12:57:12ID:???
たとえば、Dto(vo) では、データのみを保持しますが、
この場合もJava同様getter, setterを作る方法がスマートなんでしょうか?
連想配列の方が楽な気がするんですよね。
どうなんだろう。
0307nobodyさん2006/08/12(土) 13:05:10ID:???
Javaでgetter、setterを使っていたのは何のためだったんだい?
0308nobodyさん2006/08/12(土) 13:08:08ID:???
そういう作成方法だからという理由でした。

getter、setterごとに制御を入れるってことも滅多になかったもので。
DBのカラム名、画面の部品名称が変わるたびに、変数やメソッドの名前が変更になるので
すごい面倒だとJavaのときも感じていました。

実際、getter、setterを使っていて得したってことはなかったです。
痛い目にあっていないだけからかもしれませんが。
0309nobodyさん2006/08/12(土) 13:42:36ID:???
その疑問があるなら、むしろjavaのスレッドとかコミュニティに
勇気を出して聞いたほうがいいぞ
とてつもなく、罵倒される可能性もあるが
0310nobodyさん2006/08/12(土) 13:49:37ID:???
>>309 ということは、309さんはgetter,setterを使っているんでしょうか。

連想配列があるPHPでも実装する利点ってどこにあるのでしょうか?
0311nobodyさん2006/08/12(土) 13:52:48ID:???
人がやれといえば、何でもやるのか?
その辺を吟味し、自分なりの方法を確立していくのも
プログラムを書いていく上で必要なことだと思うが。
0312nobodyさん2006/08/12(土) 13:57:54ID:???
>>311

いやたぶん自分なりの方法を確立すると大変なことになります。
だから、デザインパターンなんてものがあるんだし。

ここ人が少ないんですね。
レスが少なくてむなしいw
0313nobodyさん2006/08/12(土) 14:04:48ID:???
>>312=304?
質問するなら>>1読んで、ID表示くらい守ってくれんかね。
0314nobodyさん2006/08/12(土) 14:05:12ID:???
private 定義がない PHP4においては、setter、getter の意味は
勧告程度しかない
ようは、setter、getter が定義されていないプロパティに関しては
外部からアクセスするなというルール作りでしかない
一人で、作っているときはそれで問題ないかもしらないが、
複数人で使いまわす処理なんかを作ると、一時領域に使っている
プロパティを勝手に書き換えられて、後の動作がうまく動かなく
なるということは良く起こる
これが一つの理由
0315nobodyさん2006/08/12(土) 14:05:24ID:???
もう一つは、setter、getter 経由でアクセスしていれば、仕様変更時に
setter、getter 内の変更だけですむ可能性がある

これらの理由は、連想配列があろうがなかろうが関係ない

別の使い方としては、連想配列へのアクセスのためのヘルパーメソッド
として使う程度だろう
0316nobodyさん2006/08/12(土) 14:05:59ID:???
WebProg番1のスレ速度なわけだが
0317nobodyさん2006/08/12(土) 14:10:30ID:???
一人で、作っているときはそれで問題ないかもしらないが、
複数人で使いまわす処理なんかを作ると、一時領域に使っている
プロパティを勝手に書き換えられて、後の動作がうまく動かなく
なるということは良く起こる

プロパティ(変数?)を勝手に書き換えられてってありますが、
privateにすれば勝手に書き換えられることはないですよね。

Java板で質問したところ、すごいきっちりとした納得できる内容の
返信をもらいましたので、追記します。
0318nobodyさん2006/08/12(土) 14:12:17ID:???
●Java板からの返信。回答者さんありがとうございます。

本来はカプセル化のためだし、
getterやsetterにいろいろ仕込む手法もあったのだけど、
最近の流れはそうではないよね。

でも当初の思想がそうだったために、各種開発ツールや
ライブラリやカスタムタグがgetter/setterありきで設計されている。

ってとこが現実かな。

変数名とメソッド名を合わせて変更は、IDEが対応しているでしょ。
データを保持するだけの単純なJavaBeanは手書きするもんじゃないよ。


--
個人的にすごい納得できる内容でした。
0319nobodyさん2006/08/12(土) 14:42:23ID:???
正直、その答えで納得できる人間がなぜ、今まで悩んでいたのかが
理解に苦しむ

>privateにすれば勝手に書き換えられることはないですよね
まあ、別に変更可能なメンバ変数は public で
それ以外は private って使い方でもいいけど
0320nobodyさん2006/08/12(土) 16:06:12ID:???
httpsのページにPOSTで送信したいんですが
そういう関数どこかにないですか?
0321nobodyさん2006/08/12(土) 16:21:09ID:???
標準の関数はない。PEARライブラリ使うか自作。
■ このスレッドは過去ログ倉庫に格納されています