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

【PHP】下らねぇ質問はID出して書き込みやがれ 133

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2014/04/19(土) 08:04:54.26ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 132
http://nozomi.2ch.net/test/read.cgi/php/1390166591/

◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.5
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0367nobodyさん2014/05/21(水) 08:44:33.57ID:???
>>365
find -exec で php -l すればいいんじゃないの。
もしくは、バージョン管理サーバーのコミットバッチに何か仕込むとか。
0368nobodyさん2014/05/21(水) 09:12:24.07ID:???
>>366
>>367

レスありがとうございます
まったく理解できてませんが、レスをヒントに調べて頑張ります
0369nobodyさん2014/05/21(水) 09:29:18.80ID:vX6qhClk
稲城サッカースポーツ少年団(稲城SSS)
http://fishki.net/upload/post_temp/201405/16/001.jpg
稲城サッカースポーツ少年団(稲城SSS)
http://fishki.net/upload/post_temp/201405/16/1_111.jpg
稲城サッカースポーツ少年団(稲城SSS)
http://fishki.net/upload/post_temp/201405/16/500.jpg
早稲田住友商事
http://fishki.net/upload/post_temp/201405/16/001.jpg
早稲田住友商事
http://fishki.net/upload/post_temp/201405/16/1_111.jpg
早稲田住友商事
http://fishki.net/upload/post_temp/201405/16/500.jpg
0370nobodyさん2014/05/21(水) 09:49:26.04ID:???
>>362
過去は過去だよ

今SJISを使ってる奴がアホであり
SJISに変換できない文字が何かを知らない奴がアホであるのだよ

メールも統一されないかね
0371nobodyさん2014/05/21(水) 10:10:09.81ID:???
>>370
入出力やらファイル名やら
全部SJISなのに捨てきれるの?
0372nobodyさん2014/05/21(水) 10:41:35.42ID:???
zend.multibyteとzend.script_encodingを設定すればSJISでも使えるんじゃないの?
0373nobodyさん2014/05/21(水) 10:45:01.79ID:???
>>371
Windowsも内部はUnicodeだよ
0374nobodyさん2014/05/21(水) 10:58:07.86ID:???
保存ファイル名utfで渡したら化けね?
0375nobodyさん2014/05/21(水) 11:01:42.13ID:???
>>374
化けるよ
WindowsのカーネルがUnicodeをShift_JIS(Windows-31J)に変換してアプリに渡してるからな
FAT32はShift_JISな
0376nobodyさん2014/05/21(水) 12:07:11.92ID:???
>>373
外部はSJISでしょ
0377nobodyさん2014/05/21(水) 12:08:42.51ID:???
>>375
NTFSもだろ?
0378nobodyさん2014/05/21(水) 12:33:24.96ID:???
>>377
NTFSはUnicode
0379nobodyさん2014/05/21(水) 13:05:36.44ID:???
>>375
ファイルシステムによってコードを変えるのか?
面倒だな
0380nobodyさん2014/05/21(水) 13:50:47.36ID:???
utfの後ろに数字入れてないからどれのこと言ってるのかわからんし適当にいっときゃいいよな
0381nobodyさん2014/05/21(水) 14:31:00.30ID:???
Windowsは全部UTF16LEじゃなかったか
0382nobodyさん2014/05/21(水) 14:50:26.72ID:kJPXkf8b
Windowsは内部はUTF16LEだが。
SJISでもアクセスできるようになっている。
0383nobodyさん2014/05/21(水) 14:53:34.37ID:???
おまえら14年も前の話をしてるのか
時代についていけなさ過ぎだろ
0384nobodyさん2014/05/21(水) 15:00:31.21ID:???
文字コードなんてどうでもいい
対策しきれないやつが吠えてるだけだろ
あとは専スレでやってくれ
0385nobodyさん2014/05/21(水) 17:09:59.05ID:???
>>384
ついてこれないからってそれはないわ
0386nobodyさん2014/05/21(水) 17:21:37.31ID:???
JISのマップがマニュアルに載ってなくてハマった事あるなあ…
0387nobodyさん2014/05/21(水) 19:04:40.06ID:???
ついてこれない()
場違いな阿呆がよく使う言葉だな
0388nobodyさん2014/05/21(水) 19:52:47.06ID:???
上級者様に「専スレでやってくれ」って言われずにすむ話題ってなんなんだろうなぁ
0389nobodyさん2014/05/21(水) 20:23:30.07ID:???
興味もない関係ない話題続けられても迷惑だろ
PHPを絡めてるならまだしも独立しちゃってるしん
ていうかここで文字コードの話してるやつのレベルなんてたかが知れてるし
勉強したいなら専スレ行ったほうがためになるんじゃないのかね?
http://toro.2ch.net/test/read.cgi/tech/1354248962/
0390nobodyさん2014/05/21(水) 20:29:15.33ID:???
>>383
2014年のやり方教えてくれー
0391nobodyさん2014/05/21(水) 20:33:25.53ID:???
>>390
windowsのphpで
FATにもNTFSにも対応できる漢字ファイル名の扱い方ね
0392nobodyさん2014/05/21(水) 21:39:19.94ID:???
Windowsに限らず、全角文字のファイル名で保存しようと思うのがそもそも微妙だしな〜。


あ、自分>>383じゃないんで。
0393nobodyさん2014/05/21(水) 22:37:33.56ID:???
全宇宙統一ウニコードを作れはよ
標準化団体とかいううさんくせえ利権団体のカスどもは仕事しろクズが
0394nobodyさん2014/05/21(水) 23:59:09.85ID:???
>>393は経緯を知らないからそんなこというんだわ。
符号化方式とごっちゃになってる可能性まである。
0395nobodyさん2014/05/22(木) 00:06:34.87ID:???
>>393
お前が世界統一団体を作ったとしても
大韓民族の大移動を防ぐことはできないだろう
0396nobodyさん2014/05/22(木) 00:13:04.31ID:???
ロンゴロンゴはいつごろ割り当てがもらえるのかな
0397nobodyさん2014/05/22(木) 07:34:27.11ID:???
windowsのPHPはファイル名を
SJISにしなくてもUTF16で扱えるよ
入出力は入力、出力側依存でなんでも扱える。
cmdとかはunicode対応してるしな

外部はSJISというのも、
ファイル名がSJISというのも、
入出力がSJISというのもあってない
0398nobodyさん2014/05/22(木) 07:57:26.09ID:TVKVAMsH
PHP本体がUTF16LE不対応なので、ファイルアクセスにUTF16LEは使えず
PHPでファイルリスト取得しようとしても、UTF16LEを含むファイル、ディレクトリは無視される。
これがwindowsで使う際の昔からの弱点と思ってる。
0399nobodyさん2014/05/22(木) 08:14:14.31ID:???
未対応って
0400nobodyさん2014/05/22(木) 08:20:25.61ID:???
弱点にするほど致命的か?
0401nobodyさん2014/05/22(木) 08:22:12.44ID:???
>>398
対応してないとは思えないけど?
いつのバージョンですか?
0402nobodyさん2014/05/22(木) 08:29:13.61ID:???
思うだけかよw
0403nobodyさん2014/05/22(木) 08:31:24.95ID:???
釣りかね?不対応って書いてるしな

http://www.php.net/manual/ja/mbstring.encodings.php
0404nobodyさん2014/05/22(木) 08:57:43.32ID:TVKVAMsH
6未満のすべての実装でUTF-16は不対応だろ。




PHP6開発 UTF-16化を断念、5.3へロールバック | マイナビニュース
PHPの次期メジャーバージョンはPHP6になるとみられてきたが、問題を打破するために開発ブランチを5.3ベースへ巻き戻すという対処が実施された。
Rasmus Lerdorf氏がphp.internals: PHP 6においてPHP6 Unicodeの実装が失敗したことを伝えている。
PHP6ではエンジン内部の処理がUTF-16に統一される計画になっていたものの、関係者からはこの方針は間違っているのではないかという指摘もあった。
これまでの取り組み
PHP6で取り組む基本的な内容として、PHPエンジン内部におけるエンコーディングをすべてUTF-16で実施するという方針が決定した。
しかし実際に取り組んでみるとCPU負荷が高い上にメモリも食うことが判明。
しかもどのエンコーディングが使われているか判断する実装が難しく、さらに後方互換性も失われるという問題がでてきた。
mbstringといった程度の対応でいいユーザにとって不利益が多すぎるうえ、開発者が開発版を使いたがらないという状況に陥った。
http://news.mynavi.jp/news/2010/03/17/053/


Windows API - Wikipedia
Unicode対応
Windows NT系では当初からUnicodeが用いられている一方、Unicodeに対応していないWin16と互換性を取るために、
Win32 APIから同じAPIに対してマルチバイト文字版とUnicode版の2つを用意し、C/C++のマクロを駆使してコンパイル時にどちらを使うか選択できる仕組みが採用されている。
その場合、マルチバイト文字列を与えるべき関数・構造体は末尾に「A」を付け、ワイド文字列を与えるべき関数・構造体は末尾に「W」を付けて区別している。
0405nobodyさん2014/05/22(木) 09:15:16.93ID:???
>>404
内部エンコーディングを統一する話と
特定エンコーディングへの対応の話を勘違いするなよ
0406nobodyさん2014/05/22(木) 09:31:09.45ID:TVKVAMsH
同じではないが関係はある。
PHP開発は、主にPOSIX準拠(UNIX、LINUX)で行われていて
開発者が意図して、Windows(UTF-16)の対応を進めない限りは対応しないはずだ。
POSIX準拠のC言語関数をそのまま使えば、Windows(S-JIS)にしか対応してない。
0407nobodyさん2014/05/22(木) 14:54:59.02ID:???
下らねえことでageるな質問だと思うだろ
0408nobodyさん2014/05/22(木) 17:50:52.86ID:???
PHPの公式Windows版はANSIのAPIを使うようにコンパイルされてるよ
だからUnicode対応ではないよ
自分でコンパイルしたらわからんけど
0409nobodyさん2014/05/22(木) 19:07:36.37ID:???
windowsでPHPのWebシステム作るなら
どこが出してるPHPとApache使うのがお勧め?
0410nobodyさん2014/05/22(木) 19:42:02.51ID:???
>>409
>>1

言いたいことはわかるけど、質問の意味に
勘違いがあってどうしたものかってのもあるが。
0411質問者己2014/05/23(金) 12:40:05.00ID:LR3HrDkX
文字列 $haystack に、文字列 $needle があるかの判定。

if (strpos($haystack, $needle) !== false) {
//ある場合の処理
}

ある場合が false とか !== とかスマートと思えない。
一番普通の書き方は?
または一番読みやすくコスト安い良い書き方は?
0412nobodyさん2014/05/23(金) 12:49:09.81ID:???
他の言語で言うところの != -1 ならスマートだと思うのかな?
0413nobodyさん2014/05/23(金) 13:18:59.02ID:???
>>411
http://www.php.net/manual/ja/language.types.boolean.php
http://www.php.net/manual/ja/function.strpos.php

PHPでは、FALSEは数値判定しようとすると0になる。
また、strposで最初の一文字がヒットすると数値の0になる。
なので、型判定つきでFALSEかどうかを評価するのが一番
記述は簡単で済む。

その逆をやろうとすると、返り値が数値型で、かつ0以上で
あることをどこかで判定しなきゃいけないので記述が長くなる。

でもまぁ、判定の根拠を明示するために、長い記述にするのは
悪くないことだと思うよ。やってみては。
0414nobodyさん2014/05/23(金) 13:42:28.26ID:???
>>411
それがスマートに見えないなら関数自前すれば?

主観のスマートさを例を提示しないで出されても困るだけだよ
0415nobodyさん2014/05/23(金) 13:44:04.37ID:8/EeaipC
>>411
Cを経験してない人には分かりにくいという話に過ぎないので、
気になるなら好きな名前でラッパー書くなり関数足せばいいと思う
スマートかどうかはさておいて、十分読みやすいよ
0416nobodyさん2014/05/23(金) 13:48:21.38ID:???
if 文の中はbool値判定なのに、それをさらにbool値と比較するのはアホくさいだろw
0417nobodyさん2014/05/23(金) 14:02:13.55ID:???
>>416
アホ臭いと思う奴はアホ臭い
どうせ、手順数は変わらん
0418nobodyさん2014/05/23(金) 14:05:06.26ID:???
だったら、位置を返す関数なんて使わずに、あるなしをboolで返す関数かぶせれば?
0419nobodyさん2014/05/23(金) 15:02:08.27ID:???
http://www.php.net/manual/ja/function.substr-count.php

意味づけだけで考えるとこっちが近いかもね
0420nobodyさん2014/05/23(金) 15:06:25.77ID:DKlNZ22O
・変数がセットされている
・変数の中身がNULLである

という条件だとします。
if (isset($data)) {
// 変数が存在する場合の処理
}

これだとissetはFALSEになるので、処理が実行されません。
変数がNULLでも変数がセットされているので処理を実行させたい場合、
どういう書き方が適切でしょうか?以下のような書き方で良いのでしょうか?
isset($data) || !is_null($data)
0421nobodyさん2014/05/23(金) 15:28:34.35ID:???
>>417
じゃあ、 (((何とか === false) === true) !== false)
ここまでやってくれよ、手順変わらんのだろ。
0422nobodyさん2014/05/23(金) 15:30:57.82ID:???
>>421
アホ?

手順数増えてることあげるなよ
0423質問者己2014/05/23(金) 15:45:22.93ID:LR3HrDkX
>>419

おぉ、ありがとう。

if (substr_count($haystack, $needle)) {
  //ある場合の処理
}

これの方が好みだ。
(countだから、文字列最後までみる無駄は承知)

p.s.
if (!is_bool(strpos($haystack, $needle))) {
書けることに気付いた。

他の返信者もThankyou!

PHP初心者なので、普通の書き方?があるのかな、と思っていた。
自前関数つくれば?、というのはごもっとも。
(boolean isExist($haystack, $needle); とか)
でも、大抵のこと、やりたいことだけを書けばよいPHP。
その生産効率の高さに感激していたのに、ここはこれ?ってのに違和感あった。
0424nobodyさん2014/05/23(金) 15:45:36.30ID:???
>>420
http://www.php.net/manual/ja/language.types.null.php
> 変数は、以下の場合に NULL とみなされます。
> ・定数 NULL が代入されている場合。
> ・まだ値が何も代入されていない場合。
> ・unset() されている場合。

変数がセットされてないはNULLがセットされてると同じなので
変数に参照する方法だと無理です

グローバル変数であれば、$GLOBALSにarray_key_existsを利用する方法があります
ローカル変数だと、compactを利用する方法があります。
どちらにしろあまり推奨できる方法ではありません
0425nobodyさん2014/05/23(金) 15:52:56.11ID:???
>>424
変数名を文字列にしなくちゃいけないしね。
0426質問者己2014/05/23(金) 17:12:17.62ID:LR3HrDkX
if (is_int(strpos($haystack, $needle))) {
  //ある場合の処理
}

最終的にこうした。
他あればご教授よろしく。
0427nobodyさん2014/05/23(金) 17:19:10.52ID:/68HgEjX
これの理由を教えてください
http://qiita.com/hummer/items/a6d220e69f47175bd200
0428nobodyさん2014/05/23(金) 17:20:09.46ID:8/EeaipC
>>426
「一番普通の書き方」は最初のやつなので、それを外れるなら何でもいいと思うよ。
0429nobodyさん2014/05/23(金) 17:22:03.24ID:8/EeaipC
>>427
動的に変更したい部分だけコードを書けばいいって考えに基づくなら。
0430nobodyさん2014/05/23(金) 17:30:59.14ID:???
>>427
<?phpの後 改行スペースなしでファイルが終わってると駄目なんだなー
04314202014/05/23(金) 17:38:40.05ID:DKlNZ22O
>>424-425
「変数が呼び出されている」「しかし変数はNULLである」
という条件をTRUEとするため、何か良い書き方はないでしょうか?
issetだと駄目なので、どうやって書けばいいか悩んでいます・・・
0432nobodyさん2014/05/23(金) 17:50:12.41ID:???
PHP null 未定義 区別 で検索すればやり方はあるけど、
そもそも なんで未定義をチェックしないといけないの?
nullが入ってくるかもしれない変数をnullかチェックしたければ、あらかじめなんかnullじゃない値
入れとけばいいじゃん。
04334202014/05/23(金) 18:12:13.36ID:???
分かりました。もうちょっと勉強します。ありがとうございました。
0434nobodyさん2014/05/23(金) 18:19:22.90ID:???
変数が動的に作られる状況がよくない
そういうのは連想配列でやるべき
0435nobodyさん2014/05/23(金) 20:05:29.06ID:???
動的に変数宣言できるのがピュアエッチピュアのウリなんだろ?
0436nobodyさん2014/05/23(金) 20:12:47.37ID:???
勘違いしすぎ
0437nobodyさん2014/05/23(金) 20:38:41.78ID:???
forの中で動的に生成した変数を躍動的に活用するのが真のピュアエッチボーイだからな
0438nobodyさん2014/05/24(土) 00:48:19.89ID:???
>>430
最後が改行で終わってないと、気持ち悪くてしょうがない。
俺だけ?
0439nobodyさん2014/05/24(土) 03:38:03.62ID:Bs4j7gAX
>>438
正しいよ。
しかし無理解から最後の改行を消してしまう人が居るのも事実。
0440nobodyさん2014/05/24(土) 04:52:42.90ID:???
1byteでもファイル容量は削るべきだろう
空改行なんかしてるやついたらモニタでしばき倒すわ
0441nobodyさん2014/05/24(土) 06:19:59.04ID:???
ファイルサイズが1byte以上であるなら、最後のコードは改行であるべき
これ守ってないと動かないツールがたまにある
0442nobodyさん2014/05/24(土) 06:30:42.43ID:???
それはゴミツールが悪い
0443nobodyさん2014/05/24(土) 07:01:38.32ID:???
たった1バイトのために汎用性度外視とか
0444nobodyさん2014/05/24(土) 07:07:35.49ID:???
そういえばPHP 5.4をビルドするときに
最後が改行で終わっていないというウォーニングが
延々と出るよねw
0445nobodyさん2014/05/24(土) 08:22:31.16ID:???
>>440
ばーかw
0446nobodyさん2014/05/24(土) 08:36:13.71ID:???
>>445
はい、君4K50型モニタでしばきまーす
0447nobodyさん2014/05/24(土) 09:27:13.22ID:bHZkuXrt
【OS名】Apache/2.4.3 (Win32)
【PHPのバージョン】5.4.7
【連携ソフトウェア】xamppでテスト中
【質問内容】
あるhtml要素を取得後、body要素内のテキストを配列に取得、そのテキストをforeachで処理したいと思っています。
(最終的にはふりがなを付けたいと思っています)
ですが各要素内のテキストがうまく取得できません。正規表現が間違ってると思うのですが、どのように直せばよいでしょうか?

コードは以下です。
<?php
$a ="disuse<html>disuse<head>disuse</head>disuse<body style='background-color:#550'>need1<ul><li>need2</li>need3
<li>need4</li></ul>need5</body>disuse</html>disuse";
$pattern = "#<body[\s\S]*?>[\s\S]*?>[\s\S]*?<[\s\S]*?</body>#u";
preg_match_all ($pattern, $a ,$b);
/* 配列の処理 */
foreach($b[0] as $c){
echo $c;
echo"<br>";
};
?>

echoの結果は以下になります。
<body style='background-color:#550'>need1<ul><li>need2</li>need3
<li>need4</li></ul>need5</body><br>
0448nobodyさん2014/05/24(土) 13:51:52.59ID:???
>>440
じゃあコメントも書けないな
コメントも一応メモリを使うから
0449nobodyさん2014/05/24(土) 15:03:54.40ID:???
>>440
変数名とかは全て$aとか$bとかにしてるのかすげーな。
0450nobodyさん2014/05/24(土) 22:56:26.95ID:Bs4j7gAX
>>440
なぜPHPが終了タグ直後の一つの改行のみは許す仕様になっているのか考えたことはないのか。

ついでに、インデントはタブじゃなくて4スペースでお願いします
0451nobodyさん2014/05/24(土) 23:03:44.97ID:???
4スペースの文化消えて無くなってくれねえかな
なんなんアレ
TABだとフォントによって崩れる(キッ
じゃねえよ
んな糞フォント使うなって話だよ
ついでにMSゴシック縛りはなんなんだよ
メイリョKEもしらんのかハゲと言いたい
いくら大企業で給料良くても、糞みてえな規約には従いたくないわ
0452nobodyさん2014/05/24(土) 23:55:47.63ID:???
> TABだとフォントによって崩れる(キッ
こんなこと誰も言ってないと思われます
TABはフォントに関係ないからね

問題は、TABは環境によって幅が変わるということ
8スペース1TABは普遍的文化ではないんだよ

なのでスペースインデントが基本であるべき

インデントが4か8かは好きにしてくれ
0453nobodyさん2014/05/24(土) 23:56:13.95ID:Bs4j7gAX
フォントによって崩れるなんて意見初めてだな。
別に俺はタブで統一するならするでいいけど、
気づかずに混ぜる人が現れるのが問題だと思うわ。
0454nobodyさん2014/05/25(日) 00:00:47.66ID:???
1BackSpaceで削除できるTABの方が良い
TABの長さなんぞIDEに任せればよい
旧時代の老害だけだよ、スペースインデントにこだわってるハゲなんて
0455nobodyさん2014/05/25(日) 00:02:43.73ID:???
>>454
TABの長さは君の環境とそれ以外の環境とでは違う可能性があるんだよ
自分の環境さえよければそれでよし、なんてのは老害以前の自己中発想だから
0456nobodyさん2014/05/25(日) 00:04:27.26ID:U0aH4FsO
IDEに任せればよい?
君の使っているIDEはインデントをワンアクションで増減することすらできないのか。
世界には貧しい環境があるものだな。
0457nobodyさん2014/05/25(日) 00:20:44.57ID:???
インデントがタブかスペースのどちらが良いかなんて宗教戦争みたいなもんだろ。
解決するもんじゃないからコーディング規約に従っとけ。
ちなみにgoogleは2スペースだ。
0458nobodyさん2014/05/25(日) 00:29:06.64ID:???
>>457
2スペースのほうが見やすいんだよな
ただ一般的には4やらタブやらが入り混じってて結局4スペースに落ち着く
0459nobodyさん2014/05/25(日) 00:32:28.27ID:???
自分は、phpとかのC系だと、2スペースは結構見づらく感じる(慣れの問題かもしれんが)。
0460nobodyさん2014/05/25(日) 10:52:44.62ID:lpo1VNoB
require_onceについて質問です。
ファイルを読み込んだ先で、再度、同一のファイルを重複して読み込む場合、
何か処理をする必要がありますか?

マニュアルを読むと、読込は最初の一度だけらしいので、大丈夫そうなのですが、
セッションの有無などで、読込許可・読込不可を分けられたら、明示的にif文などで
場合わけした方がよいのでしょうか?

<?php
//読込元ファイルabc.php
require_once(.'/def.php');
require_once(.'/xyz.php');
//以下処理
?>

<?php
//読込先ファイルxyz.php
require_once(.'/def.php'); //def.phpを重複読込
//以下処理
?>

最初に読み込んだものだけが有効とはいえ、重複読込に関して、
何か処理が必要なのか心配です。
よろしくお願いします。

http://jp1.php.net/manual/ja/function.require-once.php
0461nobodyさん2014/05/25(日) 11:33:10.96ID:???
require(及びinclude)は、その場所への「差し込み」と捉える。
つまり、読み込んだファイルを自分の一部として扱うということ。

だから、変数名や関数名の重複には気を付けないといけない、とか
session_start()のような関数をあちこちで書く意味がない、とか
いろいろ理解できると思う。
04624602014/05/25(日) 12:02:33.92ID:lpo1VNoB
>>461
レスありがとうございます。
>だから、変数名や関数名の重複には気を付けないといけない、とか

require_onceを使った読込でもやはり重複に気をつけないといけないのですね。
そうなると、場合により、セッションの有無などで読込をするかしないか
決めた方が安全といえそうですね。

<?php
//読込先ファイルxyz.php
//ログインフラグが有る場合、既にdef.phpを読込済み
if (empty($_SESSION['login_flag'])) {
require_once(.'/def.php'); //def.phpを読込
}
//以下処理
?>

またはファイルを読込済みか判定する関数などあるのでしょうか?
0463nobodyさん2014/05/25(日) 12:10:47.25ID:???
>>460
requireとrequire_onceの二個がある
require_onceは読み込み前に
前に読み込んだことがあるかを確認して
ない場合のみの読み込みが保証されている
から大丈夫
04644602014/05/25(日) 12:16:49.41ID:lpo1VNoB
>>463
ありがとうございます。
仰るとおり、マニュアルにこうありました。
_once系を使えば条件分岐は不要のようです。

http://www.php.net/manual/ja/function.include.php
例5
「ファイルが読み込み済みであるかどうかを調べ、
読み込まれるファイルの内容を条件分岐で返すかわりに
include_once を使用することを推奨します。」

おかげで疑問が解消しました。ありがとうございました。
0465nobodyさん2014/05/25(日) 12:48:33.43ID:???
俺もタブ派だけど、PSRでスペースと規定されてるからなぁ。
個人で作ってるからタブ使い続けてるけどさ。
0466nobodyさん2014/05/25(日) 12:51:01.39ID:???
規約のために利便性を損ねるキチガイ軍団
■ このスレッドは過去ログ倉庫に格納されています