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

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

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

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

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

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

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
04464342013/02/27(水) 14:25:13.61ID:6JQheFYl
>>445
やっぱりそうなんですね
アクセスごとに生ログを保存しつつ、
cronなどで集計するイメージでしょうか

参考になりました。
ありがとうございました。
0447nobodyさん2013/02/27(水) 18:02:57.95ID:PEaEofv4
オブジェクト指向を勉強し始めたのですが、
$hoge = new self()
self()ってどういうことなんでしょうか
そのクラス自身をインスタンス化するってことなんでしょうか?
0448nobodyさん2013/02/27(水) 18:15:09.30ID:???
コンストラクタを実行するってことです
0449nobodyさん2013/02/27(水) 18:19:02.33ID:???
>>447
()なんていらん
0450nobodyさん2013/02/27(水) 18:22:01.15ID:???
PHPでオブジェクト指向か
0451nobodyさん2013/02/27(水) 18:26:07.39ID:???
>>450
若いうちに転び方を学ぶのはとても良いことだと思うぜ。
0452nobodyさん2013/02/27(水) 18:49:12.26ID:???
selfっていうクラスがあるんだろ
普通そんな名前つけないけど
0453nobodyさん2013/02/27(水) 18:50:46.42ID:???
クラスの最初は大文字にしろって言っただろ!!!!!!!
04544472013/02/27(水) 18:52:14.18ID:PEaEofv4
>>448
__constructでの記述ではなくて、わざわざnew self();にする理由はなんでしょうか

理解できてないソース
private static $_instance = null;
public static function getInstance() {
if (self::$_instance === null) {
self::$_instance = new self();
}
return self::$_instance;
}

selfってクラスはないです
PHPリファレンスにも同じような記述はあるのですが、解説もないのでわからないです
0455nobodyさん2013/02/27(水) 19:09:42.92ID:???
上の回答は全部変だから忘れて。

自分自身のインスタンスのインスタンスを作ってるだけ。
0456nobodyさん2013/02/27(水) 19:10:20.67ID:???
インスタンスのインスタンスってなんだよ・・・
一個消してください・・・
0457nobodyさん2013/02/27(水) 19:11:38.14ID:???
シングルトンかよ
0458nobodyさん2013/02/27(水) 19:13:33.51ID:???
それclass名がHogeだとしたら
普通は new Hoge()って書くんだよ
self()なんてPHPルール覚えたらだめ
04594472013/02/27(水) 19:37:18.12ID:PEaEofv4
呼び出し側でインスタンス化するのではなくて、
呼び出されたときに初回に自動的にそのクラス自体をインスタンス化するってことであってますか?
インスタンス化しなくても呼び出せる静的メソッドにしておいて、
静的メソッドを呼び出した際に、自動的にインスタンス化できるから
__constructを使わずに上記方法を使ってるってところでしょうか?
0460nobodyさん2013/02/27(水) 19:47:05.26ID:???
シングルトンがなんたるかを調べたほうがいいんじゃねえの
0461nobodyさん2013/02/27(水) 20:28:55.66ID:???
__constructはnewによってインスタンスが生成される過程で呼び出されるもの。
派生クラスのコンストラクタから基底クラスのコンストラクタを呼び出したいときなどには明示するよ。

あと、用途にもよるけど new static にするといい場面もあるよ。違いは調べてみてね。

>>458
なにそのクソ規約。
コンストラクタ名も__constructじゃなくてクラス名で書いてそうだね。
0462nobodyさん2013/02/27(水) 20:33:54.10ID:???
PSR-1だろ
0463nobodyさん2013/02/27(水) 20:37:37.90ID:???
__construct使わないとPHP4流で古臭いという勘違いしてるのがPHPerには多いのが問題だな
0464nobodyさん2013/02/27(水) 20:46:11.11ID:???
基底クラスのコンストラクタ呼ぶときに Base::Base() って書くの?
0465nobodyさん2013/02/27(水) 21:14:05.24ID:???
不安になったのかな
0466nobodyさん2013/02/27(水) 21:50:51.34ID:???
なんで基底クラスのコンストラクタをstaticコールしてんの?
0467nobodyさん2013/02/27(水) 22:10:36.17ID:???
え?
0468nobodyさん2013/02/27(水) 22:15:43.19ID:???
self::と 勘違いかな?
0469nobodyさん2013/02/27(水) 22:27:04.15ID:???
__constructってインスタンス化した時に1度だけ呼ばれるもので
それを明示的にコールするっておかしくない?
initializeとか別メソッド作ってそっちを呼ぶならまだしも
0470nobodyさん2013/02/27(水) 22:30:43.83ID:???
なんか勘違いしてるのでは
0471nobodyさん2013/02/27(水) 22:32:21.24ID:???
基底クラスのコンストラクタは自動では呼ばれないよ?
0472nobodyさん2013/02/27(水) 22:35:50.71ID:???
言いたいことをコードで説明汁
http://ideone.com
0473nobodyさん2013/02/27(水) 22:37:22.49ID:???
そうね、>>458や>>463はコードを書いて見せるべき。
0474nobodyさん2013/02/27(水) 22:39:17.90ID:???
いや俺は
>派生クラスのコンストラクタから基底クラスのコンストラクタを呼び出したいときなどには明示するよ。
これが分からん
0475nobodyさん2013/02/27(水) 22:43:25.08ID:???
>>459が__constructを使わずに、と書いてるから
通常暗黙に呼び出されるけど、基底クラスのコンストラクタを呼ぶときは__constructって関数名を使うよって話
0476nobodyさん2013/02/27(水) 22:58:34.67ID:???
いや質問者はそんな事聞いてないでしょう・・・
道理で話が読めないわけだ
0477nobodyさん2013/02/27(水) 23:01:00.00ID:???
> __constructでの記述ではなくて、わざわざnew self();にする理由はなんでしょうか
これは new self()と__constructの区別がはっきりしてない初心者だからこそじゃないの

んで、関連して>>458や>>463みたいなわけ分からん人が出てきた。
多重継承のある言語とは状況が違うんだけどそこを混同してんのかなぁとは思うけど
0478nobodyさん2013/02/27(水) 23:08:25.38ID:???
ソレは、 >>448 みたいな間違ったことかいたやつがいるからだろ。
new演算子と、 コンストラクタはまったく別の概念。
コンストラクタなんて、なくてもいいんだぞ。
0479nobodyさん2013/02/27(水) 23:10:02.86ID:???
>>477
たぶんあなたが一番理解してない

あのコードの前には
private function __construct()
があるはずで
そこにself::$_instance = new self();を記述しないのはなぜかと聞いてるんだよ
0480nobodyさん2013/02/27(水) 23:16:51.48ID:???
>self()ってどういうことなんでしょうか
>selfってクラスはないです
>PHPリファレンスにも同じような記述はあるのですが、解説もないのでわからないです
↓
>>458(ただし質問者に意味がわかるかは不明)

>なにそのクソ規約。
>コンストラクタ名も__constructじゃなくてクラス名で書いてそうだね。
↓
>>463
0481nobodyさん2013/02/27(水) 23:18:22.20ID:???
たしかに、シングルトンというキーワードが出ていたことで、本質じゃないレスをしていたとは思う。
ごめんなさい。
>>459
うん、それに加えて、クラス自身にインスタンスを管理させることで、
インスタンスをひとつに制限する目的があるコードです。

>>478
それは暴論。コンストラクタを記述するかしないかで挙動が変わる場面はある。

>>479
そうなのかもね。
0482nobodyさん2013/02/27(水) 23:27:31.43ID:???
>>481
コンストラクタのないクラス想像すればいいんだよ。

new -> コンストラクタ みたいな話してるから、
インスタンスの生成に必須ではないコンストラクタの話で混乱してんだよ。
0483nobodyさん2013/02/27(水) 23:33:32.60ID:???
結局質問者は何がわからなかったんだろうな
0484nobodyさん2013/02/27(水) 23:35:22.96ID:???
>>482
必須ではないというが、空のpublicコンストラクタの有無で挙動が変わる場面があることを
伝える必要はないのか
0485nobodyさん2013/02/27(水) 23:36:19.11ID:???
>>483
new self()が何をするものなのかが分からなかったんじゃない?
シングルトンを知っていれば予想はついたと思うけど、それも知らなかったのだろう。
0486nobodyさん2013/02/27(水) 23:38:57.60ID:???
中途半端な知識と中途半端な用語を使うとカオスになるのはよくあること。
0487nobodyさん2013/02/27(水) 23:41:21.10ID:???
>>484
質問者無視していろいろやってもあんまり意味ないからあれだけどさ、
無くてもいいと分かれば分かるもんがあるかもと思っただけだよ。
0488nobodyさん2013/02/27(水) 23:42:01.29ID:???
>>458が非効率なコードを生み続けていそうなことと
>>463の納得のいく説明がないのが
ちょっと残念。
0489nobodyさん2013/02/27(水) 23:52:19.04ID:???
たかだかコーディング規約でムキになんなよ。
人それぞれだろ?

PHPでいちいちthisつけたりselfとかわけわからんのがあったり、
マジックメソッドだの、オーバーロードの意味が違うだの、
PHPルールが存在しても、それを把握するのは簡単だから、
PHP流の書き方を覚えるもよし、他言語に応用可能な書き方を覚えるもよし。
04904072013/02/28(木) 09:39:59.00ID:ZLVdVzup
>>422の方法で解決しました。
0491nobodyさん2013/02/28(木) 09:50:31.67ID:???
えがったな
04924072013/02/28(木) 13:37:48.81ID:ZLVdVzup
またまた質問です。

curlで複数サイトのヘッダー情報を取得しているのですが
Aサーバー(レンタル)→エラー(Empty reply from server:リクエストが空です)
Bサーバー(ローカル)→取得できる

AでもBでもagentを送っています。差異はないはずです。
Empty reply from serverが発生する原因を教えていただけないでしょうか?
04934072013/02/28(木) 13:39:08.82ID:ZLVdVzup
Aサーバー(レンタル)では取れるものと取れないものがありますが
Bサーバー(ローカル)では大抵取れてきます。
0494nobodyさん2013/02/28(木) 13:46:22.44ID:???
モバゲーのサーバにアクセス拒否されたなど
04954072013/02/28(木) 15:31:21.58ID:ZLVdVzup
>>494

アクセス拒否でもAサーバーとBサーバーで違いが出るものですか?
特定のサーバーに対してヘッダー情報すら返さない事ってありえるのでしょうか?
0496nobodyさん2013/02/28(木) 15:39:33.47ID:???
具体的にどこからどこにどういう手段でつないでるんだよ。
シェル使えないのかな、そこ
0497nobodyさん2013/02/28(木) 15:49:24.01ID:???
>>495
ごく普通にありえるよ
でもリクエストが空だというエラーなのならモジュールに差異があるんだろうよ
04984072013/02/28(木) 16:03:20.32ID:???
>>496
phpのcurlで繋いでいます。

>>497
リクエストが空のものは対象外として仕様扱いにしてもらう
事にしました。

ですが、そういうサイトからリクエストを返してもらう方法が
無いか調べてみます。
ありがとうございました。
0499nobodyさん2013/02/28(木) 16:14:45.08ID:???
>>498
phpのcurlなんてわかってんの
httpでポート80なの?
05004072013/02/28(木) 16:30:09.79ID:???
>>499

phpのcurlは今回初めて使っています。
CURLOPT_PORTは設定していないのでデフォルトで80になっています。
0501nobodyさん2013/02/28(木) 16:52:29.73ID:???
javaなら余裕
05024072013/02/28(木) 17:25:30.23ID:???
>>501

javaならどう余裕なのでしょうか?
やった事ないですが、javaとc++とc#、.net、objective-cと大抵の言語は使えます。
0503nobodyさん2013/02/28(木) 17:26:46.19ID:???
サーバ側のログも見たいところだけど、そうはいかなさそうだもんね。
DoSと勘違いされるような行為はしてないよね
0504nobodyさん2013/02/28(木) 17:33:44.82ID:???
じゃあC#のスレッドプールが最強
0505nobodyさん2013/02/28(木) 17:36:16.62ID:???
10000サイトは無理。
サイトへ同時に接続できる数に制限がある。
それにファイルオープンとも関係しているはずでC言語を直に使っても
ファイルやサイトへのコネクションの総数は127以下までとか決まっている。
05064072013/02/28(木) 17:36:39.27ID:???
>>503
ログに目新しいエラーはなかったです。
ここに貼り付けるのは確認がいるのでやめときます。すいません。

timeout設定していないので内部で何度もアクセスを繰り返している
可能性はありますね。
そういうサイトは対象外で扱うことにしました。
ありがとうございました。
0507nobodyさん2013/02/28(木) 17:39:52.93ID:???
そういえばプロバイダはどこよ?
プロバイダがP2Pと勘違いして規制することがあるらしい。
しかも規制されているのかどうかもよくわからないようにするために
コネクションを接続するわけでも切断するわけでもないらしい。
0508nobodyさん2013/02/28(木) 17:41:18.71ID:???
共用鯖じゃないよね?
0509nobodyさん2013/02/28(木) 17:45:57.92ID:???
>>506
通信相手のサーバのログの話なんだけど、それに特にめぼしいものはなかったってことかな。
05104072013/02/28(木) 17:51:37.23ID:???
>>507

某最大手のNT○です。プランまでは言えません。
0511nobodyさん2013/02/28(木) 17:52:18.40ID:???
通信相手のログなんて見えるわけなかろう。よそ様のサイトなのに。
0512nobodyさん2013/02/28(木) 17:53:24.85ID:???
>>510
大手は規制してるな。間違いない。
05134072013/02/28(木) 17:55:27.74ID:???
>>508
共用ではないです。「某卒業式と言えばあの花」サーバーです。

>>509
通信相手はさすがに見えないです。外部のサイトなので
0514nobodyさん2013/02/28(木) 18:14:12.64ID:???
やっぱサーバのログはみれないか。
リクエストが空というのは、レスポンスが空の間違いだろうと思ってるんだけど、
なぜ空のレスポンスを返却するに至ったのかはサーバ側を見ないとどうにもならんとおもうんよ。

エラーになったサービス提供者に連絡してみたら?
こういうリクエスト送信してるんだけどーって。
0515nobodyさん2013/02/28(木) 18:20:35.35ID:???
どっかの図書館みたいに威力業務妨害だーって起訴されたりしてね
知らない相手にリクエストぽんぽん投げる(のかどうかもわかっていない)とか怖くてできないわ
0516nobodyさん2013/02/28(木) 18:34:06.76ID:???
メール送信などをして貰わずに個人を特定してそれぞれに違う動作をさせる事は可能でしょうか
0517nobodyさん2013/02/28(木) 18:35:46.16ID:???
IDが出ていません
0518nobodyさん2013/02/28(木) 18:36:29.59ID:???
「個人を特定」の部分を詳細に書いてくれ
0519nobodyさん2013/02/28(木) 18:39:40.39ID:???
えっと、ここの板の書き込みが初めてでIDの出し方がわからなくてすみません、教えて頂ければ出します。

えっと、細かく言うと文化祭でQRコードをそこらじゅうに貼って、ピースを全部集めたら景品みたいなのを作ろうと思ってます。そこで個人を識別して表示を変えようと思っているのですが
0520nobodyさん2013/02/28(木) 18:41:00.68ID:ypIDqyWF
すみません、IDの出し方は上に書いてありましたね。

これで大丈夫でしょうか
0521nobodyさん2013/02/28(木) 18:51:18.64ID:???
クッキーでいいんじゃねーの。
0522nobodyさん2013/02/28(木) 18:58:49.74ID:???
文化祭レベルなら1週間くらいのクッキー発行してやればいいじゃん
0523nobodyさん2013/02/28(木) 20:38:09.60ID:???
なるほど、まだプログラムを初めたばかりでクッキーというものはわかりませんが調べてみます。ありがとうございました。
0524nobodyさん2013/02/28(木) 20:58:06.96ID:???
スマホかどうかにもよるとおもう
0525nobodyさん2013/02/28(木) 21:08:01.80ID:???
ガラケーは一部クッキー非対応
0526nobodyさん2013/02/28(木) 21:11:40.43ID:???
なんの文化祭かしらんけど、そんなガラケーは若い奴らは使ってないだろ。最近のだとらくらくホンとかだろ?
だめなやつは、フルブラウザ使うか新しいの買えって表示しとけ。
0527nobodyさん2013/02/28(木) 21:22:34.25ID:???
逆。ガラケーのほうが端末認識が楽って話
0528nobodyさん2013/02/28(木) 21:34:39.91ID:b5zC+mly
if (!file_exists($log)) {
 throw new FileNotFoundException("ログファイルが存在しません");
} else if (!is_readable($log) || !is_writable($log)) {
 throw new FileNotFoundException("ログファイルのパーミッションを変更して下さい");
}

こんなコードをファイルを読み書きするもの全てに対して行うのは冗長気味ですか?
0529nobodyさん2013/02/28(木) 22:24:34.58ID:???
存在して、権限もあることを前提に作るのも悪いわけじゃない。
対象の信頼性次第
0530nobodyさん2013/03/01(金) 12:57:32.30ID:???
チェックは大事(`・ω・´)
0531nobodyさん2013/03/01(金) 19:37:05.38ID:???
try-catchもしないといけないしコード量増えるよな
PHPが最初から例外投げてくれれば苦労しないのに
0532nobodyさん2013/03/01(金) 19:57:52.14ID:???
エラーをハンドリングして例外を投げるようにしたら?
set_error_handler(function ($errno, $errstr, $errfile, $errline ) {
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
});
0533nobodyさん2013/03/02(土) 00:16:16.35ID:YI/QC52Q
【OS名】CentOS
【PHPのバージョン】5.3
【質問内容】
自分のHPからのアクセス先を調べたいのですが、
リンクに一枚自サイトのページをかませてリダイレクトしないと調べられないでしょうか?

PHPかわからないのですが、
他人のサイトでマウスオーバーで表示されるアドレスは他サイトのアドレスなのに、
クリック数を集計できているようなサイトがあるのですが何か方法があるのでしょうか?
0534nobodyさん2013/03/02(土) 00:27:46.96ID:???
マウスオーバーじゃなくてソース見てみ
05355332013/03/02(土) 02:40:43.95ID:YI/QC52Q
>>534
ソース見てみたのですが、特にわかりませんでした。
なぜかaの要素にeiというのがあったくらいで、普通に他サイトにリンクされているみたいでした。
0536nobodyさん2013/03/02(土) 02:42:17.82ID:???
>>535
リンク貼って
05375332013/03/02(土) 03:25:44.23ID:YI/QC52Q
2chまとめのアンテナサイトなんですが・・・
右側にクリックとあるのでなんらかの方法で集計しているように見えます

ttp://2ch-c.net/
0538nobodyさん2013/03/02(土) 03:36:53.80ID:???
宣伝厨乙
宣伝したら2chから広告費請求されるのは知ってるよな?
サイト運営者じゃなくなりすましが宣伝してるならもっと面倒な話になる
0539nobodyさん2013/03/02(土) 03:55:12.00ID:???
>>528
冗長じゃない。そのぐらい丁寧に書くくせつけてると
あとで他人や自分を助けることになる
0540nobodyさん2013/03/02(土) 05:23:33.00ID:???
>>537
function(){$('.et').click(functio 略
大して読んでないけどこの辺だと思うよ。
0541nobodyさん2013/03/02(土) 05:25:27.27ID:???
そのコードを利用して任意のページのクリック数を増加させることもできるかもしれないし、できないかもしれない
ともあれその手のアンテナサイトって総じてクソだよね
0542nobodyさん2013/03/02(土) 11:36:25.72ID:1/7UEg02
すいません、正規表現の質問です。

下記の場合は、
preg_match("/明治(?!学院)|明大/", $daigaku)

$daigakuの中に「明治」「明大」がある場合は、マッチするが「明治学院」がある場合はマッチングしません。

これに「明治時代」の場合もマッチングしないようにしたいと思い
preg_match("/明治((?!学院)|?!時代)|明大/", $daigaku)
とやりましたが駄目でした。

どのようにすればよいでしょうか?

PHPのバージョンは5.2
OSはCentOS5.1
0543nobodyさん2013/03/02(土) 12:45:08.70ID:???
/(明治(?!学院)(?!時代)|明大)/
0544nobodyさん2013/03/02(土) 15:25:56.84ID:???
PHPなんて覚えたって15万で働かされるんだぞ
ttp://job.j-sen.jp/28473/
0545nobodyさん2013/03/02(土) 15:43:00.80ID:???
そんな緩い募集要件ならC#でもJavaでも同じ
■ このスレッドは過去ログ倉庫に格納されています