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

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

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

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

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

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

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0753nobodyさん2009/11/02(月) 18:58:04ID:???
>>751
http://www.hedgerwow.com/360/dhtml/base64-image/demo.php
07547512009/11/02(月) 18:58:15ID:???
>>752

Linuxです。サーバーの設定も自由に変更できます。
07557512009/11/02(月) 19:01:23ID:???
>>253

ありがとう。
0756nobodyさん2009/11/03(火) 00:57:00ID:OxH3Rb8V
質問です、
PHPの言語仕様として確認したいのですが、
1リクエストごとにstaticメソッドであろうが毎回PHPのリソースをメモリに読み込んで、
レスポンスを返した時点でメモリ破棄する。
そのため、複数のリクエスト間での共有ができず、たとえばDBのコネクションプール
などという考え方は基本ない。であっていますか?
0757nobodyさん2009/11/03(火) 02:25:30ID:???
言語仕様(標準ライブラリ)の範疇で言えば、そう。
たいていの言語は、別々に起動された、親子関係
でないプロセス間でソケットを共有する方法は、
言語仕様にはないと思う。
0758nobodyさん2009/11/03(火) 05:32:26ID:???
関係ない質問してごめん。
SpeedyCGIみたいな常駐プログラムを使ったらDBコネクション繋ぎっぱなしできるよね?
それをphpから呼び出したら、プログラム呼び出しののオーバーヘッドとDB接続のオーバーヘッド天秤にしても常駐の方が早い希ガスだけどどうなの?
あと、phpでSpeedyCGIみたいシステムないの?
0759nobodyさん2009/11/03(火) 10:19:58ID:???
DBコネクションプールといえばpgpoolとかあるけど。
MySQLならSQLrelayとか。
0760nobodyさん2009/11/03(火) 10:39:36ID:???
phpはモジュールで動かしてる場合が多いから・・・
0761nobodyさん2009/11/03(火) 21:21:41ID:ppv8Lxeq
ちょっと質問。
wikipediaで携帯のIPアドレス一覧があって、それを元にアクセスした人のIPが携帯なら携帯用のページに飛ばすのをPHPで以前に作ったんだけど
知らない間に携帯用のIPアドレスが増えてるみたいで、修正しようかと思うんだけど、結局イタチごっこだから
シンプルにユーザーエージェントで分別しようかと思うけどそれだとPCで偽装もできるので
ちゃんと的確に分けられる方法教えて。
0762nobodyさん2009/11/03(火) 21:23:10ID:???
携帯依存文字でYES・NOでもやってろ
0763nobodyさん2009/11/03(火) 21:34:29ID:???
わざわざUA偽装してアクセスするのは携帯用ページが見たいからでしょ
だから普通にUAで振り分ければいいとおもうが
0764nobodyさん2009/11/03(火) 21:38:57ID:???
>>761
ケイタイ用のIPを常に更新して、IPでキャリアを判別するサイトのサービスを始めるのだ!
0765nobodyさん2009/11/03(火) 23:00:04ID:Hf2P9qWB
phpのApacheの設定が全くできません!Vistaです。本に書いてある通りにしても、ブラウザに乗せるとダウンロードダイアログが出ます
助けてください
0766nobodyさん2009/11/03(火) 23:08:14ID:ppv8Lxeq
確かに携帯用のページが見たくて偽装するんだろうし、別に携帯用ページをPCで見られて困ることはないよ。
だけど、UAの文字列の一部で携帯かPCかを判断すると、今後携帯キャリアがUAの仕様を変えた時に、
携帯だかPCだか判断できずに、携帯なのにPC用ページを表示してサイズでかすぎて表示できないとかだと最悪でしょ。

妥協してユーザーエージェントでやるとするといくつあるの?
ドコモ、au、ソフトバンク、ボーダフォン、J-PHONE、あと何?
ウィルコムとかイーモバイルとかも固有のUAあるの?ディズニーモバイルは?あとiフォンもある?
0767nobodyさん2009/11/03(火) 23:42:05ID:???
俺はIPでやってるけど、ホスト名でもいいんじゃないの振り分け
0768nobodyさん2009/11/03(火) 23:44:16ID:???
PEAR::Net_UserAgent_Mobileは?
0769nobodyさん2009/11/04(水) 04:13:04ID:???
>>759
トンクス。
でも SQLRelay いれたら遅くなったって意見が多くてちょっとガッカリ
07706792009/11/04(水) 09:18:30ID:???
規制ががが
>>720
・・・申し訳ない。
以前あったレスからJavascriptは使わないと決めて
元々記述したJsコードを全部削除してPHPに実装しなおしていましたが
報告忘れてました

>>721
A1とかA2とかは、それぞれupdateでsetする内容が違うだけ。
むしろコレなら変数で勝手に変わる様にしたほうがいいのかもしれないですが・・。

>>722
一応削除はしてます。

>>723
諦めたらそこで終わりじゃないですか??

>>724
はい。実はJavaはやっていたのですが
どうもHTMLやらJavascriptやらPHPやらとくると・・どうにも
07716792009/11/04(水) 09:19:55ID:???
>>726
まだまだ若いですよ。上司には当然教えてくださる方もいないので独学になりますが。
いかんせん会社が大きく無いのでしょうがないです。

>>727
本・・ですねえ。
でも今月はCiscoの本やらいっぱい買ってしもたorz
経費で落ちそうなら考えてみます。


今のところ一応Formタグを追加し、typeをSubmitにして飛ばすようにしてます。
次のphpでname属性から拾ってきたものを取り上げ、PHP側のif分岐等でのマッチング査定をしつつ
その先で上書き処理、という流れで、やっていくつもりです。
0772nobodyさん2009/11/04(水) 09:50:46ID:???
>>765
それ、Apacheの問題であってPHPのじゃないじゃん。

<httpd.conf>
AddType application/x-httpd-php .php
PHPIniDir [PHP.iniのあるディレクトリ]
LoadModule php5_module [php?apache*.dllへのフルパス]

書いたらApacheの再起動。
0773nobodyさん2009/11/04(水) 13:15:10ID:+cyJ/kJv
あのさぁ、まずはちょっと聞いてくれ。

ドキュメントルート(サイトのルート)の中の一つのフォルダを完全にPHP使えないようにしたい。
そうしないとそこがアップロード用のファイル保存フォルダになっているので
PHPのファイルをアップされブラウザでファイルをアクセスされると危険。unlink()とかされたら完全に終わる。
かと言ってアップ時に、拡張子が.phpのファイルをはじくとかだとそれも困るし、そのファイルの内容をチェックするのも大変。
.htaccessファイルに、拡張子.phpは.htmlとするように書いてもいいけど.php5とかPHPとして動く拡張子が他にもあるから対処しきれない。

で、特定のフォルダにだけPHPを使わせない機能ないの?

もしくはアパッチでドキュメントルート以外のフォルダを作り、

C:/root_A(PHP可能)
C:/root_B(PHP不可)
として
http://ドメイン/root_B以下にアクセスがあった時はC:/root_B/index.htmlを表示させるとかできないかな?
バーチャルホストじゃなくドメイン同じで二つのルートを使い分けるって事。
0774nobodyさん2009/11/04(水) 13:18:32ID:+cyJ/kJv
今書いててふと疑問に思ったんだけど、レンタルサーバーって複数の人が使ってて
同じドライブに複数の人のルートがあると思うけど他人のファイルをunlink()したりできないのは何で?
0775nobodyさん2009/11/04(水) 13:22:13ID:???
FOR($i=0;;$i++){

PRINT 'マンコ';

}

初めて作ったプログラムがこれ。
0776nobodyさん2009/11/04(水) 13:26:07ID:???
>>773
apacheのDirectory設定でできるよ
0777nobodyさん2009/11/04(水) 13:31:39ID:???
>>774
一つはパーミッション。
削除権限はそのファイルが含まれているディレクトリのパーミッションによるが
777とかしてたら消せる。
でもphpだと全ユーザーが同じ実行ユーザーになる場合もあるので
phpのSafeModeを使う。
これは、実行ファイルのオーナー(実行時のユーザーではない)が
他のオーナーのファイルをいじれなくする仕組み。
0778nobodyさん2009/11/04(水) 16:27:43ID:+cyJ/kJv
>>776-777
ありがとう。ちょっとググってみるよ。
0779nobodyさん2009/11/04(水) 17:03:15ID:???
そういや、拡張子で制御は把握しきれないから・・・とか書いてるけど
基本的にhttpdは拡張子で実行するか決めてるんだから
拡張子で制限すればいいはずだよ。
0780nobodyさん2009/11/04(水) 17:37:09ID:???
>>773
phpファイルはアップロード禁止にしたらいいんじゃない?
どうしてもアップロードしたい場合はZIPって手もあるし
0781nobodyさん2009/11/04(水) 18:05:34ID:???
>>773
Options -ExecCGI -Includes -MultiViews
php_flag engine off
こんな感じで.htaccessを設定したらCGIとPHPは動かなくなるはず
0782nobodyさん2009/11/05(木) 02:39:02ID:bdU2dbgu
http://example.com/ref/abc
というURLでアクセスしたら
http://example.com/ref/index.php?id=abc
の結果を返すにはどうしたらいいですか?
0783nobodyさん2009/11/05(木) 02:43:08ID:???
mod_rewrite
0784nobodyさん2009/11/05(木) 02:56:01ID:bdU2dbgu
>>783
ありがとう
0785nobodyさん2009/11/05(木) 09:23:02ID:???
FOR($i=0;;$i++){

PRINT 'パイズリ';

BREAK;
}

二番目に作ったプログラムがこれ。
0786nobodyさん2009/11/05(木) 10:17:21ID:???
for ($i = 0; i <= 10000; $i++) {
 print "まんこ\n";
}
print 'な? 9999の次でも1に戻るってことは無いだろ?';
0787nobodyさん2009/11/05(木) 10:31:55ID:???
あたまおかしい
0788nobodyさん2009/11/05(木) 12:50:44ID:???
やっぱり大量規制でいいや。
0789nobodyさん2009/11/05(木) 13:16:33ID:???
てst
0790nobodyさん2009/11/05(木) 15:22:19ID:17l6YWCO
ユーザー関数は、あちこちのページで使い回すから当然別のファイルにして、その都度インクルードとかするでしょ。

index1.php
↑インクルード
user_func.txt
↓インクルード
index2.php

でもこうなるとindex1.phpにアクセスするということはuser_func.txtにもアクセスする事になるので、鯖に負担がかかる。呼び込むファイルが増えればなおさら。

負荷を無くすにはどうしたらいいでしょうか?

個人的にできたらいいなと思うのは、この様な自作関数もメモリ上に置けるようにしてほしい。
最初に鯖を立ち上げた時に読み込んで後は元々ある関数みたいに使いたい。
0791nobodyさん2009/11/05(木) 15:33:59ID:???
>>790
実際、どの程度の負荷がかかってるのさ?

一度user_func.txtが読み込まれれば、2回目からはメモリを見に行くから気にしなくて良いレベルだと思うぞ。
0792nobodyさん2009/11/05(木) 16:22:18ID:17l6YWCO
>>791
えっ?そうなの?って事はindex.phpとかも一回読まれたらメモリ見るの?
知らなかった。どの位の負荷がかかってるかはどうやって調べたらいい?
最近サイトを開くと重いんだよね。特に夜。LAN内のPCからでも遅いから回線が原因じゃないかと思うんだけど
HDDがあれこれファイルを読んだりして追いついていけないのかもって思って。
CPU仕様率は結構低いんだけど。LANもギガビットLANだし、原因がHDDとしか思えないんです。
0793nobodyさん2009/11/05(木) 16:39:49ID:???
>>792
気になるならdataスキーム形式にして埋め込めばいいよ
0794nobodyさん2009/11/05(木) 16:55:33ID:???
>>792
普通は一度ファイルを読み込めば、次回はメモリを参照する。
readで毎回必ずHDDを読んでいたら大変な事になるよ。

CPU使用率がわかってて、DISK周りの負荷は調べてない?
Linuxならiostatとかで見て見なよ、sarが入ってればそれでもいいし。
0795nobodyさん2009/11/05(木) 16:59:36ID:???
>>792
ギガビットは過信しないほうがいい
LANカードやHUBがしょぼかったら無意味
転送量が少なくても一度に大量の接続があれば捌ききれなくなる。
0796nobodyさん2009/11/05(木) 19:35:22ID:???
>>792
世の中にはキャッシュと言うものがあってだな・・・
てか、HDDからの読み込みが気になるくらいでかいファイルなのか?そのスクリプト。
0797nobodyさん2009/11/05(木) 20:31:20ID:17l6YWCO
>>793-795
OSはWindowsなんだけど、とりあえずHDDをSSDとか1万回転のHDDに変えたら速くなりそうな気がするんだよね。
ルータやLANケーブルはそれなりのやつを使ってるけど。
実際商用のサーバーってどうやって負荷計ってるの?そういうフリーソフトないかな?
何を改善すればいいか分からん。

>>796
スクリプトはでかくないよ。ただ動画のダウンロードが多い。これが遅延の原因かも。

あとデータベースとOSのドライブは別のドライブにした方が速い?パーティションじゃなくて完全に個別という意味で。
0798nobodyさん2009/11/05(木) 23:07:04ID:???
>>797
流石にスレ違いだろ。

DISKは複数あったほうが速いにきまっとる
書いてるようにOSとDB分けたほうがいい。
0799nobodyさん2009/11/05(木) 23:39:13ID:???
>790
PHPのファイルは、OSによってディスクから内容がメモリに読まれた上で、インタプリタによって機械語にコンパイルされ、実行される。
ここまでが基礎知識。

で、まず、今どきのOSはディスクからの読み込みをキャッシュする。
つまり、一度読んだファイルはメモリにそのまま持っておいて、更新がなければ次回以降はそいつを使う。
次に、APCやeアクセラレータといったPHP関連ライブラリを使うと、機械語にコンパイルされたコードを使いまわしてくれるようになる。
0800nobodyさん2009/11/05(木) 23:55:44ID:???
>>797
NICかHubが壊れかけてるとか?
とりあえず遅延がどの時点で発生しているのか調べないと。
なんかPHPが原因じゃないっぽい感じがする。
0801nobodyさん2009/11/06(金) 15:02:27ID:uY82lX0B
Tomcat+Javaで、Javaのローカルページ開くと、コンソール画面に出力できるよね
System.out.printlnで
あれ、デバッグですごく便利なんだけど、
EclipseでPHPでできないのかな
0802nobodyさん2009/11/06(金) 15:30:23ID:+6dsWJpT
GoogleSafeBrowsingで質問です

http://www.madirish.net/?article=245
上記を参考にPostgreSQLで作ってみました。
BL取得→DBに保存→webから利用があったらmd5してdbにSELECT発行
という形で作ってみたのですが、BL取得→DBに保存
ここまで上手くいって294,830件のハッシュがDB内に存在する所までは確認できました

ところが実際にwebから本家GoogleSBでBL入りしているようなドメインを送ってもBL判定されません。
どなたかMySQL環境がある方、このソースをまんまで試してみて頂けますでしょうか…。
例として下記
http://www.google.com/safebrowsing/diagnostic?site=4gameranking.com
0803nobodyさん2009/11/06(金) 21:29:10ID:qkr//tmU
変数に値が入っているか入ってないか調べる時

if(isset($val))かif(!empty($val))

if($val != "") か if($val <> "")

では、どちらの方が処理が速いのでしょうか?
0804nobodyさん2009/11/06(金) 22:11:01ID:???
>>803
とりあえず、「empty isset」のキーワードでぐぐってみた方がいいな
0805nobodyさん2009/11/06(金) 23:17:02ID:???
>803
Cのコードを読んでみないとなんとも言えないが、もっとも処理の少ないであろうisset()が最速だと思う。
だけど、そんな速度差を気にしないといけないような案件でPHPを使うほうが間違っているので、どうでもいい。
0806nobodyさん2009/11/06(金) 23:29:19ID:vBz8RCVv
フレームワークを覚えるのに挫折しました
そこでクラスについて勉強したいと思うのですが
フレームワークを覚える前にクラスの使い方を覚えると楽になりますか?


OOP、デザインパターンを覚えてからフレームワークに入るのが王道でしょうか?
プログラミングはPHPが初めてでクラスの基本的なものは分かるのですがクラスだけは敷居が高くて勉強してきませんでした
0807nobodyさん2009/11/06(金) 23:33:04ID:???
フレームワークの製作者になるのが目標でなければ
フレームワークの使い方だけ学べばいいんじゃないかな。
どこにファイルを置いて、こういう名前にして、どういうAPIがあって・・・みたいな。
0808nobodyさん2009/11/06(金) 23:34:14ID:???
クラスなんて書けなくても使えるなら別に困りません。
0809nobodyさん2009/11/06(金) 23:34:43ID:vBz8RCVv
class hello_world
{
private $word = "こんにちは世界さん(^^)";

function view() {
return htmlspecialchars($this->word, ENT_QUOTES);
}
}


$obj = new hello_world();
echo $obj->view();
0810nobodyさん2009/11/06(金) 23:38:43ID:vBz8RCVv
借り物のPCなのでデータベースを入れられないのと使い方がわからないのでちいたんは挫折しました
cakePHPもなんかドキュメントの通りやりましたがこのファイルにこれを書けという意味が理解できなかったため挫折しました
smartyはサンプルみて挫折しました
0811nobodyさん2009/11/06(金) 23:41:26ID:???
phpでstaticとかprivateってつかえる?
0812nobodyさん2009/11/06(金) 23:44:53ID:???
>>811
>>809見ろよ
0813nobodyさん2009/11/06(金) 23:53:40ID:???
ちいたんは挫折しました
0814nobodyさん2009/11/06(金) 23:54:01ID:vBz8RCVv
public
protected
private
が使えます
0815nobodyさん2009/11/06(金) 23:54:54ID:???
ちいたんで挫折してたらこの世に使えるFWなくね?w
あとSmartyはFWでないしな
0816nobodyさん2009/11/06(金) 23:59:14ID:???
symfonyはインストールできましたがドキュメント見ても分からないため挫折しました
ZendFrameworkはドキュメントがたくさんあってまだ読んでないです

フレームワークって新しい言語を覚えるような感じですね
気合入れないとだめですね
08178162009/11/06(金) 23:59:56ID:vBz8RCVv
id出し忘れました
0818nobodyさん2009/11/07(土) 01:02:50ID:???
順を追ってステップアップしていくのが一番だよ
がんばれ!
0819nobodyさん2009/11/07(土) 01:04:33ID:???
ちいたんはコメントないから初心者向きではないよ
0820nobodyさん2009/11/07(土) 10:59:11ID:HHoKTIgI
//検索対象
$array = array("inquiry","support");
//検索する文字
$val = "inquiry_form";
// 検索文字が対象に一致するか
foreach($array as $item){
if(strstr($val,$item)){
//一致した場合の処理
}
}

検索する文字が検索対象に一致するか調べたいと思います。
上のように対象をforeachで回して$valに対象の文字列と一致するか
調べる方法が一番簡単だと思いますが、
検索する文字が複数ある場合、何回も上記の事をしなければいけません。
もう少し効率の良い書き方はないでしょうか?
0821nobodyさん2009/11/07(土) 11:26:41ID:???
>>820
array_map使うと楽です
0822nobodyさん2009/11/07(土) 11:32:59ID:HHoKTIgI
ありがとうございます。ぜひ参考にします。
0823nobodyさん2009/11/07(土) 12:00:25ID:???
function a($a) {
$txt = "aaazzzccc";
if (strstr($txt,$a)) echo "一致\n";
}

$search = array("aaa","bbb","ccc");

$p = array_map("a",$search);
0824nobodyさん2009/11/07(土) 12:23:34ID:???
> 検索する文字が複数ある場合、何回も上記の事をしなければいけません。
別にarray_mapなんか使わなくても単にforeachの二重ループにすればいいのでは?
0825nobodyさん2009/11/07(土) 12:35:53ID:???
質問者は既にforeach使ってるみたいだね
0826nobodyさん2009/11/07(土) 14:40:11ID:???
2重ループwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
0827nobodyさん2009/11/07(土) 14:42:27ID:???
単にin_arrayでいいのでは?
0828nobodyさん2009/11/07(土) 15:07:14ID:???
in_array= 配列に値があるかチェックする

質問では配列に格納された文字列が、変数に格納された含まれているかチェックする

おk?
0829nobodyさん2009/11/07(土) 15:09:30ID:PiVKZwA7
HTML_QuickFormとSmartyの組み合わせだと、1ページに1つのフォームしか作れないんでしょうか?
検索しても複数ページの遷移の件などがヒットして、複数のQuickFormをSmartyに渡す方法が出て来ません
0830nobodyさん2009/11/07(土) 15:29:08ID:???
>>828
日本語でおk
0831nobodyさん2009/11/07(土) 16:00:49ID:???
>>830
in_arrayはお門違いってことが理解できなかったか
外人さん乙
0832nobodyさん2009/11/07(土) 16:58:49ID:???
>>831
えっ・・・?
>検索する文字が検索対象に一致するか調べたいと思います。
0833nobodyさん2009/11/07(土) 17:04:57ID:???
>>820の質問理解してる?
>>832さんよおじゃあin_array使ってコード書いてみろよwww
0834nobodyさん2009/11/07(土) 17:06:46ID:???
>>832
質問者が少々日本語でおkなんだよ。意訳すると
「検索文字列が検索対象に含まれていたら何らかの処理をする、と言うロジックを
検索対象が複数だった場合にスマートに書きたい」
って事だろうからな
0835nobodyさん2009/11/07(土) 17:09:04ID:???
//検索対象
$array = array("inquiry","support");
//検索する文字
$val = "inquiry_form";
// 検索文字が対象に一致するか
foreach($array as $item){
if(strstr($val,$item)){
//一致した場合の処理
}
}


これをin_arrayを使ってどう書くのか激しく興味あるんだけど
0836nobodyさん2009/11/07(土) 17:13:26ID:???
$a=array(1,2,3);
foo($a, array(2,8,9));
てやったとき、両方に2が含まれてるからtrueが返って欲しいんだろうな。
if($a!=array_diff($a, array(2,8,9)))
ってどうよ?
08378362009/11/07(土) 17:14:31ID:???
strstrだったか、失礼しました。
0838nobodyさん2009/11/07(土) 17:19:55ID:???
in_arrayでコードまだ??
0839nobodyさん2009/11/07(土) 17:22:59ID:???
>>827=>>830=>>832逃亡乙
0840nobodyさん2009/11/07(土) 22:43:03ID:CwxQOSeK
constってどういう状況で使うものでしょうか?

class test
{
const hiru_aisatu = "こんにちはっ!!";
const yoru_aisatu = "こんばんは・・・";
const hurarerutoki = "さようなら・・2度と会わないで";
}


echo test::hiru_aisatu;


こんなかんじで書くのと

$hiru_aisatu = "こんにちはっ!!";
$yoru_aisatu = "こんばんは・・・";
$hurarerutoki = "さようなら・・2度と会わないで";

echo $hiru_aisatu;

というふうに書くのはクラス使うほうがスピードは遅い?ような気がするのですが
複数人でコード書く場合はクラスでconst使ったほうがいいでしょうか?
0841nobodyさん2009/11/07(土) 23:45:33ID:???
in_arrayで解決おじさんまだ????????????????
0842nobodyさん2009/11/07(土) 23:57:06ID:???
規制されたままの方が良かったな
0843nobodyさん2009/11/07(土) 23:57:15ID:???
>>840
・定数は上書きされない
・クラス定数は局所化される
0844nobodyさん2009/11/08(日) 02:32:54ID:35LWJ8zb
関数にいくつでも値を渡すことって可能でしょうか?
hoge_func($a)
でも
hoge_func($a,$b,$c,$d,$e,$f)

ただし
function hoge_func($a=null,$b=null...
とは違う方法で
0845nobodyさん2009/11/08(日) 02:56:24ID:???
array
0846nobodyさん2009/11/08(日) 06:59:04ID:???
>>844
http://php.net/manual/ja/functions.arguments.php
0847nobodyさん2009/11/08(日) 08:26:26ID:H7unfEmK
PHPとMYSQLでお気に入りの本を紹介するアプリ(紹介者は複数)を作ってるんだけど、
これまでに紹介された本の一覧ページで、同じ紹介者の本が連続して出ないようにしたいです。
たとえば登録時に10冊まとめて登録できる場合、主キーのIDを表示時のソートのキーにしたら
同じ人の紹介した本ばかりが一画面に出ることになります。
これを防ぐにはどうしたら良いですか?
登録時にランダム数を入れるカラムを作って、それをキーにして表示するのか、
それともPHPだけで出来るでしょうか?
0848nobodyさん2009/11/08(日) 08:59:03ID:???
>>847
全然適当な並びでよければ
ORDER BY RAND()
0849nobodyさん2009/11/08(日) 09:04:36ID:H7unfEmK
>>848
うおおお、凄い! そんなのがあるんだ?
やっぱり聞いて良かったです。ありがとう!
0850nobodyさん2009/11/08(日) 10:30:15ID:atd+IQXc
class test
{
public $v = "test";

public function display() {
return $this->$v;
}
}

$obj = new test;
echo $obj->display();

testと表示させたいのですが表示できません
PHP5.3です
どなたかご指導お願い致します
0851nobodyさん2009/11/08(日) 10:39:14ID:???
>840
class Greeting{
const AT_MORNING = 'おっはー☆';
const AT_DAYTIME = 'こんにちは';
const AT_NIGHT = 'こんばんわー';
const FIRST_MESSAGE = '初めまして';
}
class Love{
const FIRST_MESSAGE = '好きです!';
const END_MESSAGE = 'さようなら…二度と会わないで';
}

echo Greeting::AT_MORNING;

例えば定数の場合、そこまでに通ったコードを全部読んで、定義部を探さないといけない。
クラス定数ならば、格納先のクラスさえ分かれば、そこを探すだけで済む。
勿論、「定数はこのファイルに全部書くこと!」という規則で運用しても同じような効果になるが、「立ち入り禁止」というルールだけ設けるのと柵を作るの、どっちが安全かの差だな。
また、Greeting::AT_MORNINGを読むにはGreetingクラスの存在を知らなければ(requireしなければ)ならない。
つまり、この定数を使っている箇所がどこら辺にあるのか特定しやすい。
あとは、全体から見える位置にものを定義すると、変数名被りや定数名被りが発生しやすい。クラス定数なら、クラスさえ違えば同名になっても問題ない。
0852nobodyさん2009/11/08(日) 10:41:21ID:???
>>850
エラー出力見ようよ。たぶんこの場合ずばりのエラーが出てる。

return $this->$v;
の、vには$要らない。
■ このスレッドは過去ログ倉庫に格納されています