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

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

レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん2008/05/27(火) 18:04:33ID:???
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 68
http://pc11.2ch.net/test/read.cgi/php/1209822736/

◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

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

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0938nobodyさん2008/06/24(火) 14:40:45ID:???
おっとw
0939nobodyさん2008/06/24(火) 15:05:13ID:???
ついでに言うけど、freetype-dir はライブラリの置き場所指定するだけだし、
通常サーバでフォントが必要になることはほとんどないと思うから
そういう但し書きが無い限りフォントは無いと思うよ。
フリーなやつ探したり、自分で買ったやつを自分の場所に置いて使うんじゃないかな。
09409362008/06/24(火) 15:10:48ID:bfjplt45
>>937
その発想は無かった。
自分のPCにインストールして、TTFファイルをコピペして鯖に置けばいいのかな。
とにかく、ありがとう。
09419362008/06/24(火) 15:15:40ID:bfjplt45
>>939
>freetype-dir はライブラリの置き場所指定するだけだし
/usr/local なんてどう考えてもおかしいと思ってたけど、そういうことだったのか。
丁寧な補足に感謝。
0942hoge-php-users2008/06/24(火) 17:10:26ID:???
PHPユーザ会とかの勉強会って基本、ディスカッション形式なのでしょうか?
出たいのですが、最初は雰囲気になれるために聞いているだけでいたいですorz...

過去にこういった集まりに出た方、いらっしゃいましたらご教示お願いいたします。m(_ _)m
0943nobodyさん2008/06/24(火) 17:35:22ID:XKNDO3RB
PHP5のリファレンスについての質問です。
あまりよく理解していません。
echoするときに$ary[20]という変数名を使いたくない場合、
メモリを節約する(変数のコピーをしない?)にはこれでいいですか?


$ary[20]; //大きなデータ

function foo(&$ary[20]) {
  //なんらかの処理
}

foo($ary[20]);
$data =& $ary[20];

echo $data;
0944シャープ2008/06/24(火) 18:00:29ID:22rywXeu
test/
ディレクトリにあるファイルで、
testから始まるファイルをすべて削除するには、どうすればよいのでしょうか?
そんなことは可能でしょうか?
0945hoge-php-users2008/06/24(火) 18:34:02ID:???
>>943さん
それでOKです。
メモリを節約する目的で使うのが適当か、はベンチマークとってください。

>>944さん
確か
`rm test/test*`
でできたはず
違っていたら大変なので問題ないところでテストしてください。
0946hoge-php-users2008/06/24(火) 18:38:54ID:???
訂正
`rm -rf test/test*`
レンタルサーバとかでは使えないかも…
0947nobodyさん2008/06/24(火) 18:49:24ID:???
>>946
unlink
じゃなかったっけ?
09489432008/06/24(火) 19:31:24ID:XKNDO3RB
>>945
ありがとうございます。
安心しました。
0949nobodyさん2008/06/24(火) 19:33:23ID:???
>>944
http://jp.php.net/rmdir
の下の方にあるユーザーからのコメントを参考にすると良いよ

>>945
それはただ単にシステムコールしてるだけだろ

0950nobodyさん2008/06/24(火) 19:57:50ID:???
そりゃシステム関数呼んでるけど
それをシステムコールとは言わん
0951nobodyさん2008/06/24(火) 19:59:58ID:???
>>945
明示的に参照にしても意味ないよ
0952nobodyさん2008/06/24(火) 20:35:11ID:ED0kh2wU
function hoge( $foo = $bar ) {
 ...
}

上のような感じで、関数の引数のデフォルト値に変数を指定できません。
どうしても実現したいのですが、下のような感じにしないとダメですか(ノ_<。)

function hoge( $foo = NULL ) {
 global $bar;
 if( is_null( $foo ) ) $foo = $bar;
 ...
}
0953シャープ2008/06/24(火) 20:35:39ID:22rywXeu
回答ありがとうございます。
僕は、ファイルをマッチして、ループで削除を繰り返すと考えていたのですが、そのようなことはどうすればできますか?
0954nobodyさん2008/06/24(火) 20:42:33ID:???
>>953
後出しうぜー
http://www.php.net/manual/ja/function.opendir.php
http://www.php.net/manual/ja/control-structures.while.php
http://www.php.net/manual/ja/function.preg-match.php
http://www.php.net/manual/ja/function.unlink.php

あとは自力で。
0955nobodyさん2008/06/24(火) 20:54:56ID:???
>>952
マニュアル読まない房うぜー
http://www.php.net/manual/ja/functions.arguments.php

あとは自力で。
09569522008/06/24(火) 21:17:11ID:???
>>955
ご案内頂いたURLは、既読です。
引数を、別のグローバル変数から値渡しする方法は書かれていませんでした。
0957nobodyさん2008/06/24(火) 21:19:07ID:???
>>956
ちゃんと読めよ
0958nobodyさん2008/06/24(火) 21:19:25ID:???
>>956
引数にwhileループを適用する方法も書かれてないけど、これについてはどう思いますか?
09599522008/06/24(火) 21:30:05ID:???
>>957
ちゃんと読んでいます。
>デフォルト値は、定数式である必要があり、 (例えば) 変数やクラスのメンバーであってはなりません。
デフォルト値に変数をそのまま使えないということも理解しています。
だから、>>952に自分なりの回避案を記載し、「この方向で最適でしょうか?」と質問しているのです。


>>958
意味が分かりません。
0960nobodyさん2008/06/24(火) 21:34:18ID:???
>>959
global変数なんて使うな
09619522008/06/24(火) 21:43:58ID:???
>>952に対して、まともなご返答を頂けないでしょうか?

>>960
参照渡しでなく、値渡しをするだけであり、
関数外へグローバル変数への影響は一切与えませんので、
問題はないと理解していますが、使ってはいけない理由を教えて下さい。
0962nobodyさん2008/06/24(火) 21:45:23ID:???
自分で調べろボケ
アドバイスくれっつーからしただけだ。
まともな返答が欲しけりゃまともな質問者になれ。1も読んでないくせに減らず口叩くな。
0963nobodyさん2008/06/24(火) 21:51:33ID:???
>>952を見て「回避策は正しいですか」という質問には読めず
「デフォルト引数値に変数を使う方法はありませんか」としか
思えない俺には、まともなご返答をする資格はないな
0964nobodyさん2008/06/24(火) 21:51:45ID:???
>>962
相談「引数のデフォルト値にグローバル変数を値渡ししたい」
アドバイス「グローバル変数なんて使うな」

これはアドバイスとは言わない。
つか、>>962みたいなのしかいないならいいや。
自分よりレベルが下の人間の回答は役に立たない。
0965nobodyさん2008/06/24(火) 22:04:50ID:???
>>952
それをどうしても実現しなきゃならん理由って何なの?
普通に組んでたらそんな事ってほぼ無いと思うんだが・・・

define('HOGE','aiueo');

function aaa($a = HOGE) {
 echo $a;
}

aaa();

こんな感じでやったら?
0966nobodyさん2008/06/24(火) 22:08:43ID:???
$arg = ('foo' => $bar);
function ($arg) {
extract($arg);
print $foo;
}
0967nobodyさん2008/06/24(火) 22:10:42ID:???
>>965
値渡ししたい変数というのは、
配布するスクリプトでユーザーが設定するコンフィグ変数なのです。

ですので、>>965氏のおっしゃるように、
実際は定数として扱うのが正しいのですが、
定数の書き方にしてしまうと、
PHPを知らない対象ユーザーが、間違えた書き方をしてしまう可能性が出てくるのです。
0968nobodyさん2008/06/24(火) 22:21:46ID:???
function hoge($foo = NULL) {
 if (is_null( $foo)) $foo = $GLOBALS['bar'];
 ...
}
0969nobodyさん2008/06/24(火) 22:31:02ID:???
>>968
>>952で自分なりの回避策として考えていましたが、
やはり、それが最適ですかね?
0970nobodyさん2008/06/24(火) 22:58:15ID:???
ポカーン
0971nobodyさん2008/06/24(火) 23:06:25ID:???
>>967
きっちり注意書き書いておけば大丈夫だと思うがな・・
でなければ設定自体がまともにできんだろ・・・

0972nobodyさん2008/06/24(火) 23:14:26ID:???
そもそもPHPを知らないユーザがイジって不安ならxmlやini形式とかの
設定ファイルにしてパースしろよって思う
0973nobodyさん2008/06/24(火) 23:45:45ID:???
それやっても>>952は同じ問題にぶち当たるけどね
0974nobodyさん2008/06/24(火) 23:50:37ID:???
>>952が書いたことやりたいなら

function hoge(&$bar){
}

とかで参照渡しでいいじゃないの。
0975nobodyさん2008/06/25(水) 00:14:41ID:???
>>974 関数抜けた時に消えるよ、Cやら他言語やってる奴が陥る典型例
グローバル変数は変らない

ユーザの書き換えミスを心配するなら値チェックするフォームが妥当だと思う
is_null使う所なのか? とか全体的に違和感の有る書き方だけど
0976nobodyさん2008/06/25(水) 00:34:40ID:???
>>975
あぁ、そうだったんだ。参照渡しとかあんまりやらないから知らなかった。

ユーザ情報がなんたらとかバリデーションかますとかだったら、クラスでやったほうがいいんでないの。
とか、そういう方向性は。
0977nobodyさん2008/06/25(水) 00:40:05ID:???
>>976 俺もやらかした、気にすんなw

グローバル関数に関してはこういうもんだから、別個にVBでも何でも良いから
ファイル書きかえる実行ファイル用意して設定を入れたphpファイル作らせて
からアップロードなりさせたら良いんじゃないの。

気になることがユーザの間違いなら対処方法としてはそれで良いんじゃねのかと
コードから自己顕示欲が漂う
0978nobodyさん2008/06/25(水) 03:15:16ID:???
まぁ普通は952みたいなことはしない。
そうせざるを得ないなら設計が悪い。
それでも自分のコードを押し通したいなら、別に悪コードではないから自己責任で。
0979nobodyさん2008/06/25(水) 03:17:46ID:???
うん、>>952はglobal引くなら、せめて変数名全部大文字にするとか、なんか分かりやすくすればいいと思うよ。
0980nobodyさん2008/06/25(水) 03:45:25ID:???
俺の一番嫌いな変数global変数
これってメモリ余計に食うしバグの原因になりやすい変数でしょ
大嫌い
0981nobodyさん2008/06/25(水) 03:56:34ID:???
>>952はどうしてもそんなコード書かなきゃいけないか考え直した方がいい
0982nobodyさん2008/06/25(水) 04:03:18ID:???
>>964
>相談「引数のデフォルト値にグローバル変数を値渡ししたい」
>アドバイス「グローバル変数なんて使うな」
>
>これはアドバイスとは言わない。
>つか、>>962みたいなのしかいないならいいや。
>自分よりレベルが下の人間の回答は役に立たない。

なんだこりゃ・・・親切もいいところだろ。
0983nobodyさん2008/06/25(水) 04:12:22ID:???
昔はperlもPHPもglobal変数ばっかりだったよ
でも今は、なるべくローカル変数を使う傾向になってるよ

global変数はセキュリティ的にもバグ的にもチームで分担作業するにしても
あまりよくない変数です
0984nobodyさん2008/06/25(水) 04:17:02ID:???
>>952
こんな関数つくらないといけなくなるような設計が
そもそもおかしいというかw
なんでそんな関数必要になるの?マジ不思議
0985nobodyさん2008/06/25(水) 05:21:37ID:???
複数人でやってるプロジェクトなら誰かが止めそうな気はするなw
0986nobodyさん2008/06/25(水) 07:59:25ID:uulTChwW
俺が感じるのは、グローバル変数にものすごく敏感な人たちが、
セッション変数には、まったく無頓着であるということ。

セッション変数もグローバル変数と同等。
セッション変数に、あちらこちらのクラスでたくさんデータを詰め込んでいる
システムをあちらこちらでみる。

しかも、セッション変数が重複することによるバグの原因(運用で発見されることもある)
メモリーでセッションを管理している場合は、メモリーパンクでサーバーが炎上。D
0987nobodyさん2008/06/25(水) 10:18:13ID:???
>>952
俺ならクラスにスル
0988nobodyさん2008/06/25(水) 10:22:36ID:???
【PHP】下らねぇ質問はここに書き込みやがれ 70
http://pc11.2ch.net/test/read.cgi/php/1214356448/

次スレ
0989nobodyさん2008/06/25(水) 10:28:23ID:???
グローバル変数とか言ってるやつ、
どうせモバイルAdSenseだろ。
デフォルトコードから自分でローカル変数に書き換えて作り直せよ。
0990nobodyさん2008/06/25(水) 14:52:56ID:???
>>986
グローバル変数にものすごく敏感な人が100人いるとして
セッション変数にはまったく無頓着な人は何人くらい?
0991nobodyさん2008/06/25(水) 15:09:12ID:???
32.7人くらい
0992nobodyさん2008/06/25(水) 15:26:59ID:???
三割弱ワロス
0993nobodyさん2008/06/26(木) 14:30:34ID:j2dBQxrb
弱?
0994nobodyさん2008/06/26(木) 14:32:16ID:???
ん?
0995nobodyさん2008/06/26(木) 15:16:39ID:???
1/3弱
3割強
0996nobodyさん2008/06/26(木) 15:33:03ID:???
PHPってグローバル変数使いにくいね。
わざわざ関数の最初でglobal 変数名なんて
やらないといけないのだ物。
ローカル変数は何も宣言しなくても使えるのに。

Perlなんか逆に、何もつけなければグローバル変数。
ローカル変数を使うときには、my 変数名ってやるんだぜ?
0997nobodyさん2008/06/26(木) 16:54:12ID:???
中途半端な釣りだね。。。
0998nobodyさん2008/06/26(木) 17:12:40ID:???
生め
0999nobodyさん2008/06/26(木) 17:14:57ID:???
次スレ

【PHP】下らねぇ質問はここに書き込みやがれ 70
http://pc11.2ch.net/test/read.cgi/php/1214356448/
1000nobodyさん2008/06/26(木) 17:16:00ID:???
おあとがよろしいようで
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。