[表示 : 全て 最新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等)・フレームワークは各該当スレへ

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);
とせずインスタンスを作る利点は何なのでしょう?

117 名前:nobodyさん mailto:sage [2014/02/02(日) 18:13:08.61 ID:???]
>>116
載ってるコードだけで完結させるならどっちでもいい。public staticにする必要はあるけど。
addとかdeleteとかメソッド作ったりしてクラスを改造していくならインスタンス作るほうが便利。

118 名前:nobodyさん mailto:sage [2014/02/02(日) 19:09:25.78 ID:???]
95 はテンプレートエンジンじゃないの

119 名前:114 mailto:sage [2014/02/02(日) 19:34:26.88 ID:???]
>115
>multi は個別にエラーチェックしないと

エラーメッセージは正確に出るのに
番号は出ない仕様なの?

よければ、マニュアルに書いてあったら教えてください。

120 名前:nobodyさん mailto:sage [2014/02/02(日) 21:36:29.16 ID:???]
>>166
create

121 名前:nobodyさん mailto:sage [2014/02/02(日) 21:37:01.14 ID:???]
ぉん?

122 名前:nobodyさん mailto:sage [2014/02/02(日) 23:19:31.40 ID:???]
>>166
依存性を小さくできる、パターンに従っていれば伝わりやすい、OO的に自然で理解に手間がかからない

上のファクトリは単純にStaticにしても動かない
ファクトリはサブクラスにオブジェクト生成の詳細を任せるパターンだから、createReaderはオーバーライド前提になっている
ReaderFactory::create()からサブクラスのcreateReader()を呼ぶのは、親にとって未知の子孫固有のメソッドを呼ぶこと
そのためget_called_class()なり遅延束縛なりして実行時にstaticメソッドのバインド先を決定してやる必要があるという
謎設計に帰結する。遅延束縛がなかったころはさらに不自然だった。

OOPではクラスメソッドは(各インスタンスではなく)クラス自身の振る舞いを記述するものだと言っていいだろう
コード上でメッセージをやりとりしてシステムを形成しているオブジェクト==インスタンスだとすれば、クラス自身は何か?
この設定いかんによって、クラス固有のメソッドとして自然なものと不恰好なものを区別できる

static張りまくって関数ポインタのかたまりを作る人もいし、それがよいケースもある
しかし手続きからOOに入ってやりがちな、よくないstaticについてはstatic evilとかでぐぐれば情報はある



123 名前:122 mailto:sage [2014/02/02(日) 23:24:15.85 ID:???]
つられたw
>>122>>116

124 名前:nobodyさん mailto:sage [2014/02/03(月) 03:26:24.18 ID:???]
遅延束縛なかったら静的メソッドのユニットテスト糞になるからな

125 名前:nobodyさん mailto:sage [2014/02/09(日) 11:25:27.29 ID:???]
php関数名って一貫性なさすぎだろ
一旦全部エイリアスにして新しいの付けるべき

126 名前:nobodyさん mailto:sage [2014/02/10(月) 01:52:41.55 ID:???]
isset は is_set で有るべきだと思うんだ

127 名前:nobodyさん mailto:sage [2014/02/10(月) 03:44:49.98 ID:???]
alias.phpでも作ってろ

128 名前:nobodyさん mailto:sage [2014/02/10(月) 09:41:58.22 ID:???]
>>125
正しい名前でラップするには都合がいいだろう?

129 名前:nobodyさん [2014/02/11(火) 22:13:31.86 ID:ak6dJouy]
OS XP
php ver 4

適切なスレが見つからなかったのですが、
phpでmysqlのテーブルから文字列を取ってきて表示させようとしたのですが、
半角パーセント記号を含む文字列において、パーセント記号が消え、次の文字が変な記号になってしまいます。
文字列中の%を\%などとしてみてもダメでした。
解決法を教えてください。

130 名前:「ガスライティング 集団ストーカー カルト」で検索を! [2014/02/11(火) 23:02:18.69 ID:lii3ZN0H]
★マインドコントロールの手法★

・沢山の人が偏った意見を一貫して支持する
 偏った意見でも、集団の中でその意見が信じられていれば、自分の考え方は間違っているのか、等と思わせる手法

・不利な質問をさせなくしたり、不利な質問には答えない、スルーする
 誰にも質問や反論をさせないことにより、誰もが皆、疑いなど無いんだと信じ込ませる手法


↑マスコミや、カルトのネット工作員がやっていること

TVなどが、偏った思想や考え方に染まっているフリや常識が通じないフリをする人間をよく出演させるのは、
カルトよりキチガイに見える人たちを作ることで批判の矛先をカルトから逸らすことが目的。

リアルでもネットでも、偽装左翼は自分たちの主張に理がないことをわかっているのでまともに議論をしようとしないのが特徴。
,.,.,,

131 名前:nobodyさん mailto:sage [2014/02/12(水) 09:15:48.34 ID:???]
>>129
php4か…
新規で学習中なら現在主流のphp5をおすすめします。
(できればOSも来年度以降サポートがあるものが(winでもLinでも)望ましい)
mysqlではパーセント記号がワイルドカードとして扱われるからそれが影響してるのかも。
phpmyadminとかで取り出す前のデータが化けてないか確認してみるといいかも。
化けてるならinsertに問題あり。
化けてないならselectに問題あり。

132 名前:nobodyさん mailto:sage [2014/02/12(水) 10:53:26.54 ID:???]
>>129
表示はどうやってるの?
printf 使ってるなら、1番目は%sにして文字列は2番目で



133 名前:nobodyさん mailto:sage [2014/02/12(水) 11:57:19.74 ID:???]
>>129
どの文字がどう変わるのか、もう少し具体的に言った方がアドバイスを
貰いやすいよ。

134 名前:nobodyさん mailto:sage [2014/02/12(水) 13:37:43.31 ID:???]
>>129
base64というものがありまして。
抽出、表示を一気にやる前に、抽出したものをそのままログファイルなどに出力して確認してはどうだろう。

135 名前:nobodyさん mailto:sage [2014/02/12(水) 19:37:08.84 ID:???]
ceil(7000*1.08)が7561になるのは仕様?
どうすれば7560って出せるの?
切り上げでね。

136 名前:nobodyさん mailto:sage [2014/02/12(水) 19:55:29.57 ID:???]
>>135
>>1

137 名前:nobodyさん mailto:sage [2014/02/12(水) 21:41:24.51 ID:???]
>>135
PHPのせいといいたいかもしれないけれど、小数がどう扱われるかを勉強したほうがいい。
何かと付きまとう問題なので。

138 名前:nobodyさん mailto:sage [2014/02/12(水) 21:51:04.93 ID:???]
>>135
仕様

ceil(7000*108/100)とすればよい
消費税だろうけど、浮動小数点数型の丸め誤差は勉強した方がよいと思うよ

139 名前:nobodyさん [2014/02/12(水) 21:53:28.41 ID:rdsqA60A]
この程度で丸め誤差とか致命的に腐ってるだろ

140 名前:nobodyさん mailto:sage [2014/02/12(水) 22:24:47.86 ID:???]
>>139
腐ってない言語ってなにかあるのか?

141 名前:129 [2014/02/12(水) 22:44:26.79 ID:J2CtCpwd]
具体的には下の通りです。
ちなみに出力はflashでしています。
(flashが原因でないことは確認しています)

【テーブルの文字列】
フィールドdata2 「ダメージを50%カット。」

【php】
if(!$mysql->query("SELECT * from table")){
}else{
while($row=$mysql->fetch()){ $data=$data.$row["data1"].",".$row["data2"].",";
}
echo "data=".$data;

【出力結果】
ダメージを50?≪ット。

142 名前:nobodyさん mailto:sage [2014/02/12(水) 22:46:17.19 ID:???]
すみません。phpの方コピペミスで"}"足りないです。



143 名前:nobodyさん mailto:sage [2014/02/12(水) 22:47:07.64 ID:???]
>>139
Perl、Python、Ruby すべて 7561 になる。
これは1.08が2進数では循環小数になることが影響している。

144 名前:nobodyさん mailto:sage [2014/02/12(水) 22:54:42.67 ID:???]
>>139はCOBOL以外は全部腐ってるって言いたいんだろ。






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

前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