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

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

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

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

◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】

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

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

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
0653nobodyさん2009/01/03(土) 23:01:09ID:???
>>647
header(Location: http://www.hoge.com/);
これって、""で囲まないで良いの?
0654nobodyさん2009/01/03(土) 23:03:24ID:???
>>652
このスレってなんのためにあるの?
ググレ、ググレって覚えたての言葉をうれしそうに連呼する猿を見ると吐き気がする。
手元にある書籍で思いっきりひっぱたいてやりたい気分。氏ねw
日本のPDOが終わってるのはコミュニケーション能力のないキモヲタしかつかわないから。
そういう豚は「ググレググレググレ」ばっか。だからユーザーが育たない。
0655nobodyさん2009/01/03(土) 23:06:57ID:???
>>652
3が推奨なのはあちこちのページに書いてあるのでわかりますが、
自分が使っているレンタルサーバーでは
PDOのドライバーが2用のしか入っていないので
使えないんですよ。だから仕方なく2を使っているという現状です。

だから、2用の解説記事を今から10本書いてください。
しかも初心者が読んでわかりやすいようにね。

いつまでも書けますか?
0656nobodyさん2009/01/03(土) 23:07:38ID:???
Xいつまでも書けますか?
○いつまでに書けますか?
0657nobodyさん2009/01/03(土) 23:09:03ID:???
>>1
0658nobodyさん2009/01/03(土) 23:12:20ID:???
>>657
* 忠告しておく。層化を追求すると死人が出る ・ ・ ・ ・。

1. 斎賀孝司 ( 朝日記者 / 病死?)
2. 森田設計士( 耐震偽装関連 / 自殺?)
3. 大西社長 ( LD投資組合社長 / 行方不明 )
4. 古川社長 (平成設計の元社長 / 自殺?)
5. 森田信秀 ( 姉歯に構造計算を発注 / 自殺?)
6. 草苅逸男 ( 岡山 ・ 新勝央中核工業団地 / 一級建築士 / 焼死?)
7. 野口英昭取締役( ライブドア政界窓口 / HS証券 ・ 安晋会理事 / 沖縄カプセルホテルで怪死 )
8. 東江組員 ( 沖縄旭流会幹事 / 惨死 )
9. 小渕恵三 ( 脳梗塞??)
10.竹下登秘書の青木伊平( 自殺??)
11.市議会で創価を追及してた元東村山市議朝木議員→飛び降り自殺
12.映画で創価学会を取り上げようとした伊丹監督→飛び降り自殺
13.国会で創価に噛みついて、議員辞職後も創価と裁判してた永田元議員→飛び降り自殺
0659nobodyさん2009/01/03(土) 23:12:54ID:???
うぜー市ねw
0660nobodyさん2009/01/04(日) 00:47:56ID:+Z0x0JrP
http://www.uploda.org/uporg1906245.jpg
0661nobodyさん2009/01/04(日) 02:45:22ID:90ycN+/t
PHP4 で、オブジェクトにインスタンス変数が定義されているかどうかを調べる方法はありますか。
property_exists($obj, "varname")
みたいなのが PHP4 でできるなら教えてください。
0662nobodyさん2009/01/04(日) 02:49:36ID:???
やりたいことは
$var = "varname";
echo $obj->$var;
というだけなんですが、error_reporing(E_ALL) をすると
$obj->varname が存在しないときにエラーがでるので、
それを防ぎたいというだけです。
0663nobodyさん2009/01/04(日) 03:10:02ID:???
>>662
http://jp.php.net/manual/ja/book.classobj.php
0664nobodyさん2009/01/04(日) 03:32:33ID:???
あれ、普通にissetで存在確認できなかったっけ?

nullとか空文字列とか空の配列で初期化しとくとそもそも判定の手間が省ける事も多い。検討の余地あり。
0665nobodyさん2009/01/04(日) 07:49:06ID:lpSLvYGu
fsockopenでサーバーにつなぎ、fputsでデータを転送しようと思います。
そこで、fsockopenはうまく繋げたけど、fputsの途中でLANケーブルを
抜いた場合などに、タイムアウトを設定して時間切れになったら任意の処理を
実行するといった動作は可能でしょうか?
可能なら実現方法を教えて頂ければと思います。
個人で調べた範囲のものでは、
stream_set_timeoutが惜しいと思ったのですが、fopen/freadにしか使えないようです。

OS不明/PHP5です。お願いいたします。
0666nobodyさん2009/01/04(日) 07:51:04ID:???
timeoutしたらfalse返ってくんじゃないの?
0667nobodyさん2009/01/04(日) 07:59:51ID:???
>>665
ttp://jp.php.net/manual/ja/function.fsockopen.php

マニュアルに書いてあるよ
06686652009/01/04(日) 15:32:22ID:???
レスありがとう
>>666
fputsで処理がストップするから値は何も返って来ないんだ
>>667
fsockopenじゃなくて、fputsのタイムアウトをとりたいのです。
fsockopenで接続されたあと、ループをまわしながらfputsで少しづつ情報を
送っているのですが、その途中で接続が切断された場合、fputsで処理が止まり
どうしようもなくなってしまうので・・

何か分かりましたらお願いします。
0669nobodyさん2009/01/04(日) 16:27:28ID:S9BZj0MW
フォームの入力内容を確認画面で表示したいと思います

で、"><font color="#ff0000"> と入力して送信したら、確認画面では \"> と表示され
ソースを見ると該当箇所は \"><font=\"#ff0000\"> となってました
なんで\をつけられてるんでしょうか?
かなりレベルの低い質問だと思いますが、御願いします
htmlspecialchars() とかしてないのにと混乱してます

smartyのスレで質問したのですが、それ以前の問題に思えてきたのでこちらで
質問させてもらいました、よろしく御願いします
0670nobodyさん2009/01/04(日) 16:37:02ID:???
magic_quote_gpc
0671nobodyさん2009/01/04(日) 16:37:24ID:???
magic_quotes_gpcだった
ttp://jp2.php.net/manual/ja/info.configuration.php#ini.magic-quotes-gpc
0672nobodyさん2009/01/04(日) 17:11:00ID:???
>>671
どうもありがとうございます、ようやく解決しました
利用非推奨だしONだと遅くなるらしいし、何の意味があるんでしょうかねこれって
とにかくありがとうございました
0673nobodyさん2009/01/04(日) 17:53:12ID:???
>>672
MySQLに値を格納するときに
SQLインジェクションされるのを防止
するためにNASAが開発した新機能だ
0674nobodyさん2009/01/04(日) 17:57:19ID:csR3yzKg
例えば入力フォームなどなく
MYSQLのデータをPHPで表示させる場合SQLインジェクション対策をする必要はあるのでしょうか?
0675nobodyさん2009/01/04(日) 18:01:53ID:???
SQLインジェクションって何か分かってないのか?
0676nobodyさん2009/01/04(日) 18:14:18ID:8Obh1++8
>>674
それは
MySQL→PHP
というデーターの流れだよね。

その場合は、htmlspeなんとかで、タグのサニタイズをするべき。
理由はXSSやCSRF.


もし、
PHP→MySQL
というデーターの流れであれば、それは
データーベースにデーターをつっこむわけだから、
適切にエスケープしないと、SQLインジェクションされる。
この時は、mysql_real_escape_stringなんちゃらを使う。
またはPDO+プリペアードステートメントを使えば自動でやってくれる。
0677nobodyさん2009/01/04(日) 18:15:42ID:???
サニタイズ(笑)
0678nobodyさん2009/01/04(日) 18:47:22ID:8Obh1++8
http://www.devshed.com/c/a/PHP/Using-PDO-Objects-in-PHP-5/1/

このページの記述が理解できん
openとcloseが、まったく同じではないのか??

// example opening a connection to SQLITE 2 (available in PHP 5.1)
$dbh= new PDO('sqlite2:/databases/mydb.sq2');


//**************************************************
// example closing a connection to SQLITE 2
$dbh= new PDO('sqlite2:/databases/mydb.sq2');
0679nobodyさん2009/01/04(日) 18:48:46ID:8Obh1++8
もう既に公式ページからはSQLite2はダウンロードできなくなっているし、
SQLite3に以降したほうがいいのか?

しかしxamppではいまだにSQLite2だし、
PHPにデフォルトでついてくるSQLiteも2のままだ。


SQLite3+PDOで使えるレンタルサーバーを探したほうがいいのか?
0680nobodyさん2009/01/04(日) 19:00:08ID:8Obh1++8
今、サーバーのphpinfoを見てみたんだが、

PDO
PDO support enabled
PDO drivers sqlite2, sqlite

こうなっているんだが、

「sqlite」
っていうのは、もしかしてsqlite3のことなのか?
0681nobodyさん2009/01/04(日) 19:01:27ID:8Obh1++8
pdo_sqlite
PDO Driver for SQLite 3.x enabled
PECL Module version (bundled) 1.0.1 $Id: pdo_sqlite.c,v 1.10.2.6.2.3 2007/12/31 07:20:10 sebastian Exp $
SQLite Library 3.3.7

って書いてある。3って理解でいいよな?
0682nobodyさん2009/01/04(日) 19:09:57ID:???
サニタイズというのは表現が抽象的だから好きになれないんだよな。
HTMLタグをエスケープするならそういえばいいし、SQLエスケープならそう言えばいい。
俺の周りで「サニタイズ」を好き好んで使う奴って無能ばっか。バリデーションとサニタイズの区別もつかないようなアホとか。
まあ、>676の指摘は全面的に正しいから別にいいんだけどな。
0683nobodyさん2009/01/04(日) 19:11:19ID:8Obh1++8
>>682
漏れの説明ってすっげーわかりやすくて正確だろ?
お前達みたいなゴミグラマとはセンスが違うんだよ!
0684nobodyさん2009/01/04(日) 19:13:26ID:hMI53W82
$this->{$obj_name}->method();

こういう事がしたいんですが、出来ません。
プロパティでないと中括弧と変数を使った記法は出来ないのかと思いますが
どう書けば出来ますか?
0685nobodyさん2009/01/04(日) 19:13:28ID:???
>>682
>>676の記述でCSRFがエスケープと関連しているという書き方は間違い。
0686nobodyさん2009/01/04(日) 19:14:10ID:???
覚えたてで嬉々として使いたい頃なんだろ
0687nobodyさん2009/01/04(日) 19:14:16ID:???
>>683
いつも、他人のふりして煽ってる質問君、
煽る時はsageた方がいいよ
0688nobodyさん2009/01/04(日) 19:15:34ID:???
>>687
おまえ、どれだけ悲惨な環境で育ったんだ?
今現在、少しは生活が良くなったのか?
だとしたら良かったな。 抑圧された悲惨な生活から何とか抜け出せたなら、次は知性とか教養を身につけないとな。
血の滲むような努力をしてきた君なら、きっと教養は身につけられるだろうから頑張れよ。
もしかしたら、その曲がりきった卑しい根性も、少しは矯正できるかもしれないぞ。
0689nobodyさん2009/01/04(日) 19:17:03ID:hMI53W82
>>684
事故解決しました勘違いでした。
0690nobodyさん2009/01/04(日) 19:17:31ID:???
>>684
何がしたいの?
オブジェクトの何をそこに入れたいの?
0691nobodyさん2009/01/04(日) 19:18:06ID:???
>>688
応援ありがとう
0692nobodyさん2009/01/04(日) 19:22:19ID:???
おじゃるおじゃるおじゃる
[email protected]
0693nobodyさん2009/01/04(日) 19:23:04ID:???
>>691
底辺で生きてる奴はちょっと自分が優位だと思うと豹変するんだよねぇ。
些細なミスをした店員を執拗に罵倒してる客とかたまに見るけど、
普段怒られてばっかで、怒ることに慣れてないから必要以上に相手を罵っちゃうんだろうな。
加減が分からないって可哀想だよね。
0694nobodyさん2009/01/04(日) 19:29:53ID:???
>>693
自己紹介乙
0695nobodyさん2009/01/04(日) 19:49:23ID:+Z0x0JrP
ライオンってでけぇんだな
06966742009/01/04(日) 20:47:58ID:csR3yzKg
>>676
分かり易い解説ありがとうございました。
すっきりしました


お礼が遅くなり申し訳なかったです。
0697nobodyさん2009/01/04(日) 22:08:48ID:???
>>696
漏れの説明わかりやすいだろ?
漏れの説明が世界一わかりやすい。
今度本出したら真っ先に買え。
0698nobodyさん2009/01/04(日) 22:47:43ID:???
PHPからXMLデーターベースって使えるの?
0699nobodyさん2009/01/05(月) 00:56:51ID:g6qRsOWr
ORマッパーっていうのは
フレームワークについてくるもので、
単独で使うものではない?(PDOのように)
0700nobodyさん2009/01/05(月) 01:18:34ID:???
いや、そんな事は無い。
単独で公開されてるORマッパだってあるし、フレームワーク付属のO/Rマッパだってそのまま単独で使える事が多い。
0701nobodyさん2009/01/05(月) 03:26:50ID:g6qRsOWr
自分のパソコンの中にPDOのSQLite3の
ドライバ、インストールするのはどうやるの?
0702nobodyさん2009/01/05(月) 03:47:24ID:g6qRsOWr
php.iniってシフトJISで保存でいいの?
0703nobodyさん2009/01/05(月) 07:04:48ID:???
本当に質問したいときと、答えはいらないけど書くときを
みんなにわかりやすくしたら反感買わないと思うよ?

答えが出たらそれで納得したのかどうかぐらいはレスした方がいいだろうし
前の質問に回答が出る前に別の質問立てたら、スパムだと思われるよ。

反感を買うために書いてるんならスルーしてくれていいけど
0704nobodyさん2009/01/05(月) 08:44:11ID:???
ID:g6qRsOWrアボーン
0705nobodyさん2009/01/05(月) 14:19:36ID:SSLU+Cc/
PHP5です
レンタルサーバーでセキュリティーの問題からallow_url_fopenがOFFになっており
getimagesizeで外部の画像の大きさ等の情報を取得できず困っています
curlを使いgetimagesizeみたいに画像情報を配列で返してくれる関数というのはあるのでしょうか?
それともcurlで1度画像をローカルに取得し、それをgetimagesizeするしか方法はないのでしょうか?
0706nobodyさん2009/01/05(月) 14:57:59ID:???
>>705
allow_url_fopen だって、内部的には一度画像をローカルに取得して、
サイズをとってるだけだよ。
0707nobodyさん2009/01/05(月) 15:10:43ID:SSLU+Cc/
>>706
ありがとうございます
curlで1度ローカルに画像を保存しても極端に重くはならないということですね
0708nobodyさん2009/01/05(月) 17:28:48ID:???
クラスのプロパティやメソッド一覧を出力したいのですが
何かそのような関数はありますでしょうか?
継承したものも全て出力したいです
07097082009/01/05(月) 17:29:20ID:l+1z1H6j
すみませんID出し忘れました
0710nobodyさん2009/01/05(月) 18:09:47ID:???
>> 708
これでいけるはず

Reflection::export(new ReflectionClass('クラス名'));
0711nobodyさん2009/01/05(月) 18:22:51ID:l+1z1H6j
>>710
おーこれはスゴイ!
希望通りのものを取得できました
どうもありがとうございました
0712nobodyさん2009/01/05(月) 18:49:49ID:2utmAeel
テキストファイルのみで保存・編集をしたいと思っています。

編集する時の手順は
1:ファイルを読み込む
2:編集する箇所を置換(編集しない場合は元のデータを挿入)
3:編集後の内容を書き込み

と言った流れで良いのでしょうか?
それとも「指定行を更新」というような事が出来るのでしょうか?
0713nobodyさん2009/01/05(月) 19:00:16ID:???
>>712
編集手順はあってる
読み込んだ文字列から新たな文字列を作成してそれを書き込む

>それとも「指定行を更新」というような事が出来るのでしょうか?
配列に読み込めば擬似的に可能だけど
結局全て読み込んで新しい文字列を作って新規に書き込むという点は変わらない
07147122009/01/05(月) 19:36:16ID:???
>結局全て読み込んで新しい文字列を作って新規に書き込むという点は変わらない

なるほど。では自分が712に書いた方法で作成していきます。
回答ありがとうございました。
0715nobodyさん2009/01/05(月) 20:41:50ID:CQeOYLFz
info.phpってファイルがあるんですが、そこにはMYSQLのユーザ名やパスワード・・・があります。
ドキュメントルートに置くのはセキュリティ的によろしくないと聞いたので
ドキュメントルート直下に置きたいのですが相対パスが間違ってるって言われます;;
さくらインターネットを使ってます
ご存知の方よろしくおねがいします
0716nobodyさん2009/01/05(月) 20:54:53ID:???
落ち着け
0717nobodyさん2009/01/05(月) 20:56:32ID:???
つ絶対パス
0718nobodyさん2009/01/05(月) 21:15:49ID:g6qRsOWr
PDO+SQLite3で接続しようと思ってたんだけど、
PDOつかわないでO/Rマッパー使った方がいいの?
その場合、O/Rマッパーは何を使えばいい?
0719nobodyさん2009/01/05(月) 21:16:21ID:g6qRsOWr
レンタルサーバーにインストールされている
sqlite3のバージョンを調べるにはどうしたらいい?
0720nobodyさん2009/01/05(月) 21:16:58ID:g6qRsOWr
>>715
できればpublic_htmlと同じ階層においたほうがいい。
ブラウザで見れないところ。
0721nobodyさん2009/01/05(月) 21:30:11ID:???
それ見れるだろw
0722nobodyさん2009/01/05(月) 22:00:50ID:IAJIgrKJ
技術的な質問とは少し反れますが

デザインパターンとは今PHPの現場では必須の技術ですか?
PHPで就職を考えてて今デザインパターンを勉強してるんですが
なかなか考え方に慣れなくて・・・
皆さん当たり前に使えるものなんですかね?
0723nobodyさん2009/01/05(月) 22:03:30ID:???
>>721
見れません。
0724nobodyさん2009/01/05(月) 22:09:16ID:CQeOYLFz
ぎゃあ

>>717
絶対パスでも無理でした。
もう一度調べてきます。
0725nobodyさん2009/01/05(月) 22:23:09ID:g6qRsOWr
SQLiteに接続するのに、
PDOとO/Rマッパーと、
どちらを使うべきか検討しているのだが、

(1)PDOのメリット
(2)PDOのデメリット

(3)O/Rマッパーのメリット
(4)O/Rマッパーのデメリット

をそれぞれ教えてくれ。

それと、もしO/Rマッパーを使うなら
CakePHPについているのと同じのを
使うつもりです。
0726nobodyさん2009/01/05(月) 22:33:12ID:???
無事解決しました
ありがとうでした。
またお世話になります
0727nobodyさん2009/01/05(月) 22:35:53ID:EpBVQO6B
PHP5とApacheをLinux上で使用する場合、
Apacheは 2.2系でも大丈夫なんでしょうか?
PHPの本家マニュアルを見ると2.0系のことしか書いてありませんでした。
0728nobodyさん2009/01/05(月) 22:51:07ID:???
>722
OOP自体からして覚束ない奴なんかも結構多いのがPHP開発者の実情だから大丈夫。
流石にクラスの概念や継承などといった機能はわからないとしんどいかもしれないが、そこも職場次第。
そういった基本さえ分かってれば、経験を積めば難しいパターンも使いこなせるようになる。
問題は、いつ何を使うかだからな。「あ、なんかこれってアレに近いかも」とか思える程度に記憶の片隅にあればじゅうぶん。
OOPの基礎がしっかりしてりゃ、後からパターンを取り入れるようなリファクタリングすればいいだけの話だしな。

>725
手続き型に近い書き方をするならPDOと相性がいい。
関数型言語に近い書き方ならO/Rマッパ。

O/Rマッパの利点はコード記述量が少なくて済む事。
欠点はちょっと複雑な事をしようとするとすぐ生SQL書かないといけなくなる事。
掲示板のような、DBアクセス部が簡単なものはO/Rマッパが向いている。
経理処理など、複雑なデータ処理が入るなら最初からPDO経由でSQLを書いたほうがいい。
0729nobodyさん2009/01/05(月) 23:07:49ID:iF7qEbUz
PHPで楽天商品ランキングのAPIを表示させたいんですが、googleで検索してもみつからずほとほと困っています。

詳しい方教えてください。おながいします。
0730nobodyさん2009/01/06(火) 00:11:46ID:W/IomqEG
>>729へ
http://plaza.rakuten.co.jp/webservice/2000
これしか見当たんない。
0731nobodyさん2009/01/06(火) 02:34:14ID:rh+yNOKs
レンタルサーバーにインストールされている
SQLiteのバージョンの確認をしたいんだが、
どうやったらいいんだ?

自分のパソコンの中にあるSQLiteのバージョンの
確認だったら
http://www.dbonline.jp/sqliteinstall/install/index3.html
この方法でできるんだが、
レンタルサーバーの場合は、どうしたらいいんだ?
0732nobodyさん2009/01/06(火) 02:36:59ID:???
レン鯖に情報が出されているはずなんだが
鯖サイトチェックするか、問い合わせしてみたら?
0733nobodyさん2009/01/06(火) 02:48:32ID:???
ID:rh+yNOKsアボーン
0734nobodyさん2009/01/06(火) 02:57:21ID:rh+yNOKs
>>732
SQLite3はexeを一個置くだけでインストール完了するので、
自分で勝手に自分のディレクトリにアップロードすると
いうのではダメなのかな?

サーバー側が置いたSQLiteが優先されてしまう?
0735nobodyさん2009/01/06(火) 02:58:26ID:???
>>733
警察に通報しました。
0736nobodyさん2009/01/06(火) 03:36:08ID:???
>>735
0737nobodyさん2009/01/06(火) 03:40:24ID:???
>>723
見れる
0738nobodyさん2009/01/06(火) 03:42:31ID:???
exe(笑)
0739nobodyさん2009/01/06(火) 03:45:38ID:???
>>731
phpinfoで確認しろ雑魚
聞けば解決すると思ってるゆとりだから
phpinfo見ればわかりそうだということも予測できない
いつまでたっても成長しない
0740nobodyさん2009/01/06(火) 03:53:25ID:rh+yNOKs
>>739
phpinfoのどこを見ればいい?
0741nobodyさん2009/01/06(火) 04:00:06ID:???
phpinfo(8);
0742nobodyさん2009/01/06(火) 04:27:51ID:rh+yNOKs
SQLite
SQLite support enabled
PECL Module version 2.0-dev $Id: sqlite.c,v 1.166.2.13.2.11 2008/12/01 12:28:27 felipe Exp $
SQLite Library 2.8.17
SQLite Encoding iso8859

↑これの中のどこを見ればいい?
0743nobodyさん2009/01/06(火) 04:28:59ID:???
テンプレ無視してPDO、SQLite絡みの質問してくる奴はNGに入れておけ
ここ最近DB板のSQLiteスレでも迷惑を掛けてるガチキチと同一人物
0744nobodyさん2009/01/06(火) 04:32:20ID:rh+yNOKs
●コマンドラインツールのコマンド名は、SQLite2がsqliteで、SQLite3がsqlite3。
●PDOのドライバ名は、SQLite2がsqlite2で、SQLite3がsqlite

↑これどうにかならないのか??,
0745nobodyさん2009/01/06(火) 04:32:53ID:???
>>743
警察に通報しました
0746nobodyさん2009/01/06(火) 07:17:12ID:???
あぁ、そういえば、C++の宿題スレにも出没して嫌がられてたなww
0747nobodyさん2009/01/06(火) 10:08:08ID:???
最近どこもgdgdだと思ったら、おれの読んでるとこばかりじゃないか・・・
0748nobodyさん2009/01/06(火) 13:22:09ID:???
PHP5.2.5 @ winXP

abstract class parent{
abstract function _exe();
static function exe(){
self::_exe();
}
}
class child extends parent{
static function _exe(){
echo 'child';
}
}

呼ぶと、Cannot call abstract method parent::_exe(); ってエラーをはいてしまう。
self:: を子クラス内で呼ぶとなぜか親クラス内のメソッドが呼ばれてる。
子クラスにもう一度、exeメソッドを定義しなおすしかありませんか?
07497482009/01/06(火) 13:22:40ID:d951qjNM
ID出し忘れました。
07507482009/01/06(火) 13:24:23ID:d951qjNM
「呼ぶと」が何かわかりにくいので追記。
連レスすみません。

child::exe(); を実行すると Cannot call abstract method parent::_exe(); が出てきます。
0751nobodyさん2009/01/06(火) 13:33:44ID:???
>>748
exe()が実際に書かれたクラスはabstractだよね。だから、selfはabstractクラスを指している。
abstractクラスのabstractメソッドは呼べないから、そのまんまだけど?
07527482009/01/06(火) 13:35:04ID:d951qjNM
自己解決しました。
マニュアルにあったのね。

遅延静的束縛
ttp://jp2.php.net/manual/ja/language.oop5.late-static-bindings.php

とりあえず、5.3.0までダメなのか……。
どうしたものか。
■ このスレッドは過去ログ倉庫に格納されています