【PHP】下らねぇ質問はここに書き込みやがれpart15
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/01/14(土) 20:06:11ID:???ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは流れを見て970/980/990の誰かが建てれ
まず読め【PHP マニュアル】
http://www.php.net/manual/ja/
本スレ【PHP】質問スレッドpart32【php】
http://pc8.2ch.net/test/read.cgi/php/1136276300/
前スレ【PHP】下らねぇ質問はここに書き込みやがれpart14
http://pc8.2ch.net/test/read.cgi/php/1134868212/
過去スレは>>2
FAQは>>3
0513nobodyさん
2006/01/26(木) 11:19:34ID:???jcodeとかnkfみたいなのありませんか?
0515nobodyさん
2006/01/26(木) 11:38:00ID:???0516nobodyさん
2006/01/26(木) 11:43:35ID:???0517nobodyさん
2006/01/26(木) 12:22:26ID:???require_once "HTTP/Compress.php";
とやると
Warning: main(HTTP/Compress.php): failed to open stream: No such file or directory
と出てしまいます。
CGI版PHPにしても同様です。
0520nobodyさん
2006/01/26(木) 13:06:32ID:???globalでやってみても駄目でした。
<?
$a=10;
test();
function test(){
$b=20;
test2();
echo $b;
}
function test2(){
global $b;
$b++;
}
?>
↑では$bが21になるようにしたいんですけど・・。
0521nobodyさん
2006/01/26(木) 13:32:24ID:???変数$bはtest内ローカル変数だから、test2内からでは参照できない。
変数$bを、変数$a同様にグローバルの場所で宣言するか、test内で global $b; として宣言する。
0523nobodyさん
2006/01/26(木) 13:46:40ID:???これで普通って思うかも
>>520
関数っつーのは一般に y= f(x) の形で表されるもので、
「何か値を入れたら何かが返ってくるもの」と考えるのが
C系の言語の基本です。で、関数の中身のことは知らなくて
いいように作る。これ。
0524520
2006/01/26(木) 14:01:52ID:???>>522さんのやり方は当然わかっていたのですがどうせなら引数も
持たさないでいきたいなと思ったので・・。書いてなかったのですいません。
>>523さんの言いたいことはわかるのですが作るとなるとうーむ・・むつかしいところですね^^;
0525nobodyさん
2006/01/26(木) 14:06:28ID:???もしいくつかの関数で変数を共有したいというのであれば、
global 宣言使うよりも class 使った方が何かといいよ。
おれも引数は少ない方が好きだからその気持ちは分からなくもない。
0526nobodyさん
2006/01/26(木) 14:45:41ID:???classを活用出来ていない外野なんだけど、クラスでの解決方法をさらして欲しい・・
なんていうのは贅沢ですかそうですか
簡単にクラスを使った用例がホスイ
0527nobodyさん
2006/01/26(木) 14:54:48ID:???class Hoge
{
var $b;
function test(){
$this->b=20;
$this->test2();
echo $this->b;
}
function test2(){
$this->b++;
}
}
$a = new Hoge;
$a->test();
0528nobodyさん
2006/01/26(木) 15:01:11ID:???おぉ、サンクス。
>>526
メリットとしては共有しているものがはっきり違う形で
書かれているので関数の中だけ見ていてもぱっと見で影響
範囲が分かるってことと、共有する変数(PHP 的な正確な
用語は知らん)については最初に初期化しなければいけない
ので、これもあとで見たときに分かりやすくなるってこと
かな。使い捨てならどうだっていいことだけど。
0529520
2006/01/26(木) 16:48:46ID:???で、確かにクラスにしようかなとも考えたのですが
なんというかオブジェクト?(カート、動物)と言った物の処理とは
ちょっと違うように思えたのでそれならclassもおかしいのかなと思いました?
言葉ではちょっと表しにくいですね・・・。
簡潔に言えば労働スケジュールを組んでいます。(時間配分や機械等)
でこの日にはこの処理をこれだけの量やってって感じなんですが
ここである条件の場合の処理というのを関数に分けているのです。
で、さらにこの分けた関数処理の中でも条件分岐によって重複する処理がでたので
さらに分けたということなんです。
・・て感じなのでなんていうか、クラス的な考え方ってありなのでしょうか?
0530520
2006/01/26(木) 16:52:45ID:???俺の考え的には
if(){
処理A
処理C
}else{
処理B
処理C
}
↑の重複する処理Cの部分が多くなると関数として分けているのですが
こういう考え方についてはどう思われるのでしょうか?いろいろ教えてください^^;
0532520
2006/01/26(木) 17:07:37ID:???for(){
if(){
if(){
処理A
break 3
}else{
処理B
}else{
処理C
処理D
break 2
}
}else{
if(){
処理E
}else{
処理F
}else{
処理G
処理D
break 2
}
}
}
こんな感じでネストかけまくってるんです;;
処理Aとかも短くて同じ処理あるのですがいちいち関数で分けてたらややこしくなるしと思いまして・・
0533nobodyさん
2006/01/26(木) 17:08:17ID:???オブジェクトは単なる概念であって物理的なモノとは全然関係ないんで、
「1日」がオブジェクトだったり、「作業」がオブジェクトだったり、
処理しやすいように書けばいいと思うけど?
何か一つオブジェクト指向言語をやってみると目から鱗が落ちて、
なんでもかんでもオブジェクトとして扱えるようになるかもしんない。
でもそうなると PHP やめたくなるかもしんない。
0534nobodyさん
2006/01/26(木) 17:21:47ID:???オブジェクト=モノ、みたいな発想にとらわれることはないかと。
ただのスタティックな関数の寄せ集めをそれっぽい名前でカテゴライズしてクラス階層に落とし込んだりもするし。
0535nobodyさん
2006/01/26(木) 17:27:26ID:???脱皮が必要な時期にきてるかもね。
関数はくり返し使う処理を切り出すってより、「ロジックを書きやすく
読みやすいものにするためにブラックボックスを作る」という発想で
作っていくといいよ。まぁそのためにはデータ構造とかもいじらなきゃ
いけなくなるかもしんないけど。
例えば今回のスケジュールならたぶん作業や機械によって条件が
変わってくるでしょ? そういう条件をひっくるめてオブジェクトとして
くるんでしまう。そうするとおおもとのロジックで気にすべき条件は
見た目上だけど減るよね。オブジェクトの中に入っちゃうんで直接気に
する必要がなくなる。あとはロジックを書く際にいちばんほしい情報
だけをオブジェクトに教えてもらいながら書き進めていけばいい。
日本語だとえらく漠然としちゃうけど、オレの言いたいことは「ロジックを
気持ちよく書けるように工夫しろ」ってことだ。その結果、コード量が
増えてしまうことを恐れてはいけない。増えても読みやすければいいんだ。
0536nobodyさん
2006/01/26(木) 20:51:35ID:???Apacheってなんのためにあるんでしょ?
URLから「8080」のようなポート番号が必要なくなるだけ?
0537nobodyさん
2006/01/26(木) 20:55:49ID:???0538nobodyさん
2006/01/26(木) 21:19:04ID:???Apacheのほうがwebサーバとしての機能が十分に備わってるからでしょ。
TomcatはあくまでもApacheのプラグインと考えたほうがいいよ。
0539nobodyさん
2006/01/26(木) 23:06:17ID:???例えばfopenを使ってページや画像を保存する処理、つまり多重ダウンロードなどをしたい時は、
fopenでなくsocket系を使うべきでしょうか。
0540532
2006/01/27(金) 08:10:12ID:???ありがとうございます。
>>535さんまた難しそうですね^^;
確かに実際にオブジェクト指向組んだことないし勉強しなければ・・
俺は癖でつい読みやすさよりコード量減らしてしまふ・・orz
>>533 やめたくなるってのはオブジェクト指向には適していないから??
0541nobodyさん
2006/01/27(金) 08:44:08ID:???短くすること自体は良い習慣だけどね
全体量が小さくなることよりもブロックが小さくなることの優先度が
高いかな。おれはね。長いブロックを読み書きする体力がないもんで。
PHP はオブジェクト指向には「あまり」向いてないと思うよ。
5 はだいぶマシっぽいけど。
まぁそれは今から気にする必要ないんじゃない?
0542nobodyさん
2006/01/27(金) 10:09:24ID:???かなり見通しも良くなるし、変数のスコープも明確になる。
ひとまず、クラスなんて使ってみれば「どうということはない」。
オブジェクト指向はその後でもいいんじゃね?
0543nobodyさん
2006/01/27(金) 11:43:37ID:???MVCとかも以前JSPサーブレットとか使ったときちょっとやったけど
量が少ないと分けない方が楽なんですよね。
もはや人に見せることは考えてないですが・・^^;
・・とこんなこと書いてると俺のひよこレベルがw
0544nobodyさん
2006/01/27(金) 15:02:56ID:???後のメンテナンス性、拡張性考えると自然とオブジェクト指向になっていくお^^
0545nobodyさん
2006/01/27(金) 15:42:53ID:???とりあえず全てclassに入れればいいのかな?
0546nobodyさん
2006/01/27(金) 15:47:56ID:???PHPなんて代表的なオブジェクト指向が必須でない言語の一つだから、無理してclassを使う必要はない。
0547nobodyさん
2006/01/27(金) 16:29:44ID:???ちょっと前に書いてあるじゃん。
変数を共用したいとかそういう、「同じグループに属してる感」が
ないのに class に入れたって面倒なだけ。
0548nobodyさん
2006/01/27(金) 16:40:41ID:Y9rt4MFE0549nobodyさん
2006/01/27(金) 17:32:34ID:???for(){
処理A
}
if(flag){処理B}
}
↑上の状態で処理Aの中でflagがtrueになった場合、
下のif文中処理Bのところでもっかいfor文に飛ばすにはどうすればよいですか?
for文の外に無限ループつけてそこにcontinueとかするしかないのでしょうか・・
0550軟式PHP
2006/01/27(金) 17:43:45ID:???{
処理A
}
を関数化すりゃいいんでねぇの。
0551nobodyさん
2006/01/27(金) 17:51:28ID:???●著作権は消さないで
というスクリプトを改造して、HPに載せたいんだけど、改造したものでも著作権の表示は必要なの?
0553nobodyさん
2006/01/27(金) 17:58:29ID:???著作権明示は必要。
どうしても消したいってときは、作者に連絡してみれば?
カンパ金かなんか払えば消してもいいって人いるかもよ。
0554nobodyさん
2006/01/27(金) 18:12:54ID:46g/AEL1PHPでBlogを作っているんですが、メールで更新出来る様にしたいと思い色々調べて、.forwardを使ってメールをプログラムに転送すれば良いと解ったのですが、転送先のプログラムにはどのような処理を書けばいいのでしょうか。
例えばGETなりPOSTなりで送られてくる訳ではないですよね?
自分なりに調べてみたんですが、今ひとつ解説してあるサイトが見つかりません。。
ヒントだけでも頂けないでしょうか。
よろしくお願い致します。
0556nobodyさん
2006/01/27(金) 21:10:57ID:???テンプレートエンジンはあくまで動的なページ生成を PHP を
直接書かずにできるようにする仕組み。フレームワークはユーザー
からの入力、画面遷移、セッション、DB など全般的に抽象化して
アプリケーションの骨格だけ書くことに集中させてくれるもの。
0557nobodyさん
2006/01/27(金) 23:24:19ID:Y9rt4MFEありがとうございます
0558nobodyさん
2006/01/28(土) 04:46:39ID:NaSuq9Gxまだ試してないんですが、検索したらそれらしいものが出てきました!
ありがとうございました!
0559nobodyさん
2006/01/28(土) 04:49:51ID:???myFunction()
my_function()
おまいら、どっちにしてる?
0561nobodyさん
2006/01/28(土) 05:53:02ID:???0562nobodyさん
2006/01/28(土) 05:58:04ID:???$my_fanc
myFanc
0564nobodyさん
2006/01/28(土) 07:37:46ID:???だからこっち myFunction()
0566nobodyさん
2006/01/28(土) 13:16:01ID:???PEARって何?って人にどこかいいサイトありませんでしょうか?
「PEAR は、TeXの CTAN および Perlの CPANにヒントを得たPHP拡張および
PHPライブラリのコード用のコードレポジトリです。」
こんなことを言われても正直わかりません…
0567nobodyさん
2006/01/28(土) 13:17:27ID:???ttp://www.amazon.co.jp/exec/obidos/ASIN/4798109592/
詩ね
0568nobodyさん
2006/01/28(土) 13:19:43ID:???サイトを紹介してください。
0569558です。
2006/01/28(土) 13:26:03ID:NaSuq9Gxテストでfgetsで取得してファイルに書き込むようにプログラムしたんですがうまく行きません。
これってもしかしてCGI版じゃないとダメな感じなんでしょうか。。
0572nobodyさん
2006/01/28(土) 13:51:20ID:???ほいっ。マニュアル
「第43章PHP をコマンドラインから使用する」
ttp://www.php.net/manual/ja/features.commandline.php
0573nobodyさん
2006/01/28(土) 14:17:47ID:mOSvPqom変数をフォームに出力するにはどうすればいいのでしょうか?
0574nobodyさん
2006/01/28(土) 14:26:58ID:???話はそれからだw
0575nobodyさん
2006/01/28(土) 14:27:54ID:???それは HTML の問題だろ…。
$test = htmlspecialchars($_REQUEST['test']);
<input type="text" name="test" value="$test">
0576nobodyさん
2006/01/28(土) 14:36:08ID:???また、そうする事が推奨されていたりはしますか?
0577nobodyさん
2006/01/28(土) 14:47:59ID:???思い通りに表示されれば問題なし。
エラーが出たら問題あり。
一応囲むのが普通とだけ言ってみる。
0578nobodyさん
2006/01/28(土) 14:49:34ID:mOSvPqom0579nobodyさん
2006/01/28(土) 14:55:06ID:???手元では問題なかったのですが、
特別なケースがあるのかなと思って・・・
今までは必要最低限でしか{ }を使わなかったですが
これからは基本的に囲むようにします
0580nobodyさん
2006/01/28(土) 14:55:48ID:???問題は無いつーか、問題が無くなるわな。
マニュアルによると、PHPの中の人が変数名を見つけ出す方法はこのようになっている。
> ドル記号($)を見付けるとパーサは、有効な変数名を形成することが可能な最長のトークンを取得します。
> 変数名の終りを明示的に指定したい場合は、変数名を波括弧で括って下さい。
0583nobodyさん
2006/01/28(土) 15:06:18ID:???if ($aaa) echo $string;
}
という条件付echoを作成しました
どんな関数名にしたらいいでしょうか
みなさんの知恵をください
沢山使うので一般的な名前にしたいのですが
0585nobodyさん
2006/01/28(土) 15:28:04ID:???0586nobodyさん
2006/01/28(土) 15:39:50ID:???どうすればいいんでしたっけ?
$_ENV か $ENV だったような気がしたのですが・・・。
具体的には、REQUEST_METHOD の値を知りたいのですが。
0588nobodyさん
2006/01/28(土) 17:05:51ID:EkhKiUPm0590nobodyさん
2006/01/28(土) 17:29:39ID:???$foo[$bar][$hoge['$fuga']]}
こんなのでも}の起点を正確に探知しなきゃいけないパーサカワイソス
0591nobodyさん
2006/01/28(土) 17:38:09ID:???./?a%5B%5D=1では受け取れなかったのです。
0593591
2006/01/28(土) 17:53:49ID:???失礼しました
0594nobodyさん
2006/01/28(土) 18:10:29ID:???http://pear.php.net/package/PhpDocumentor
0595nobodyさん
2006/01/28(土) 18:10:40ID:???例えばC++でDBを扱うクラスclass_dbを db.h と db.cpp に記述したとします。
db.hにクラス宣言、db.cppに定義を行いますよね。
さらに aaa.h、bbb.h、ccc.hでclass_dbのstatic関数を用いたいときは
これらの先頭にinclude<db.h>と書きますよね。
main.cpp
↓ ↓ ↓
aaa.h bbb.h ccc.h
↓ ↓ ↓
db.h
の感じでインクルードします。
このような事をPHPでやるとき、このまま書くと多重定義になるので
main.php
↓ ↓ ↓ ↓
aaa.php bbb.php ccc.php db.php
と書いたらうまくいきました。
ところがaaa.php、bbb.php、ccc.phpはdb.phpをインクルードしてないのに
db.phpで定義した関数が出てきてしまい、何か気持ち悪いです。
PHPはこういうもんなんだと納得すべきでしょうか。
それともいい方法があれば教えてください。
0597nobodyさん
2006/01/28(土) 21:07:05ID:xY1GiFbjcgiだったら
if ($user =~/UP\.Browser/) {
$user = $ENV{'HTTP_X_UP_SUBNO'};
}
でいけるみたいなんだが、PHPだとどう記述するのでしょうか?
0598nobodyさん
2006/01/28(土) 21:13:33ID:???ezwebの事は知らんが、そのコードを見た感じだと、
・$userは環境変数UserAgentから取得。
・$userがUP.Browserという文字から始まっていれば、ezwebだと解釈し、
・さらに環境変数HTTP_X_UP_SUBNOを取得すると、サブスクライバとやらが取得できる。
ってことじゃないの?
$_SERVER $_ENV配列あたりを覗けば希望するものが得られるかと。
0599nobodyさん
2006/01/28(土) 22:42:35ID:???CGIでなくPerlだったら、なんだろうが(PHPでもCGIは書けるぞ)
PHPで同じ内容は
if (preg_match('/UP\.Browser/', $user)) {
$user = $_SERVER['HTTP_X_UP_SUBNO'];
}
と書く。
0600nobodyさん
2006/01/28(土) 23:11:00ID:OGAeWMPnphpで、windowsで言う所の「ファイルの作成時刻」を得たいのですが、
statについて調べてみると
8 atime 最終アクセス時間 (Unix タイムスタンプ)
9 mtime 最終修正時間 (Unix タイムスタンプ)
10 ctime 最終変更時間 (Unix タイムスタンプ)
とのことで作成時刻は得られないのでしょうか。
それと、最終修正時間と最終変更時間って何の違いでしょう?
0601nobodyさん
2006/01/28(土) 23:14:56ID:xb4UVvPr携帯メールを指定アドレスに送る→ブログに更新
なんてのがありますが、具体的にどうやって実装すればいいでしょうか。
0602nobodyさん
2006/01/28(土) 23:20:06ID:???ctime - unix系で言うところのinodeの情報(所有者やグループ、パーミッション等)が変更された時。
0603nobodyさん
2006/01/28(土) 23:26:43ID:???マニュアルにも書かれているが、
filectime
>注意: 多くのUNIXファイルシステムでは、i-ノードが変更された際、つまり、パーミッション、所有者、グループ、
>または他のメタデータが書き込まれた際に、ファイルが変更されたとみなされます。
filemtime
>注意:この関数は、ファイルのブロックデータが書き込まれた時間を返します。これは、ファイルの内容が変更された際の時間です。
つまり、ファイルの内容が最後に更新された時間がfilemtime、
内容以外でもパーミッションなども含めて最後に更新された時間がfilectime
ということになる
ちなみに、fileatimeの所に
>いくつかのUNIXでは、ファイルのctimeはファイルの作成時間として参照されます。これは間違っています。
>多くのUNIXファイルシステムでは UNIXファイルの作成時間は存在しません。
とマニュアルには書かれている
0605nobodyさん
2006/01/28(土) 23:36:44ID:???0606600
2006/01/28(土) 23:37:28ID:???thxですた。∧||∧
0607600
2006/01/28(土) 23:38:21ID:???0608nobodyさん
2006/01/29(日) 02:12:39ID:???今、WindowsXPのコマンドプロンプト上で動かすスクリプトを書いています。
内容はディレクトリの中身を表示すると言う単純なものなのですが、下のソースのように
if(!is_dir($file))としているにもかかわらずフォルダ名まで表示されてしまいます。
この指定ならフォルダ名は表示されないと思うのですが間違っているのでしょうか?
PHPのバージョンは5.1.2です。
<?php
$dir = opendir("./foruda") or die("Directory is can not open !!");
while ($file = readdir($dir)) {
if(!is_dir($file)) {
echo "$file\n";
}
}
closedir($dir);
?>
0609608
2006/01/29(日) 02:15:11ID:???×echo "$file\n";
○echo "$file\r\n";
0610nobodyさん
2006/01/29(日) 02:20:23ID:???is_dir() は不完全。is_dir() のマニュアルのユーザノートにも書かれていたと思うが。
本当にディレクトリかどうか調べるなら
filetype() の結果を使うべき。
■ このスレッドは過去ログ倉庫に格納されています