[表示 : 全て 最新50 1-99 101- 2chのread.cgiへ]
Update time : 02/13 08:48 / Filesize : 43 KB / Number-of Response : 154
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:nobodyさん mailto:sage [2014/01/20(月) 06:23:11.66 ID:???]
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

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

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

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

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ

16 名前:nobodyさん mailto:sage [2014/01/21(火) 23:10:12.38 ID:???]
>>15
関連リンク
■本家マニュアル   www.php.net/manual/ja/
演算子の項を参照

17 名前:nobodyさん mailto:sage [2014/01/22(水) 00:12:36.65 ID:???]
>>15
>>はビットシフト
RGBは24bitなので、右に16bitシフトすればGとBのビットは捨てられてRだけになります
& 0xff はビットマスク
ここでは下位8bitはそのまま、それ以外のビットがあれば0にする意味で使われています

18 名前:15 mailto:sage [2014/01/22(水) 08:39:19.31 ID:???]
>>16
>>17
ありがとうございました!

19 名前:nobodyさん [2014/01/22(水) 14:46:32.76 ID:aoIHocMl]
組み込み関数の「trim」について質問です。
フォームからの投稿文字列の最後に、「改行」がある場合、削除したいのですが、
うまく効かないです。何が原因でしょうか?

$val = isset($val) ? trim($val) : '';

マニュアルを見ると、改行を除く場合、第二パラメーターは不要とのことです。
jp1.php.net/manual/ja/function.trim.php
原因がわからず困ってます。よろしくお願いします。

20 名前:nobodyさん mailto:sage [2014/01/22(水) 14:53:14.65 ID:???]
$val の内容ダンプしてみては

21 名前:19 [2014/01/22(水) 14:58:11.25 ID:aoIHocMl]
>>20
大変、失礼しました。自己解決です。
trimが効いていないと思ったら、効いていました。
投稿後、セッションの元データをフォームに反映させていたため
効いていないと、勘違いしていたみたいです。
お騒がせして済みませんでした。

22 名前:nobodyさん mailto:sage [2014/01/22(水) 18:04:34.87 ID:???]
ム板のPerlスレもだいぶPHPの良さが分かってきたみたいだな

23 名前:nobodyさん mailto:sage [2014/01/22(水) 19:04:29.09 ID:???]
でもまだ抵抗してる馬鹿がいるだろ。
継続的に啓蒙していくことが重要。

24 名前:nobodyさん [2014/01/22(水) 22:36:56.70 ID:FG8ViAIJ]
一行もPHPのコードが書けないバカはここに来るな



25 名前:nobodyさん mailto:sage [2014/01/23(木) 00:06:20.34 ID:???]
>>23
啓蒙つーか
perl使ってる奴は底辺だって事実を
認知させるところからだろ

26 名前:nobodyさん [2014/01/23(木) 02:52:37.95 ID:df5KuOGo]
PHP使ってる奴は底辺だって事実を
認知させるところからだろ

27 名前:nobodyさん mailto:sage [2014/01/23(木) 03:35:34.87 ID:???]
perlじゃお金にならないよ

28 名前:nobodyさん mailto:sage [2014/01/23(木) 03:37:23.28 ID:???]
いやいやこいつはどの言語も使えない馬鹿チョンだろ

29 名前:nobodyさん mailto:sage [2014/01/23(木) 10:31:13.88 ID:???]
スレ違いです
質問書いてください。

30 名前:nobodyさん mailto:sage [2014/01/23(木) 10:46:43.24 ID:???]
>>27
Perl厨はPerlそのものを使って仕事を見つけるつもりはないと苦しい言い訳をしているよ。

31 名前:nobodyさん mailto:sage [2014/01/23(木) 18:25:39.43 ID:???]
俺も見かけたときは加勢してやってるんだから
お前らもがんがれ

32 名前:nobodyさん mailto:sage [2014/01/23(木) 19:49:26.64 ID:???]
>>30,>>31

>>24

33 名前:nobodyさん mailto:sage [2014/01/23(木) 20:04:29.62 ID:???]
Perlで質問してるところにPHPで解答コード書いてやればいいんじゃね?

そうすればPHPユーザーのスキルレベルとPHPの有用性を同時に示すことができる

34 名前:nobodyさん mailto:sage [2014/01/23(木) 21:17:36.49 ID:???]
そしてPHPerは空気も読めないのかと言われる



35 名前:nobodyさん [2014/01/23(木) 21:47:21.78 ID:df5KuOGo]
ぺちぱーにそれが果たしてできるのかな

36 名前:nobodyさん [2014/01/23(木) 23:37:54.85 ID:7YymRraU]
【OS名】RedHat
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL CodeIgniter
【質問内容】
セッションに大量に突っ込むと中身が消えます。
具体的にはセッションに3000文字とかいれると消えます。
1000文字とかであればちゃんと入っているんですがセッションの容量には上限があるんでしょうか?

以前にちょっとしたファイルをやり取りしたことがあるので3000文字程度では大丈夫と思っていたのですが設定など見ても上限に該当するものがみあたりませんでした。

37 名前:nobodyさん mailto:sage [2014/01/24(金) 00:07:02.91 ID:???]
保存先がCookieになっていないか確認したか?

38 名前:nobodyさん mailto:sage [2014/01/24(金) 00:07:11.60 ID:???]
とくに制約を受けるサイズないと思うよ
デバッガで追ってみたら

39 名前:nobodyさん mailto:sage [2014/01/24(金) 00:11:01.69 ID:???]
中身が消えるっていうのは、Session自体は生きてるけど特定のパラメータだけNULLか何かになるってこと?
その辺どうやって確認してんの

40 名前:nobodyさん [2014/01/24(金) 10:09:16.59 ID:d/hHeezf]
みなさん回答ありがとうございます。

単純にsessionの関数使っているだけなのでsessionがどこに保存されているのか?
というのを意識していませんでした。
特に何もしていませんがブラウザーのデバッガーで見たらcookieにそれらしき文字列があったのでcookieだと思います。

中身が消えるかどうかの確認は1000文字いれても取り出せるけど
3000文字だとnullになっているという形です。

保存先を変えることができるのであればやってみたいと思います。

41 名前:nobodyさん mailto:sage [2014/01/24(金) 14:46:22.36 ID:???]
セッションの内容をクッキーに保存したら、それは、クッキーでありセッションではないと思うのだが。
セッションとクッキーを混同してるんじゃないの。
それと、クッキーは、たしか4kbyteとかの上限があるからそれが原因だと思う。

42 名前:nobodyさん [2014/01/24(金) 15:15:41.95 ID:UatxQsqL]
getで送信とかしてないよね

43 名前:40 [2014/01/24(金) 15:44:15.53 ID:d/hHeezf]
みなさんありがとうございます。
単純にCodeigniterのセッションを使って入れておりました。

$this->session->set_userdata($newdata);

こんな感じです。

44 名前:nobodyさん mailto:sage [2014/01/24(金) 16:00:50.28 ID:???]
Codeigniterのスレで聞いた方が良いかもしれない。
kohada.2ch.net/test/read.cgi/php/1299595202/



45 名前:nobodyさん mailto:sage [2014/01/24(金) 16:18:59.36 ID:???]
横レスだけどCookieにSessionデータ詰めるなんて話初めて聞いたわ

46 名前:40 [2014/01/24(金) 16:29:54.30 ID:d/hHeezf]
スレを移ったほうがよさそうですね

私もsessionと書いてあったのでてっきり実データはサーバー側とおもっていたのですが
cookieの中になにやらはいっておりました。
文字数からして4kの上限にあたっているようなのでsessionとなっていますが
cookieの中にいれていたということでしょうか。
ちょっとよくわからなくなってきました。

47 名前:nobodyさん mailto:sage [2014/01/24(金) 16:42:11.39 ID:???]
いずれにしても、セッションのデータがクッキーに入ってしまうのは、
セキュリティ上も良くないと思うよ。

48 名前:nobodyさん mailto:sage [2014/01/24(金) 17:25:34.78 ID:???]
CIのマニュアルにCookie使うから4kbまでってはっきり書いてあったわ
マニュアルも読まずに質問するとは乳首1000クリックの刑

49 名前:40 [2014/01/24(金) 17:36:06.47 ID:d/hHeezf]
みなさん申し訳ありません。
確かにマニュアルにクッキー使うよと書いてありますね。
sessionってあったからてっきりそうなのかと思ってましたがCIのsessionはcookie保存のようです。

別の手段で回避することにしました。
お騒がせしました。

50 名前:nobodyさん mailto:sage [2014/01/24(金) 19:56:24.36 ID:???]
>>45
Codeigniterでは、セッション情報を暗号化してクッキーに保存するらしい。
あと、DBにも保存することが可能だとか。普通にファイルとして保存すればいいのに。
codeigniter.jp/user_guide_ja/libraries/sessions.html

51 名前:nobodyさん mailto:sage [2014/01/25(土) 00:34:33.81 ID:???]
そういう発想なかったけど、セッションサーバいらないってのは魅力かもね
Hmac付けてHiddenを引き回してたのに近い感じやな

52 名前:nobodyさん mailto:sage [2014/01/25(土) 01:31:58.66 ID:???]
最近じゃhtml5のlocal strageが5MBytesある。
http2.0なぞ普及するとサーバ側が非同期にpullするサービスも増えてくるのかしらん。

53 名前:nobodyさん [2014/01/25(土) 07:04:11.94 ID:HM5WIj95]
ログイン実装をFWに頼らず自力でやろうと思ってます
cookieの存在・仕様については無知なので以下の流れで本当に大丈夫なのか心配です

1.パスワード等でログインが成功したらcookie["token"]にランダム文字列を格納(Aとする)
2.Aをデータベースの個別のUser情報にも記録(Bとする)
3.毎回ユーザーがアクセスする度にA(cookie側)とB(DB側)が一致するかチェック
 一致すればログインされてる 一致しなければ未ログイン
4.もしtokenが作られて24時間経てばtokenを一度破棄してログアウトさせる

これで十分にセキュアなログイン仕様となるでしょうか?

54 名前:nobodyさん mailto:sage [2014/01/25(土) 10:14:52.55 ID:???]
>>53
>>cookie["token"]にランダム文字列を格納
これがセキュリティ的にまずいかも。
通常は、トークンを自前で作ることはせず、セッションIDの自動発行にまかせる。
また、ログイン機能自体もセッションをメインで作るのが普通だと思うけどね。
そうすれば、DBへの問い合わせとか不要だし。



55 名前:nobodyさん mailto:sage [2014/01/25(土) 10:48:20.53 ID:???]
セッションにログインフラグ立てればいいんじゃね

56 名前:nobodyさん mailto:sage [2014/01/25(土) 11:48:58.68 ID:???]
>>53
まずはここの「安全なウェブサイトの作り方」を見る。
www.ipa.go.jp/security/vuln/websecurity.html

>>53が書いている処理は、PHP標準のセッション処理を使ったほうが良い。

57 名前:nobodyさん mailto:sage [2014/01/25(土) 17:25:45.84 ID:???]
>>53
親父がログインしたエロサイト息子が見放題のまき〜

58 名前:nobodyさん mailto:sage [2014/01/25(土) 18:06:32.82 ID:???]
>>57
それは、クッキーでもセッションでも変わらないんじゃない。
ログアウトの実装次第であって。

59 名前:nobodyさん mailto:sage [2014/01/25(土) 18:24:43.55 ID:???]
通販サイトの、「チェックした商品の履歴」辺りってヤバイよね?

60 名前:nobodyさん [2014/01/26(日) 01:40:38.55 ID:tfpbRtMA]
自分もログイン機能を作りたいんですけど
セッションにユーザーid、ユーザー名を保存して
ログインが必要なページではセッションに
ユーザーidがあるか確認するというやり方で実装しました。
これだとセッションが切れると一緒にログインも切れてしまいます。
ブラウザを閉じるまでログインを維持するにはどうしたらいいでしょうか?

61 名前:nobodyさん mailto:sage [2014/01/26(日) 04:26:44.36 ID:???]
PHPで回答してやろうと思ってチェックしてるけどなんか歌の話しててチャンスがないんだがあいつら馬鹿か

62 名前:nobodyさん mailto:sage [2014/01/26(日) 07:45:41.36 ID:???]
>>61

>>24

63 名前:nobodyさん mailto:sage [2014/01/26(日) 09:51:54.84 ID:???]
>>60
セッションが切れるとログインも切れるってのは正常な動作なんだが
セッションのタイムアウトを伸ばせばいい

64 名前:53 [2014/01/26(日) 10:59:50.06 ID:LLTt79Q+]
皆さんありがとうございます
いまいちセッションが何なのかよくわかっていませんでした(cookieの別名ぐらいの認識)

よくサンプルコードでsession["user_id"] = hogehoge みたいなのを見かけて、
これだとクッキーにuser_idが書き込まれちゃうからありえない実装だ!と勘違いしてました
この場合["user_id"] = hogehogeはPHPのsession内部で管理していいて、
ユーザー側のcookieにはsession_idしか残らないんですね
一瞬で理解が深まりました本当にありがとうございます



65 名前:nobodyさん mailto:sage [2014/01/26(日) 11:51:46.45 ID:???]
>>60
デフォルトでは、1/100の確率で、24分より古いセッションファイルが消える。
設定を変更するには、gc_maxlifetime の設定値を伸ばせばいいよ。
たとえば、こんな感じだと3時間はセッションが切れない。

ini_set('session.gc_probability', 1);
ini_set('session.gc_divisor', 100);
ini_set('session.gc_maxlifetime', 3 * 60 * 60);

session_start();

>>ブラウザを閉じるまでログインを維持するにはどうしたらいいでしょうか?
これは、わからない。
ただ、あまり長い時間セッションを有効にするとセキュリティ上まずいと思う。

66 名前:60 [2014/01/26(日) 13:15:54.64 ID:tfpbRtMA]
>>63 >>65
ありがとうございます。
>>65のやり方でやってみようと思います。

67 名前:nobodyさん mailto:sage [2014/01/26(日) 13:36:49.78 ID:???]
>>80
www.tohoho-web.com/wwwcook.htm
Cookieの書き込みのパラメータのところ参照
ja.wikipedia.org/wiki/HTTP_cookie
クッキーの適用範囲と有効期限参照

68 名前:67 mailto:sage [2014/01/26(日) 13:37:35.48 ID:???]
>>80じゃなくて>>60

69 名前:nobodyさん mailto:sage [2014/01/26(日) 15:52:13.03 ID:???]
延々とセッションの話してるこっちも似たようなもんでしょ。

70 名前:nobodyさん mailto:sage [2014/01/26(日) 20:16:47.31 ID:???]
>>61
引き続き監視頼む。

71 名前:nobodyさん mailto:sage [2014/01/26(日) 20:34:26.69 ID:???]
>>70
自演ウザい

72 名前:nobodyさん mailto:sage [2014/01/26(日) 22:49:38.34 ID:???]
妄想で書き込んでる>>71がちょっとかわいそう
脳の病気かな、それとも心の病気かな

73 名前:nobodyさん mailto:sage [2014/01/26(日) 22:55:32.47 ID:???]
3Dの話出てるぞ。

74 名前:nobodyさん mailto:sage [2014/01/26(日) 22:56:21.12 ID:???]
監視スレでも立てて向うでやってれば?



75 名前:nobodyさん mailto:SAGE [2014/01/26(日) 23:02:50.28 ID:???]
>>71
妄想の垂れ流しは他所でどうぞ。

76 名前:nobodyさん mailto:sage [2014/01/26(日) 23:11:10.98 ID:???]
3DグラフィックはPHPの専門外だろw
行ける猛者は行ってこいw

77 名前:nobodyさん mailto:sage [2014/01/27(月) 03:04:42.97 ID:???]
漠然と3Dって言われてもな
DirectXの3Dモデルに独自フォーマットのXファイルってやつがあって
Xファイルにはバイナリとテキストと2種類あるが
テキストのほうならPHPでも出力できる
テンプレートと頂点情報を文字列として出力するだけだからな
そういう話?

78 名前:nobodyさん [2014/01/27(月) 16:05:44.71 ID:YzEqdDGf]
PHPで作成したWEBアプリの決済システムについて質問です。
無料サービスに、特典を上乗せした有料会員を募集しようと思っています。
そこで、PHPと連携できる決済システムなどはありますでしょうか?

たとえば、決済が済むと、無料会員から有料会員へ自動で変更できるような
APIを提供している決済システムなどです。
現在、paypalなどを考えているのですが、こうしたAPIが無いようでいまだ検討中です。
よろしくお願いします。

79 名前:nobodyさん mailto:sage [2014/01/27(月) 18:11:35.27 ID:???]
>>78
PHPと連携できる決済システムならググれば見つかる。
会員のグレードは決済システムとは無関係のビジネスロジックなのだから、自動で連携できる決済システムはないんじゃないかな。

80 名前:nobodyさん [2014/01/27(月) 19:57:51.65 ID:bUMgBNWh]
perlなら宮川達彦が何か作ってただろうな

81 名前:78 [2014/01/27(月) 20:26:35.59 ID:VwC5UIRJ]
>>79
実は、検索はしたのですが、これといったものが見つからなかったのです。
そこでPHP使いの皆さんはどうしているのかと思い質問させて頂きました。
決済システムの利用は、個人だとハードルが高いのかもしれませんね。
それか調べ方が悪かったのかな。もう少し調べてみます。
ありがとうございました。

82 名前:nobodyさん mailto:sage [2014/01/27(月) 20:37:46.66 ID:???]
>>79も言ってるけど会員のグレードを自動で移行できるロジックは自作するしかないよ
決済システム自体は別に個人でも普通に導入できる

83 名前:78 [2014/01/27(月) 21:15:11.18 ID:VwC5UIRJ]
>>82
レスありがとうございます。
「決済システムの導入」と「会員のグレードの変更」は別物と考えた方がいいのですね。

そうであるなら、まずは、「決済システムの導入」に注力したいと思います。
結構、難しそうですが、PayPalを候補に考えてます。
それで上手くいったら、次に、「会員のグレードの変更」にもチャレンジしたいと思います。

この2つを一度で済ませられると考えたのが良くなかったみたいですね。
ありがとうございました。

84 名前:nobodyさん [2014/01/30(木) 06:30:49.21 ID:M3G3bQxX]
HTTPレスポンスヘッダーを明示的に記述したい場合に
@ini_set('default_charset', 'UTF-8');
Aheader("Content-type: text/html; charset=utf-8");
はどう違うのですか?

@はスクリプト終了時に元の値に戻されるとのことですが……
使い分けの方法などあれば教えていただきたいです。



85 名前:nobodyさん mailto:sage [2014/01/30(木) 10:23:27.80 ID:???]
default_charset は
Content-Type: text/html; charset=UTF-8 の後半部分だけ

86 名前:nobodyさん [2014/01/30(木) 12:37:38.81 ID:M3G3bQxX]
@ini_set('default_charset', 'UTF-8'); ini_set('default_mimetype', 'text/html');
Aheader("Content-type: text/html; charset=utf-8");
の違いはないという認識でいいんですかね?
header()はLocationとかヘッダーのiniでいじれない部分を変更できるということですかね

87 名前:nobodyさん mailto:sage [2014/01/30(木) 12:41:30.94 ID:???]
マニュアル読め

88 名前:nobodyさん mailto:sage [2014/01/30(木) 21:56:15.59 ID:???]
>>84
ini_setで指定しているのはあくまでデフォルトの設定。
headerのほうを指定するとそれが上書きされる。

89 名前:nobodyさん [2014/02/02(日) 00:03:04.56 ID:6TG0eOwN]
ActiveRecordを継承するModelモデルがあったとして
テーブルにinsertするaddメソッドを作るとき
staticメソッドにすべきかどうかを教えていただきたいです。
以下の2つで迷ってるんですが正解ってあるんでしょうか。

public function add($hoge) {
 $this->hoge = $hoge;
 return $this->save();
}

$model = new Model;
$model->add($hoge);

----------

public static function add($hoge) {
 $model = new static;
 $model->hoge = $hoge;
 return $model->save();
}

Model::add($hoge);

90 名前:nobodyさん mailto:sage [2014/02/02(日) 02:48:14.87 ID:???]
議論のあるところですが、Frameworkの流儀に倣うのがよいでしょうね
元々はテーブルがクラスでインスタンスが行になる感じですね
クラスの得意メソッドが、PHPだとStaticという表現になります

91 名前:nobodyさん mailto:sage [2014/02/02(日) 03:55:43.87 ID:???]
>>89
ARでは、クラス -> テーブル、インスタンス -> 行、プロパティ -> カラム、という表現
insertはテーブルに対する操作なので、インスタンスではなくクラスに対するメッセージ==クラスメソッドで表す
RailsのARだとまさにClassMethodsつー思い切ったモジュールがあって、このcreate()がinsertに対応しているので
お宅の求めているものにかなり近いだろう
https://github.com/rails/rails/blob/40e7fe3451df8e5b454f7d0472396d2429edc0e5/activerecord/lib/active_record/persistence.rb

92 名前:nobodyさん mailto:sage [2014/02/02(日) 07:28:04.31 ID:???]
出番だぞ

724:デフォルトの名無しさん :2014/02/02(日) 04:29:49.87 [sage]
1000日後の日付をYYYY-MM-DD形式で取得するのに簡単な方法はありますか?
前提条件はできるだけ少ないほうがうれしいです

93 名前:nobodyさん mailto:sage [2014/02/02(日) 09:49:34.74 ID:???]
いつから1000日後よ

94 名前:nobodyさん mailto:sage [2014/02/02(日) 12:30:52.38 ID:???]
DateTimeクラスのaddメソッド



95 名前:nobodyさん [2014/02/02(日) 12:44:47.02 ID:XaYZuhBO]
function view() {
extract([ "v1" = > "aaa" ]);
require("test.php");
}


test.php
<?
function func() {
echo $v1; // ここで$v1を表示するにはどうしたらいいですか
}

global $v1 と $GLOBALS['v1'] でも表示されません

96 名前:nobodyさん mailto:sage [2014/02/02(日) 14:59:01.63 ID:???]
requireの場所違くね

97 名前:nobodyさん mailto:sage [2014/02/02(日) 15:25:36.73 ID:???]
func(extract([ "v1" = > "aaa" ]))じゃダメなの?

98 名前:nobodyさん mailto:sage [2014/02/02(日) 15:26:50.98 ID:???]
突っ込みどころが多すぎる

99 名前:nobodyさん mailto:sage [2014/02/02(日) 15:34:01.86 ID:???]
一番手っ取り早い方法

function〜 {と } の行を全てコメントアウト
= > を => に
<? を <?php に
view()のあるファイルの先頭に <?php 追加

これでいけると思うが

100 名前:nobodyさん mailto:sage [2014/02/02(日) 16:00:51.61 ID:???]
>>97は無視してくれ extractという関数を理解していなかった
extractってのはシンボルテーブルに変数をインポートする関数なんだが
別のphpファイルだとシンボルテーブルを共有してないっぽい

101 名前:nobodyさん mailto:sage [2014/02/02(日) 16:07:28.45 ID:???]
関数ごとにシンボルテーブル違うっぽいな

102 名前:95 mailto:sage [2014/02/02(日) 16:13:00.92 ID:???]
無理ぽいのでとりあえず引数で渡すことにします。
皆さんありがとうこざいました。

103 名前:nobodyさん mailto:sage [2014/02/02(日) 16:13:21.82 ID:???]
質問者は関数定義だけしてその関数を呼んでない、というのもあるw

104 名前:95 [2014/02/02(日) 16:13:50.74 ID:XaYZuhBO]
ID出し忘れました



105 名前:nobodyさん mailto:sage [2014/02/02(日) 16:20:08.31 ID:???]
1 <?
2 $a = "aaaaaaaaaaaaaaaaaaaaa";
3 echo "in global\n";
4 print_r(get_defined_vars());
5 function bbb(){
6 $b = array("bbbbbbbbb" => "bbbbbbbbbbbbbbbbbb");
7 extract($b);
8 echo "in function\n";
9 print_r(get_defined_vars());
10 }
11 bbb();
12 echo "in global\n";
13 print_r(get_defined_vars());

106 名前:nobodyさん mailto:sage [2014/02/02(日) 16:20:50.71 ID:???]
test.phpの実行結果

in global
//大量に変数が表示される
[a] => aaaaaaaaaaaaaaaaaaaaa
in function
Array
(
[b] => Array
(
[bbbbbbbbb] => bbbbbbbbbbbbbbbbbb
)

[bbbbbbbbb] => bbbbbbbbbbbbbbbbbb
)
in global
//大量に変数が表示される
[a] => aaaaaaaaaaaaaaaaaaaaa

どうやらextract($b)によって変化するのはbbb()のシンボルテーブルのみ

107 名前:nobodyさん mailto:sage [2014/02/02(日) 16:28:01.37 ID:???]
あと面倒くさいから確かめてないけど
func()でglobalをつかってもtest.phpのシンボルテーブルが参照されるだけで
requireされた場所(views)のシンボルテーブルが参照されるわけではないんじゃないの

108 名前:nobodyさん mailto:sage [2014/02/02(日) 16:39:41.69 ID:???]
<?

$v1 = '';
function view() {
global $v1;
extract(array( "v1" => "aaa" ));
require("test.php");
}
view();
testfunc();
--------------------

<?
function testfunc() {
global $v1;
echo $v1; // ここで$v1を表示するにはどうしたらいいですか
}
--------------------

109 名前:nobodyさん mailto:sage [2014/02/02(日) 16:44:10.62 ID:???]
test.php
<?
require('test2.php');
function view(){
extract(array("v1"=>"aaa"));;
func(get_defined_vars());
}
view();

test2.php<?
function func($hoge){
echo $hoge["v1"];
}

これじゃダメ?

110 名前:108 mailto:sage [2014/02/02(日) 16:46:04.11 ID:???]
上が適当なファイルで下がtest.php
extract(array( "v1" => "aaa" ));
は動かしたphpのバージョンが古いので変更している。

requireはあくまでファイルを読み込むためのもの。例え関数内で読まれたとしてもその意味は変わらない。
view関数の中でrequireしても、view関数内の変数がglobalの対象にならないよってことで。

111 名前:nobodyさん mailto:sage [2014/02/02(日) 16:47:28.98 ID:???]
個人的に関数を呼び出すごとにrequireっておぞましいんだが普通なんか?

112 名前:nobodyさん mailto:sage [2014/02/02(日) 16:56:25.03 ID:???]
>>111
あまりrequireすることがなくてサイズが大きいやつだとオーバーヘッドになるから、その関数内でやる場合もあるかも。
ただ効果があるかどうかは知らない。

113 名前:nobodyさん mailto:sage [2014/02/02(日) 17:16:05.52 ID:???]
自分は主な関数ごとにファイルを作成しているから、使う関数の数だけrequireするよ。
たいていは、多くても10ファイル前後におさまる。
速度も別に遅くならないし、気にならない。
まあ、auto_loadが関数の読み込みにも使えたら便利なんだけど。

114 名前:nobodyさん [2014/02/02(日) 17:38:45.22 ID:UuBd4EHo]
質問と言って良いかわからんが

curl_multi_exec を使うと「エラー時のエラー番号が0」になる人いない?
バージョンは最新のどれでも。

curl_exec だとしっかりエラー番号も取れるんだけどねー。



115 名前:nobodyさん mailto:sage [2014/02/02(日) 17:42:38.20 ID:???]
仕様見てみりゃわかる。
multi は個別にエラーチェックしないと

116 名前:89 [2014/02/02(日) 17:53:21.79 ID:6TG0eOwN]
>>91
ありがとうございます。クラスメソッドにすることにしました。
クラスメソッドの使いどころについてもうちょっとお聞きしたいです。
オブジェクト指向の勉強にとデザインパターンの入門サイトを見ていたのですが
factoryメソッドの紹介でこんなコードが載ってました。
codepad.org/KLCiPfDa
このReaderFacotoryクラスのメソッド2つをクラスメソッドにしない理由がよくわかりません。

$factory = new ReaderFactory(); // このnewが無駄に見えて仕方ないです
$data = $factory->create($filename);

単に $data = ReaderFactory::createReader($filename);
とせずインスタンスを作る利点は何なのでしょう?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<43KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef