[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 12/07 11:08 / Filesize : 231 KB / Number-of Response : 930
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

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



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

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

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

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

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

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

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

682 名前:nobodyさん mailto:sage [2009/10/26(月) 18:09:49 ID:???]
>>679
そのHOSTからmysqlで同じSQLを手で入れるとどうなるよ
トランザクションの使い方も間違ってる

683 名前:nobodyさん mailto:sage [2009/10/26(月) 18:17:35 ID:???]
>>679
PHPの中身はともかくとしても、

PHP部が実行されて、DBが書き換えられるなどした後、
出力などがなければ<?php から ?>までが無くなったテキストが、
ヘッダなどがついてブラウザに渡され、それからjavascriptが動くので、
ブラウザがうけとるのは
function A1(){
if(confirm('ごまだれですか?')){

}
}
になります。



684 名前:nobodyさん mailto:sage [2009/10/26(月) 19:14:03 ID:???]
function A1(){
if(confirm('ごまだれですか?')){

window.alert('内容を変更しました。')
}
}
抜けてた

685 名前:nobodyさん mailto:sage [2009/10/26(月) 21:38:32 ID:???]
>>683で答えでてるじゃん

686 名前:nobodyさん mailto:sage [2009/10/26(月) 22:16:19 ID:???]
初心者相手に悪いけど、これは吹いたww>>679

687 名前:nobodyさん mailto:sage [2009/10/26(月) 22:27:35 ID:???]
mysqlの問題と思ってる時点でアレだな

688 名前:nobodyさん mailto:sage [2009/10/26(月) 23:39:47 ID:???]
「ごまふあざらあし」が気になってプログラムが進みません!

689 名前:nobodyさん mailto:sage [2009/10/27(火) 00:54:28 ID:???]
クライアントへhtmlを送る時に、ボタンと、押した時にサーバーサイドで実行する
クエリを書いておく事が出来る。
というフレームワークのアイデアを頂きました。
クレームワームの名前は「ごまふあざらあし」にしようと思います。

690 名前:nobodyさん mailto:sage [2009/10/27(火) 10:58:21 ID:???]
ごまだれですか?



691 名前:nobodyさん mailto:sage [2009/10/27(火) 11:16:23 ID:???]
いえ、「ごまふあざらあし」です

692 名前:nobodyさん mailto:sage [2009/10/27(火) 11:34:04 ID:???]
いっそPHPonJavascript HTTP通信で。

693 名前:nobodyさん mailto:sage [2009/10/27(火) 11:44:23 ID:???]
PHP側で実行する内容が、htmlソースから丸見えになるんで良くないなw

694 名前:nobodyさん mailto:sage [2009/10/27(火) 15:59:34 ID:???]
>>693
SQLをクライアントで構築して送信する前システムを思い出した
最悪だな

695 名前:nobodyさん mailto:sage [2009/10/27(火) 19:25:48 ID:???]
"name":"名無し","body":"あいうえお"
このように書かれたテキストファイルから「名無し」「あいうえお」を取得する方法は
正規表現でひとつずつ抜き出すほかにありますか?

696 名前:nobodyさん mailto:sage [2009/10/27(火) 19:26:58 ID:???]
>>695
explode

697 名前:nobodyさん mailto:sage [2009/10/27(火) 19:33:13 ID:???]
>>696
できました!
ありがとうございます

698 名前:nobodyさん [2009/10/27(火) 19:39:41 ID:73GIvY2U]
サーバ変数のQUERY_STRINGのPOST版を取得したいのですがどのようにしたら取れますか?

また、上で取得した文字列を$_POSTのような配列形式に変換したいのですが、そのような関数はありますか?

699 名前:nobodyさん mailto:sage [2009/10/27(火) 19:44:58 ID:???]
意味が分からん
$_REQUEST

700 名前:nobodyさん mailto:sage [2009/10/27(火) 19:59:04 ID:???]
>>698
何もしなくても良いのではないだろうか。



701 名前:nobodyさん mailto:sage [2009/10/27(火) 19:59:55 ID:???]
>>698
POSTされた生のデータが欲しいって事かい?

parse_str(file_get_contents('php://input'), $f);
var_dump($f);

702 名前:nobodyさん mailto:sage [2009/10/27(火) 21:21:52 ID:???]
fopen("php://memory", "r+");

すげえ

703 名前:698 mailto:sage [2009/10/27(火) 21:41:14 ID:???]
>>701
すばらしい。ありがとうございます。

704 名前:nobodyさん [2009/10/28(水) 01:05:41 ID:EMbPGL3Y]
simplexmlについての質問です。

simplexml_load_fileで読みこんだObjectから
$q = $_GET["q"];
echo $xml->item[$q]->name;
としたいのですが、何も表示されません。

echo $xml->item[0]->name;
だと正しく表示され

$q = 0;
echo $xml->item[$q]->name;
でも正しく表示されます。

$q = $_GET["q"];
echo $q;
echo $xml->item[$q]->name;
とした場合は、$qだけが表示されました。

simplexmlでは$_GETが使えないのでしょうか?
解決策をお教えいただきたいです。


705 名前:nobodyさん mailto:sage [2009/10/28(水) 01:09:43 ID:???]
>>704
$qの中身の問題だろそれは

706 名前:nobodyさん [2009/10/28(水) 01:12:57 ID:EMbPGL3Y]
>>705
ありがとうございます!

$q = $_GET["q"]+1-1;
と試してみるとうまくいきました。

ホントにお恥ずかしい限りです・・・

707 名前:nobodyさん mailto:sage [2009/10/28(水) 01:16:08 ID:???]
型違うと検索してくれないんだ?

708 名前:nobodyさん mailto:sage [2009/10/28(水) 01:17:19 ID:???]
$q = (int)$_GET["q"];
でおk

709 名前:nobodyさん mailto:sage [2009/10/28(水) 01:18:34 ID:???]
includeって必要なときにだけ呼び出したほうがいいの?
負荷とかそんなに変わらないのならクラス定義をまとめて最初に読み込んだほうがらくだよね。。。

710 名前:nobodyさん mailto:sage [2009/10/28(水) 01:20:18 ID:???]
えっ



711 名前:nobodyさん mailto:sage [2009/10/28(水) 01:27:19 ID:???]
>>709

>>1

712 名前:nobodyさん mailto:sage [2009/10/28(水) 02:52:06 ID:???]
Javaのimportのようなもんだと思ってるんだろう
ただJavaの場合コンパイラが最適化してくれるので問題ないが
PHPはインタプリタなので最適化のしようがないという
つまり全部includeなんてしたらそりゃ遅くなる

713 名前:nobodyさん mailto:sage [2009/10/28(水) 05:46:33 ID:???]
>>712
なるほど、ありがとう。必要なときにincludeしたほうが良いってことね


714 名前:nobodyさん mailto:sage [2009/10/28(水) 09:18:20 ID:???]
>>695-697
文字列中に,も出てくるかもしれないから
json_decode()を使ったほうがよくない?

715 名前:nobodyさん [2009/10/28(水) 10:42:00 ID:v0axKvNX]
セッションの開始をつげるsession_start()って
セッションを使用する場合は必ずつけなければならないのですよね?
これを記述するのはMVCモデルだとVの部分に記述するのであってますでしょうか?

716 名前:nobodyさん mailto:sage [2009/10/28(水) 10:43:21 ID:???]
コントロールじゃね?

717 名前:716 mailto:sage [2009/10/28(水) 10:45:50 ID:???]
コントロールですか?
ありがとうございます
早速組み方を考えて見ます

718 名前:nobodyさん mailto:sage [2009/10/28(水) 10:47:23 ID:???]
bootstrapだろ

719 名前:679 [2009/10/28(水) 14:53:16 ID:op4mA5/p]
返答遅くなりました。
そうか・・・表示されてる時には既にHTMLとして返ってきてるんですよね。

この場合は、dbedit.phpのようなものを別途つくり
<?php
include("dbedit.php");
A1();
?>
という風にすればいいのかな?

しかし、この場合でも、A1だけではなく、A2,A3と続く様であれば
それの振り分けはどう実装したらいいでしょうか?
ご意見や、実装例等がありましたら、ご教示よろしくお願い致します。

720 名前:nobodyさん mailto:sage [2009/10/28(水) 15:23:46 ID:???]
>>719
まずjavascriptなしでやることを考えてみ。



721 名前:nobodyさん mailto:sage [2009/10/28(水) 15:30:07 ID:???]
ちょっと答え方まちがったかな。

まずそのA1, A2, A3でなにをするのか書かないと。あと関数ってわかってる?振り分けってどういうことするの?

722 名前:nobodyさん mailto:sage [2009/10/28(水) 15:43:14 ID:???]
>>719
A1()って>>679を見る限りJavaScriptのfunctionだろ? 呼べるわけがないw
>>720の通りにまずJavaScriptなしで動くようにしてみたら?
サーバー側でpostされた内容によってSQL発行するだけだよ

723 名前:nobodyさん mailto:sage [2009/10/28(水) 18:25:52 ID:???]
>>679はもう諦めてこれプログラムできる人にやってもらったほうが世のため人のため>>679のためと思うのはおれだけか?

724 名前:nobodyさん mailto:sage [2009/10/28(水) 18:34:44 ID:???]
いきなりいろいろ手をつけすぎだな
javascript無し、DB無しでPHPだけでいろいろ慣れるのが先だな

725 名前:nobodyさん mailto:sage [2009/10/28(水) 18:35:06 ID:???]
A1()で「くろごま」
A2()で「しろごま」
A3()で「ごまふあざらあし」
を処理する気まんまんの>>679にWeb100.0

726 名前:nobodyさん mailto:sage [2009/10/28(水) 23:02:06 ID:???]
>>679
歳幾つ?

727 名前:nobodyさん mailto:sage [2009/10/29(木) 00:12:37 ID:???]
phpとmysqlを同時に説明してる本とか売ってるし それ見た方がいいよね
それと同時にプログラミングの概念について解説してる本を読んだ方がいいのかも
概念が足りてない

728 名前:nobodyさん mailto:sage [2009/10/29(木) 03:46:52 ID:???]
test

729 名前:nobodyさん [2009/10/29(木) 09:54:12 ID:xBLZE2eU]
【OS】cent
【バージョン】php5.2.10

SimpleXMLElementに関する質問です。
mlから特定の属性を持った要素を削除するにはどうすれば良いのでしょうか?
例を挙げると、

『sample.xml』
<?xml version="1.0" encoding="UTF-8" ?>
<library>
  <book id="00001">
    <title>aaa</title>
    <author>Emily</author>
  </book>
  <book id="00002">
    <title>bbb</title>
    <author>John</author>
  </book>
  <book id="00003">
    <title>ccc</title>
    <author>Mike</author>
  </book>
</library>

とした場合、idが「00002」の要素を削除するという感じです。

--続く--

730 名前:729 [2009/10/29(木) 09:56:09 ID:xBLZE2eU]
--続き--

いろいろ調べたところ、

$xml = new SimpleXMLElement('sample.xml', null, true);
unset($xml->book[0]);

で削除は出来るのようですが、配列で何番目という指定ではなくid「00002」の要素を指定して削除し、

<?xml version="1.0" encoding="UTF-8" ?>
<library>
  <book id="00001">
    <title>aaa</title>
    <author>Emily</author>
  </book>
  <book id="00003">
    <title>ccc</title>
    <author>Mike</author>
  </book>
</library>

となる事が目的です。
どうぞよろしくお願いします。



731 名前:nobodyさん mailto:sage [2009/10/29(木) 12:08:53 ID:???]
>>730
foreachで出来た方いたら教えてください。


$xml = new SimpleXMLElement('sample.xml', null, true);
for ( $i = 0 ; $i < count($xml->book);$i++) {
if ( $xml->book[$i]["id"] == " 00002") {
unset( $xml->book[$i] );
}
}
echo $xml->asXML();

732 名前:729 mailto:sage [2009/10/29(木) 23:49:16 ID:???]
>>731
出来ました!
どうもありがとうございます。

確かにforeachだと更に良いかも知れませんね。でも感謝です。


733 名前:nobodyさん [2009/10/30(金) 06:12:51 ID:5l/tuOOs]
以下のようなメールアドレスのうち「@の前部分」を、文字数分だけ*に置換したいのです。
taro@example.com

これだと4文字決め打ちになってしまいます。
preg_replace('/[a-z0-9\.\-\_]+@/i', '****@', $text);

いまのところシンプルに書ける方法で思いつくのは、
長い文字数から順に置換していく方法です。
forなど使えばシンプルには書けそうです。
preg_replace('/[a-z0-9\.\-\_]{10}@/i', '**********@', $text);
preg_replace('/[a-z0-9\.\-\_]{9}@/i', '*********@', $text);
...

でも美しい方法とは思えません。
定石、または美しい方法はありますか?

734 名前:nobodyさん mailto:sage [2009/10/30(金) 08:26:53 ID:???]
>>733
たとえば

$text = "taro@example.com";
echo preg_replace('/([a-z0-9\.\-\_]+)@/ie', "str_repeat('*',strlen('$1')) . '@'", $text);

735 名前:nobodyさん mailto:sage [2009/10/30(金) 10:41:53 ID:???]
例えば

$text = "taro@example.com";
$array = explode('@', $text);
echo str_repeat('*',strlen($array[0])) . '@' . $array[1];

736 名前:nobodyさん mailto:sage [2009/10/30(金) 16:17:27 ID:???]
例えば

$text='taro@example.com';
echo str_repeat('*', strpos($text,'@')).strstr($text,'@');

737 名前:nobodyさん [2009/10/30(金) 17:16:58 ID:5l/tuOOs]
>>734-736
ありがとうございます。e修飾子とかはじめて認識しました。
Yahoo!グループの過去ログのように「メール本文中の署名などの個人情報を隠匿」が目的なので、
>>734の方法で行かせていただこうと思います(目的を書いとくべきでしたごめんなさい)。

精進します。

738 名前:nobodyさん [2009/10/30(金) 20:21:02 ID:k7DoHVtB]
2chの大量規制があったとかのせいか、ここも勢いがないね

phpのソースコードそのものを取り込んで
そのコードを解析する
みたいな手段ってありませんか?

739 名前:nobodyさん mailto:sage [2009/10/30(金) 20:25:31 ID:???]
どう解析するの?

単に構文解析だったら、PHPでPHP用のレキシカルアナライザとパーサ作ればいいんだけど、
それだけやったって面白くないよね、手間なだけで。

何をしたいのかが良く分からん。

740 名前:nobodyさん [2009/10/30(金) 22:48:05 ID:pyIKqVVx]
class test
{
private $ar,$tes;
public function __construct()
{
$this->ar = array('tes');
(ここで 変数 $this->($this->ar[0]) この場合 $this->tes に何らかの値を代入したい)
echo $this->tes;
}
}
$this-> に続く変数名を変数の値で表す方法はありますか?
宜しくお願いします。



741 名前:nobodyさん mailto:sage [2009/10/30(金) 22:52:15 ID:???]
日本語で

742 名前:nobodyさん [2009/10/30(金) 23:25:37 ID:pyIKqVVx]
上のコードで$this->tesに、例えば"b"を代入したいとき、
$this->tes = "b"; と書くのではなく、tesの部分に、"tes"が代入された変数を使いたいのです。

743 名前:nobodyさん mailto:sage [2009/10/31(土) 00:17:51 ID:???]
$var = 'tes';
echo $this->$var;
こんな感じで

744 名前:nobodyさん mailto:sage [2009/10/31(土) 00:38:36 ID:???]
>738
runkit
jp2.php.net/manual/ja/book.runkit.php

745 名前:nobodyさん mailto:sage [2009/10/31(土) 07:26:05 ID:???]
>>743
ああ、一回代入すればいいのですね
思いつきませんでした。ありがとうございます!

746 名前:nobodyさん [2009/10/31(土) 09:17:44 ID:5b/pi/nw]
質問です。
アップローダー作る時にテンポラリのディレクトリから保存用のディレクトリに
ファイルをcopy → もとのテンポラリファイル削除 って流れがあり、
if(copy($tmpFile, $lastFile)){unlink($tmpFile);} 
という感じの処理をすると思います。
しかし条件部分がtrueにならないとき、どうしたら良いんでしょうか?
「コピー失敗しました」みたいなアラート表示すべき? そんなことやってますか?
そもそも、上のif文でのチェックは必要なんでしょうか…
条件成立・不成立をどこまでフォローすべきか悩んでいます。

747 名前:nobodyさん mailto:sage [2009/10/31(土) 15:10:42 ID:???]
move_uploaded_file 使った方がええんじゃないか?

748 名前:nobodyさん mailto:sage [2009/10/31(土) 15:13:55 ID:???]
コピーするのがそのサイト内部処理として必須であるなら(まあそうだろうけど)、
それに失敗したらアップロード処理失敗のエラー返すしかなかろ。

749 名前:nobodyさん mailto:sage [2009/10/31(土) 15:30:20 ID:???]
エラーが発生したときに可能な限り元の状態に戻す設計にした方が良いな
コピー失敗したらそのファイルを削除してメッセージを表示&エラーログを残すとか

750 名前:nobodyさん mailto:sage [2009/11/01(日) 23:38:51 ID:???]
>>740
$this->{$this->ar[0]} = "何らかの値";



751 名前:nobodyさん [2009/11/02(月) 18:13:40 ID:uSMOoO6C]
画像とhtmlを同一のファイルにしたいんですが、
phpでmhtmlを出力するほうほうはありませんか?

752 名前:nobodyさん mailto:sage [2009/11/02(月) 18:43:28 ID:???]
>>751
OSは?

753 名前:nobodyさん mailto:sage [2009/11/02(月) 18:58:04 ID:???]
>>751
www.hedgerwow.com/360/dhtml/base64-image/demo.php

754 名前:751 mailto:sage [2009/11/02(月) 18:58:15 ID:???]
>>752

Linuxです。サーバーの設定も自由に変更できます。

755 名前:751 mailto:sage [2009/11/02(月) 19:01:23 ID:???]
>>253

ありがとう。

756 名前:nobodyさん [2009/11/03(火) 00:57:00 ID:OxH3Rb8V]
質問です、
PHPの言語仕様として確認したいのですが、
1リクエストごとにstaticメソッドであろうが毎回PHPのリソースをメモリに読み込んで、
レスポンスを返した時点でメモリ破棄する。
そのため、複数のリクエスト間での共有ができず、たとえばDBのコネクションプール
などという考え方は基本ない。であっていますか?

757 名前:nobodyさん mailto:sage [2009/11/03(火) 02:25:30 ID:???]
言語仕様(標準ライブラリ)の範疇で言えば、そう。
たいていの言語は、別々に起動された、親子関係
でないプロセス間でソケットを共有する方法は、
言語仕様にはないと思う。

758 名前:nobodyさん mailto:sage [2009/11/03(火) 05:32:26 ID:???]
関係ない質問してごめん。
SpeedyCGIみたいな常駐プログラムを使ったらDBコネクション繋ぎっぱなしできるよね?
それをphpから呼び出したら、プログラム呼び出しののオーバーヘッドとDB接続のオーバーヘッド天秤にしても常駐の方が早い希ガスだけどどうなの?
あと、phpでSpeedyCGIみたいシステムないの?

759 名前:nobodyさん mailto:sage [2009/11/03(火) 10:19:58 ID:???]
DBコネクションプールといえばpgpoolとかあるけど。
MySQLならSQLrelayとか。

760 名前:nobodyさん mailto:sage [2009/11/03(火) 10:39:36 ID:???]
phpはモジュールで動かしてる場合が多いから・・・



761 名前:nobodyさん [2009/11/03(火) 21:21:41 ID:ppv8Lxeq]
ちょっと質問。
wikipediaで携帯のIPアドレス一覧があって、それを元にアクセスした人のIPが携帯なら携帯用のページに飛ばすのをPHPで以前に作ったんだけど
知らない間に携帯用のIPアドレスが増えてるみたいで、修正しようかと思うんだけど、結局イタチごっこだから
シンプルにユーザーエージェントで分別しようかと思うけどそれだとPCで偽装もできるので
ちゃんと的確に分けられる方法教えて。

762 名前:nobodyさん mailto:sage [2009/11/03(火) 21:23:10 ID:???]
携帯依存文字でYES・NOでもやってろ

763 名前:nobodyさん mailto:sage [2009/11/03(火) 21:34:29 ID:???]
わざわざUA偽装してアクセスするのは携帯用ページが見たいからでしょ
だから普通にUAで振り分ければいいとおもうが

764 名前:nobodyさん mailto:sage [2009/11/03(火) 21:38:57 ID:???]
>>761
ケイタイ用のIPを常に更新して、IPでキャリアを判別するサイトのサービスを始めるのだ!

765 名前:nobodyさん [2009/11/03(火) 23:00:04 ID:Hf2P9qWB]
phpのApacheの設定が全くできません!Vistaです。本に書いてある通りにしても、ブラウザに乗せるとダウンロードダイアログが出ます
助けてください

766 名前:nobodyさん [2009/11/03(火) 23:08:14 ID:ppv8Lxeq]
確かに携帯用のページが見たくて偽装するんだろうし、別に携帯用ページをPCで見られて困ることはないよ。
だけど、UAの文字列の一部で携帯かPCかを判断すると、今後携帯キャリアがUAの仕様を変えた時に、
携帯だかPCだか判断できずに、携帯なのにPC用ページを表示してサイズでかすぎて表示できないとかだと最悪でしょ。

妥協してユーザーエージェントでやるとするといくつあるの?
ドコモ、au、ソフトバンク、ボーダフォン、J-PHONE、あと何?
ウィルコムとかイーモバイルとかも固有のUAあるの?ディズニーモバイルは?あとiフォンもある?

767 名前:nobodyさん mailto:sage [2009/11/03(火) 23:42:05 ID:???]
俺はIPでやってるけど、ホスト名でもいいんじゃないの振り分け

768 名前:nobodyさん mailto:sage [2009/11/03(火) 23:44:16 ID:???]
PEAR::Net_UserAgent_Mobileは?

769 名前:nobodyさん mailto:sage [2009/11/04(水) 04:13:04 ID:???]
>>759
トンクス。
でも SQLRelay いれたら遅くなったって意見が多くてちょっとガッカリ

770 名前:679 mailto:sage [2009/11/04(水) 09:18:30 ID:???]
規制ががが
>>720
・・・申し訳ない。
以前あったレスからJavascriptは使わないと決めて
元々記述したJsコードを全部削除してPHPに実装しなおしていましたが
報告忘れてました

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

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

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

>>724
はい。実はJavaはやっていたのですが
どうもHTMLやらJavascriptやらPHPやらとくると・・どうにも



771 名前:679 mailto:sage [2009/11/04(水) 09:19:55 ID:???]
>>726
まだまだ若いですよ。上司には当然教えてくださる方もいないので独学になりますが。
いかんせん会社が大きく無いのでしょうがないです。

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


今のところ一応Formタグを追加し、typeをSubmitにして飛ばすようにしてます。
次のphpでname属性から拾ってきたものを取り上げ、PHP側のif分岐等でのマッチング査定をしつつ
その先で上書き処理、という流れで、やっていくつもりです。

772 名前:nobodyさん mailto:sage [2009/11/04(水) 09:50:46 ID:???]
>>765
それ、Apacheの問題であってPHPのじゃないじゃん。

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

書いたらApacheの再起動。


773 名前:nobodyさん [2009/11/04(水) 13:15:10 ID:+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を表示させるとかできないかな?
バーチャルホストじゃなくドメイン同じで二つのルートを使い分けるって事。

774 名前:nobodyさん [2009/11/04(水) 13:18:32 ID:+cyJ/kJv]
今書いててふと疑問に思ったんだけど、レンタルサーバーって複数の人が使ってて
同じドライブに複数の人のルートがあると思うけど他人のファイルをunlink()したりできないのは何で?

775 名前:nobodyさん mailto:sage [2009/11/04(水) 13:22:13 ID:???]
FOR($i=0;;$i++){

PRINT 'マンコ';

}

初めて作ったプログラムがこれ。

776 名前:nobodyさん mailto:sage [2009/11/04(水) 13:26:07 ID:???]
>>773
apacheのDirectory設定でできるよ

777 名前:nobodyさん mailto:sage [2009/11/04(水) 13:31:39 ID:???]
>>774
一つはパーミッション。
削除権限はそのファイルが含まれているディレクトリのパーミッションによるが
777とかしてたら消せる。
でもphpだと全ユーザーが同じ実行ユーザーになる場合もあるので
phpのSafeModeを使う。
これは、実行ファイルのオーナー(実行時のユーザーではない)が
他のオーナーのファイルをいじれなくする仕組み。

778 名前:nobodyさん [2009/11/04(水) 16:27:43 ID:+cyJ/kJv]
>>776-777
ありがとう。ちょっとググってみるよ。

779 名前:nobodyさん mailto:sage [2009/11/04(水) 17:03:15 ID:???]
そういや、拡張子で制御は把握しきれないから・・・とか書いてるけど
基本的にhttpdは拡張子で実行するか決めてるんだから
拡張子で制限すればいいはずだよ。

780 名前:nobodyさん mailto:sage [2009/11/04(水) 17:37:09 ID:???]
>>773
phpファイルはアップロード禁止にしたらいいんじゃない?
どうしてもアップロードしたい場合はZIPって手もあるし



781 名前:nobodyさん mailto:sage [2009/11/04(水) 18:05:34 ID:???]
>>773
Options -ExecCGI -Includes -MultiViews
php_flag engine off
こんな感じで.htaccessを設定したらCGIとPHPは動かなくなるはず


782 名前:nobodyさん [2009/11/05(木) 02:39:02 ID:bdU2dbgu]
example.com/ref/abc
というURLでアクセスしたら
example.com/ref/index.php?id=abc
の結果を返すにはどうしたらいいですか?

783 名前:nobodyさん mailto:sage [2009/11/05(木) 02:43:08 ID:???]
mod_rewrite

784 名前:nobodyさん [2009/11/05(木) 02:56:01 ID:bdU2dbgu]
>>783
ありがとう

785 名前:nobodyさん mailto:sage [2009/11/05(木) 09:23:02 ID:???]
FOR($i=0;;$i++){

PRINT 'パイズリ';

BREAK;
}

二番目に作ったプログラムがこれ。

786 名前:nobodyさん mailto:sage [2009/11/05(木) 10:17:21 ID:???]
for ($i = 0; i <= 10000; $i++) {
 print "まんこ\n";
}
print 'な? 9999の次でも1に戻るってことは無いだろ?';


787 名前:nobodyさん mailto:sage [2009/11/05(木) 10:31:55 ID:???]
あたまおかしい

788 名前:nobodyさん mailto:sage [2009/11/05(木) 12:50:44 ID:???]
やっぱり大量規制でいいや。

789 名前:nobodyさん mailto:sage [2009/11/05(木) 13:16:33 ID:???]
てst

790 名前:nobodyさん [2009/11/05(木) 15:22:19 ID:17l6YWCO]
ユーザー関数は、あちこちのページで使い回すから当然別のファイルにして、その都度インクルードとかするでしょ。

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

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

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

個人的にできたらいいなと思うのは、この様な自作関数もメモリ上に置けるようにしてほしい。
最初に鯖を立ち上げた時に読み込んで後は元々ある関数みたいに使いたい。



791 名前:nobodyさん mailto:sage [2009/11/05(木) 15:33:59 ID:???]
>>790
実際、どの程度の負荷がかかってるのさ?

一度user_func.txtが読み込まれれば、2回目からはメモリを見に行くから気にしなくて良いレベルだと思うぞ。

792 名前:nobodyさん [2009/11/05(木) 16:22:18 ID:17l6YWCO]
>>791
えっ?そうなの?って事はindex.phpとかも一回読まれたらメモリ見るの?
知らなかった。どの位の負荷がかかってるかはどうやって調べたらいい?
最近サイトを開くと重いんだよね。特に夜。LAN内のPCからでも遅いから回線が原因じゃないかと思うんだけど
HDDがあれこれファイルを読んだりして追いついていけないのかもって思って。
CPU仕様率は結構低いんだけど。LANもギガビットLANだし、原因がHDDとしか思えないんです。

793 名前:nobodyさん mailto:sage [2009/11/05(木) 16:39:49 ID:???]
>>792
気になるならdataスキーム形式にして埋め込めばいいよ


794 名前:nobodyさん mailto:sage [2009/11/05(木) 16:55:33 ID:???]
>>792
普通は一度ファイルを読み込めば、次回はメモリを参照する。
readで毎回必ずHDDを読んでいたら大変な事になるよ。

CPU使用率がわかってて、DISK周りの負荷は調べてない?
Linuxならiostatとかで見て見なよ、sarが入ってればそれでもいいし。

795 名前:nobodyさん mailto:sage [2009/11/05(木) 16:59:36 ID:???]
>>792
ギガビットは過信しないほうがいい
LANカードやHUBがしょぼかったら無意味
転送量が少なくても一度に大量の接続があれば捌ききれなくなる。

796 名前:nobodyさん mailto:sage [2009/11/05(木) 19:35:22 ID:???]
>>792
世の中にはキャッシュと言うものがあってだな・・・
てか、HDDからの読み込みが気になるくらいでかいファイルなのか?そのスクリプト。

797 名前:nobodyさん [2009/11/05(木) 20:31:20 ID:17l6YWCO]
>>793-795
OSはWindowsなんだけど、とりあえずHDDをSSDとか1万回転のHDDに変えたら速くなりそうな気がするんだよね。
ルータやLANケーブルはそれなりのやつを使ってるけど。
実際商用のサーバーってどうやって負荷計ってるの?そういうフリーソフトないかな?
何を改善すればいいか分からん。

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

あとデータベースとOSのドライブは別のドライブにした方が速い?パーティションじゃなくて完全に個別という意味で。

798 名前:nobodyさん mailto:sage [2009/11/05(木) 23:07:04 ID:???]
>>797
流石にスレ違いだろ。

DISKは複数あったほうが速いにきまっとる
書いてるようにOSとDB分けたほうがいい。

799 名前:nobodyさん mailto:sage [2009/11/05(木) 23:39:13 ID:???]
>790
PHPのファイルは、OSによってディスクから内容がメモリに読まれた上で、インタプリタによって機械語にコンパイルされ、実行される。
ここまでが基礎知識。

で、まず、今どきのOSはディスクからの読み込みをキャッシュする。
つまり、一度読んだファイルはメモリにそのまま持っておいて、更新がなければ次回以降はそいつを使う。
次に、APCやeアクセラレータといったPHP関連ライブラリを使うと、機械語にコンパイルされたコードを使いまわしてくれるようになる。

800 名前:nobodyさん mailto:sage [2009/11/05(木) 23:55:44 ID:???]
>>797
NICかHubが壊れかけてるとか?
とりあえず遅延がどの時点で発生しているのか調べないと。
なんかPHPが原因じゃないっぽい感じがする。



801 名前:nobodyさん [2009/11/06(金) 15:02:27 ID:uY82lX0B]
Tomcat+Javaで、Javaのローカルページ開くと、コンソール画面に出力できるよね
System.out.printlnで
あれ、デバッグですごく便利なんだけど、
EclipseでPHPでできないのかな

802 名前:nobodyさん [2009/11/06(金) 15:30:23 ID:+6dsWJpT]
GoogleSafeBrowsingで質問です

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

ところが実際にwebから本家GoogleSBでBL入りしているようなドメインを送ってもBL判定されません。
どなたかMySQL環境がある方、このソースをまんまで試してみて頂けますでしょうか…。
例として下記
www.google.com/safebrowsing/diagnostic?site=4gameranking.com

803 名前:nobodyさん [2009/11/06(金) 21:29:10 ID:qkr//tmU]
変数に値が入っているか入ってないか調べる時

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

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

では、どちらの方が処理が速いのでしょうか?

804 名前:nobodyさん mailto:sage [2009/11/06(金) 22:11:01 ID:???]
>>803
とりあえず、「empty isset」のキーワードでぐぐってみた方がいいな

805 名前:nobodyさん mailto:sage [2009/11/06(金) 23:17:02 ID:???]
>803
Cのコードを読んでみないとなんとも言えないが、もっとも処理の少ないであろうisset()が最速だと思う。
だけど、そんな速度差を気にしないといけないような案件でPHPを使うほうが間違っているので、どうでもいい。

806 名前:nobodyさん [2009/11/06(金) 23:29:19 ID:vBz8RCVv]
フレームワークを覚えるのに挫折しました
そこでクラスについて勉強したいと思うのですが
フレームワークを覚える前にクラスの使い方を覚えると楽になりますか?


OOP、デザインパターンを覚えてからフレームワークに入るのが王道でしょうか?
プログラミングはPHPが初めてでクラスの基本的なものは分かるのですがクラスだけは敷居が高くて勉強してきませんでした

807 名前:nobodyさん mailto:sage [2009/11/06(金) 23:33:04 ID:???]
フレームワークの製作者になるのが目標でなければ
フレームワークの使い方だけ学べばいいんじゃないかな。
どこにファイルを置いて、こういう名前にして、どういうAPIがあって・・・みたいな。

808 名前:nobodyさん mailto:sage [2009/11/06(金) 23:34:14 ID:???]
クラスなんて書けなくても使えるなら別に困りません。

809 名前:nobodyさん [2009/11/06(金) 23:34:43 ID:vBz8RCVv]
class hello_world
{
private $word = "こんにちは世界さん(^^)";

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


$obj = new hello_world();
echo $obj->view();

810 名前:nobodyさん [2009/11/06(金) 23:38:43 ID:vBz8RCVv]
借り物のPCなのでデータベースを入れられないのと使い方がわからないのでちいたんは挫折しました
cakePHPもなんかドキュメントの通りやりましたがこのファイルにこれを書けという意味が理解できなかったため挫折しました
smartyはサンプルみて挫折しました



811 名前:nobodyさん mailto:sage [2009/11/06(金) 23:41:26 ID:???]
phpでstaticとかprivateってつかえる?

812 名前:nobodyさん mailto:sage [2009/11/06(金) 23:44:53 ID:???]
>>811
>>809見ろよ

813 名前:nobodyさん mailto:sage [2009/11/06(金) 23:53:40 ID:???]
ちいたんは挫折しました

814 名前:nobodyさん [2009/11/06(金) 23:54:01 ID:vBz8RCVv]
public
protected
private
が使えます

815 名前:nobodyさん mailto:sage [2009/11/06(金) 23:54:54 ID:???]
ちいたんで挫折してたらこの世に使えるFWなくね?w
あとSmartyはFWでないしな

816 名前:nobodyさん mailto:sage [2009/11/06(金) 23:59:14 ID:???]
symfonyはインストールできましたがドキュメント見ても分からないため挫折しました
ZendFrameworkはドキュメントがたくさんあってまだ読んでないです

フレームワークって新しい言語を覚えるような感じですね
気合入れないとだめですね

817 名前:816 [2009/11/06(金) 23:59:56 ID:vBz8RCVv]
id出し忘れました

818 名前:nobodyさん mailto:sage [2009/11/07(土) 01:02:50 ID:???]
順を追ってステップアップしていくのが一番だよ
がんばれ!

819 名前:nobodyさん mailto:sage [2009/11/07(土) 01:04:33 ID:???]
ちいたんはコメントないから初心者向きではないよ

820 名前:nobodyさん [2009/11/07(土) 10:59:11 ID:HHoKTIgI]
//検索対象
$array = array("inquiry","support");
//検索する文字
$val = "inquiry_form";
// 検索文字が対象に一致するか
foreach($array as $item){
if(strstr($val,$item)){
//一致した場合の処理
}
}

検索する文字が検索対象に一致するか調べたいと思います。
上のように対象をforeachで回して$valに対象の文字列と一致するか
調べる方法が一番簡単だと思いますが、
検索する文字が複数ある場合、何回も上記の事をしなければいけません。
もう少し効率の良い書き方はないでしょうか?



821 名前:nobodyさん mailto:sage [2009/11/07(土) 11:26:41 ID:???]
>>820
array_map使うと楽です

822 名前:nobodyさん [2009/11/07(土) 11:32:59 ID:HHoKTIgI]
ありがとうございます。ぜひ参考にします。

823 名前:nobodyさん mailto:sage [2009/11/07(土) 12:00:25 ID:???]
function a($a) {
$txt = "aaazzzccc";
if (strstr($txt,$a)) echo "一致\n";
}

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

$p = array_map("a",$search);


824 名前:nobodyさん mailto:sage [2009/11/07(土) 12:23:34 ID:???]
> 検索する文字が複数ある場合、何回も上記の事をしなければいけません。
別にarray_mapなんか使わなくても単にforeachの二重ループにすればいいのでは?

825 名前:nobodyさん mailto:sage [2009/11/07(土) 12:35:53 ID:???]
質問者は既にforeach使ってるみたいだね

826 名前:nobodyさん mailto:sage [2009/11/07(土) 14:40:11 ID:???]
2重ループwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

827 名前:nobodyさん mailto:sage [2009/11/07(土) 14:42:27 ID:???]
単にin_arrayでいいのでは?

828 名前:nobodyさん mailto:sage [2009/11/07(土) 15:07:14 ID:???]
in_array= 配列に値があるかチェックする

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

おk?

829 名前:nobodyさん [2009/11/07(土) 15:09:30 ID:PiVKZwA7]
HTML_QuickFormとSmartyの組み合わせだと、1ページに1つのフォームしか作れないんでしょうか?
検索しても複数ページの遷移の件などがヒットして、複数のQuickFormをSmartyに渡す方法が出て来ません

830 名前:nobodyさん mailto:sage [2009/11/07(土) 15:29:08 ID:???]
>>828
日本語でおk



831 名前:nobodyさん mailto:sage [2009/11/07(土) 16:00:49 ID:???]
>>830
in_arrayはお門違いってことが理解できなかったか
外人さん乙

832 名前:nobodyさん mailto:sage [2009/11/07(土) 16:58:49 ID:???]
>>831
えっ・・・?
>検索する文字が検索対象に一致するか調べたいと思います。

833 名前:nobodyさん mailto:sage [2009/11/07(土) 17:04:57 ID:???]
>>820の質問理解してる?
>>832さんよおじゃあin_array使ってコード書いてみろよwww

834 名前:nobodyさん mailto:sage [2009/11/07(土) 17:06:46 ID:???]
>>832
質問者が少々日本語でおkなんだよ。意訳すると
「検索文字列が検索対象に含まれていたら何らかの処理をする、と言うロジックを
検索対象が複数だった場合にスマートに書きたい」
って事だろうからな

835 名前:nobodyさん mailto:sage [2009/11/07(土) 17:09:04 ID:???]
//検索対象
$array = array("inquiry","support");
//検索する文字
$val = "inquiry_form";
// 検索文字が対象に一致するか
foreach($array as $item){
if(strstr($val,$item)){
//一致した場合の処理
}
}


これをin_arrayを使ってどう書くのか激しく興味あるんだけど

836 名前:nobodyさん mailto:sage [2009/11/07(土) 17:13:26 ID:???]
$a=array(1,2,3);
foo($a, array(2,8,9));
てやったとき、両方に2が含まれてるからtrueが返って欲しいんだろうな。
if($a!=array_diff($a, array(2,8,9)))
ってどうよ?

837 名前:836 mailto:sage [2009/11/07(土) 17:14:31 ID:???]
strstrだったか、失礼しました。

838 名前:nobodyさん mailto:sage [2009/11/07(土) 17:19:55 ID:???]
in_arrayでコードまだ??

839 名前:nobodyさん mailto:sage [2009/11/07(土) 17:22:59 ID:???]
>>827=>>830=>>832逃亡乙

840 名前:nobodyさん [2009/11/07(土) 22:43:03 ID: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使ったほうがいいでしょうか?



841 名前:nobodyさん mailto:sage [2009/11/07(土) 23:45:33 ID:???]
in_arrayで解決おじさんまだ????????????????

842 名前:nobodyさん mailto:sage [2009/11/07(土) 23:57:06 ID:???]
規制されたままの方が良かったな

843 名前:nobodyさん mailto:sage [2009/11/07(土) 23:57:15 ID:???]
>>840
・定数は上書きされない
・クラス定数は局所化される

844 名前:nobodyさん [2009/11/08(日) 02:32:54 ID:35LWJ8zb]
関数にいくつでも値を渡すことって可能でしょうか?
hoge_func($a)
でも
hoge_func($a,$b,$c,$d,$e,$f)

ただし
function hoge_func($a=null,$b=null...
とは違う方法で

845 名前:nobodyさん mailto:sage [2009/11/08(日) 02:56:24 ID:???]
array

846 名前:nobodyさん mailto:sage [2009/11/08(日) 06:59:04 ID:???]
>>844
php.net/manual/ja/functions.arguments.php

847 名前:nobodyさん [2009/11/08(日) 08:26:26 ID:H7unfEmK]
PHPとMYSQLでお気に入りの本を紹介するアプリ(紹介者は複数)を作ってるんだけど、
これまでに紹介された本の一覧ページで、同じ紹介者の本が連続して出ないようにしたいです。
たとえば登録時に10冊まとめて登録できる場合、主キーのIDを表示時のソートのキーにしたら
同じ人の紹介した本ばかりが一画面に出ることになります。
これを防ぐにはどうしたら良いですか?
登録時にランダム数を入れるカラムを作って、それをキーにして表示するのか、
それともPHPだけで出来るでしょうか?

848 名前:nobodyさん mailto:sage [2009/11/08(日) 08:59:03 ID:???]
>>847
全然適当な並びでよければ
ORDER BY RAND()

849 名前:nobodyさん [2009/11/08(日) 09:04:36 ID:H7unfEmK]
>>848
うおおお、凄い! そんなのがあるんだ?
やっぱり聞いて良かったです。ありがとう!

850 名前:nobodyさん [2009/11/08(日) 10:30:15 ID:atd+IQXc]
class test
{
public $v = "test";

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

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

testと表示させたいのですが表示できません
PHP5.3です
どなたかご指導お願い致します



851 名前:nobodyさん mailto:sage [2009/11/08(日) 10:39:14 ID:???]
>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しなければ)ならない。
つまり、この定数を使っている箇所がどこら辺にあるのか特定しやすい。
あとは、全体から見える位置にものを定義すると、変数名被りや定数名被りが発生しやすい。クラス定数なら、クラスさえ違えば同名になっても問題ない。

852 名前:nobodyさん mailto:sage [2009/11/08(日) 10:41:21 ID:???]
>>850
エラー出力見ようよ。たぶんこの場合ずばりのエラーが出てる。

return $this->$v;
の、vには$要らない。

853 名前:nobodyさん mailto:sage [2009/11/08(日) 10:41:44 ID:???]
return $this->$v
だと そのクラス内($this)の変数$vが持ってる値の変数になっちゃう
return $this->v
がただしい

854 名前:nobodyさん mailto:sage [2009/11/08(日) 10:45:24 ID:???]
ありがとうございます

>>852-853

855 名前:nobodyさん [2009/11/08(日) 10:46:05 ID:atd+IQXc]
ミス

ありがとうございます
おかげ様で解決できました
>>852-853どうもありがとうございました

856 名前:nobodyさん [2009/11/08(日) 10:55:19 ID:R5NqdoKR]
オブジェクト指向の覚え方についてどなたかご指導お願いします

ここ見て勉強してます
ttp://php.net/manual/ja/language.oop5.php
目次
* はじめに
* クラスの基礎
* Properties
* オブジェクト定数
* クラスのオートローディング
* コンストラクタとデストラクタ
* アクセス権
* Object Inheritance
* スコープ定義演算子 (::)
* static キーワード
* クラスの抽象化
* オブジェクト インターフェイス
* オーバーロード
* オブジェクトのイタレーション
* パターン
* マジックメソッド
* finalキーワード
* オブジェクトのクローン作成
* オブジェクトの比較
* タイプヒンティング
* 遅延静的束縛 (Late Static Bindings)
* オブジェクトと参照
* Object Serialization


この目次を上から順番にやりたいのですがどこまでが基礎の部分でしょうか?

857 名前:nobodyさん mailto:sage [2009/11/08(日) 11:46:29 ID:???]
スレを使ってデバッグするとはお主やるな

858 名前:nobodyさん mailto:sage [2009/11/08(日) 11:47:34 ID:???]
>>855へのレスね


859 名前:nobodyさん mailto:sage [2009/11/08(日) 11:58:07 ID:???]
857 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん
あぼ〜ん

858 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん
あぼ〜ん


860 名前:nobodyさん mailto:sage [2009/11/08(日) 12:02:22 ID:???]
>856
staticまで知ってればとりあえず問題ない



861 名前:nobodyさん mailto:sage [2009/11/08(日) 12:12:54 ID:???]
>>856
「オブジェクト指向の覚え方」(というか学び方)を知りたいんですね?

まずは、
とある言語が「オブジェクト指向的な記述を支援してくれる部分」と、
「オブジェクト指向というもの」自体とを
弁別した方が良いかと。

とある言語で後者を実践するときのものが前者。
そのページで得られるのは、基本的には前者のみ。

OOPそのものへの入門だったら、PHP以外の例えばJavaあたりを使ってOOPの
解説してるとこ覗いた方が良いよ。

それでもその質問に答えるとしたら、上から順番でどこまでってことは無いかな。
>* クラスのオートローディング
↑飛ばしてもいいけど、
>* コンストラクタとデストラクタ
↑飛ばせない
てな感じで。

862 名前:nobodyさん mailto:sage [2009/11/08(日) 12:30:58 ID:???]
Javaが一通り出来るようになればオブジェクト指向はだいたい理解出来るはず
使いこなすにはまだまだだけど

863 名前:nobodyさん mailto:sage [2009/11/08(日) 12:34:58 ID:???]
じゃヴぁじゃヴぁうるせえよks!

864 名前:nobodyさん mailto:sage [2009/11/08(日) 12:41:45 ID:???]
>>862
理解できてるから使いこなせるわけで。 順序逆だz

865 名前:nobodyさん mailto:sage [2009/11/08(日) 12:52:04 ID:???]
PHPみたいな変数に何でも入って、evalもあるような言語に
JavaのOOPを持ち込むのは、混乱の元だろう。
頭固くなるからやめとけ。
初心者はSqueakでもやっとけばいい。

866 名前:nobodyさん [2009/11/08(日) 13:33:48 ID:9EHY5xph]
インスタンスってどういうときに使うんですか?

class SimpleClass{
public $var = 'a default value';
public function displayVar() {
echo $this->var;
}
}
$instance = new SimpleClass();
$className = 'Foo';
$instance = new $className();

ってマニュアルにサンプルが載ってますが
下から1〜3行を
$obj= new SimpleClass();
で済ましたほうが楽だと思うのですがどうなんでしょうか
どなたかご教示お願いします

867 名前:nobodyさん mailto:sage [2009/11/08(日) 13:36:52 ID:???]
済ますも何もSimpleClassではなく別クラスのFooのインスタンスを作ってるように見えるが

868 名前:nobodyさん [2009/11/08(日) 13:41:42 ID:9EHY5xph]
すいませんこれです

www.php.net/manual/ja/language.oop5.basic.php
例3 インスタンスを作成する
<?php
$instance = new SimpleClass();

// 変数を使うこともできます
$className = 'Foo';
$instance = new $className(); // Foo()
?>



869 名前:nobodyさん mailto:sage [2009/11/08(日) 13:46:05 ID:???]
インスタンスを生成したいクラスを動的に指定する場合に便利だよ
autoloadしたい時とかFactoryパターンの時とか

870 名前:nobodyさん mailto:sage [2009/11/08(日) 13:48:04 ID:???]
new演算子の右辺に変数が使えるって例だな
可変変数の一種だ



871 名前:nobodyさん mailto:sage [2009/11/08(日) 13:52:41 ID:???]
可変変数の一種などではなく可変関数
www.php.net/manual/ja/functions.variable-functions.php

872 名前:nobodyさん mailto:sage [2009/11/08(日) 14:29:44 ID:???]
>>866
>$obj= new SimpleClass();

これだってインスタンスを作成してるわけだが・・・

873 名前:nobodyさん mailto:sage [2009/11/08(日) 17:28:03 ID:???]
>>866
クラスってのはクッキー生地の型抜き用の型で、
インスタンスはそれで作られた個別のクッキー(生地)。

抜き型だけあってもそれを使わないと(newしないと)食えるクッキーの存在は生成されない。

てな感じでどうだ?

874 名前:nobodyさん mailto:sage [2009/11/08(日) 17:52:29 ID:???]
>>873
スタティックメソッドは?

875 名前:nobodyさん mailto:sage [2009/11/08(日) 17:55:43 ID:???]
最初に入れる具を決めて皮を作るか、とりあえず具は後で買ってくると決めて皮を作るかの違い

出来るものはどちらにしても肉まん・あんまん・中華まん。

876 名前:nobodyさん mailto:sage [2009/11/08(日) 18:00:44 ID:???]
>868
変数$classNameの値に応じて、生成するインスタンスを変えられる。
class Foo{
function say_name(){
echo 'foo foo foo!';
}
}
class Bar{
function say_name(){
echo 'Bar, bar, BAAAAAR';
}
}

$instance = new $className();
$instance->say_name();

クラスに同じ名前同じ引数のメソッドがあり、その中身のロジックが全然違う場合なんかに使える。

877 名前:nobodyさん [2009/11/08(日) 18:32:26 ID:QzQ1Ze2q]
class test{
 function test(){
  throw new Exception('test');
 }
}

try{
 $test = new test;
 $test->test();
}catch(Exception $e){
 echo $e->getMessage();
}

classからスローした例外って上みたいにキャッチできますか?

878 名前:nobodyさん mailto:sage [2009/11/08(日) 18:59:39 ID:???]
なんで試さんの?

879 名前:nobodyさん [2009/11/08(日) 19:13:09 ID:QzQ1Ze2q]
できた、役に立たない奴らだ

880 名前:nobodyさん mailto:sage [2009/11/08(日) 20:10:53 ID:???]
次の方どーぞ。



881 名前:nobodyさん [2009/11/08(日) 21:05:50 ID:8S6RVioX]
classを作っておくのは同じコードを2度も書かないためってことでしょうか?
掲示板を作るとき「ファイル操作・文字列処理」をしますのでそういうのをクラスにまとめることによtt
いろんなスクリプトで再利用できるという認識でよろしいでしょうか?

882 名前:nobodyさん mailto:sage [2009/11/08(日) 22:33:56 ID:???]
再利用できるように作ってあれば。

883 名前:nobodyさん [2009/11/09(月) 09:32:56 ID:utcN5JBF]
>>881
同じコードを2個書かなくていいのはfunction(関数化)
クラス化は、同じコードを書かなくていいだけでなく、そのときに必要な部分のみ使える感じ



884 名前:nobodyさん mailto:sage [2009/11/09(月) 10:54:46 ID:???]
関数だと必要な部分のみ使えないの?

885 名前:nobodyさん mailto:sage [2009/11/09(月) 10:57:53 ID:???]
オブジェクト指向のオの字も知らないようだと、クラスを作る意味はまるで無い

886 名前:nobodyさん [2009/11/09(月) 11:09:38 ID:utcN5JBF]
クラスは何つーか、製作ツール作る感じじゃね?
RPGツクールとかそんな感じで
逆にfunctionなどの関数はそのまま関数作ったり
RPGツクールの中の、敵にダメージを与える計算部分とか

887 名前:nobodyさん mailto:sage [2009/11/09(月) 11:12:00 ID:???]
クラスの目的は…
少なくとも出発点はデータの保護、というかデータに対して可能な操作の定義。>>881

つか、もうそれってPHPの質問と違うやん。
OOもしくはOOP一般じゃろ。

888 名前:nobodyさん mailto:sage [2009/11/10(火) 00:04:02 ID:???]
学校にもAクラス、Bクラスってあるだろう。
それと同じ意味だよ。

A組 が 廊下掃除担当
B組 が 体育館掃除担当
C組 が プール掃除担当

という感じにクラス毎に役割を振っておけば、
後々管理が楽になるだろう?

「廊下に関する事なら、A組に聞けばいい。」

ってな具合で。

889 名前:nobodyさん mailto:sage [2009/11/10(火) 00:22:25 ID:???]
関数とオブジェクトのローカル変数をセットにしておける。
継承が使える。

これだろ。

890 名前:nobodyさん mailto:sage [2009/11/10(火) 00:28:25 ID:???]
無駄に難しく考えないで、自分のレベルで便利に使えるところから使えばいいんだよ。
クラスつかうなんてのは、手段であって、目的ではないからな。



891 名前:nobodyさん mailto:sage [2009/11/10(火) 02:31:13 ID:???]
同じく、システムの中である程度一貫性持ってれば扱い方は人によって個性出てもいいと思う

892 名前:nobodyさん mailto:sage [2009/11/10(火) 02:57:15 ID:???]
OOP本のサンプルって、
Animalクラスを継承してDogクラスとかCatクラスを作るって例が多いけど、
わかりやすいようで解りづらいよなw

893 名前:nobodyさん mailto:sage [2009/11/10(火) 03:10:25 ID:???]
>>892
>Animalクラスを継承してDogクラスとかCatクラスを作るって例
この手の解説は参考にならないって、歴史が証明してるよなw

894 名前:nobodyさん mailto:sage [2009/11/10(火) 03:44:55 ID:???]
最初は関数で作って、後々追加案件で処理毎にクラス化してる
配列でまとめてあると、後で弄り易い。

895 名前:nobodyさん mailto:sage [2009/11/10(火) 05:31:53 ID:???]
それ、クラスである必要があるコードでなかったりしないか

896 名前:nobodyさん mailto:sage [2009/11/10(火) 06:59:46 ID:???]
>>893
そういう概念の話は腐るほど聞いても、じゃあいざ実装しようとすると
あれどれがDogでAnimalなんだっけ、いやそもそもクラスにする必要あるのかこれ?
と思考の海に沈む

まっとうなOOP本読めばいいんだろうけど

897 名前:nobodyさん [2009/11/10(火) 08:03:12 ID:T58KxytE]
同じような方向の質問になるけど
PEARとかでよくファクトリークラス(?)を使って
クラスからクラスを作ってたりするけど、
あれってどういう理由があるの?

898 名前:nobodyさん mailto:sage [2009/11/10(火) 09:28:55 ID:???]
>>897
ttp://www.techscore.com/tech/DesignPattern/AbstractFactory.html

899 名前:nobodyさん [2009/11/10(火) 09:41:10 ID:lbGcCYju]
自分はフォームのパーツを生成する機能をまとめてクラスにしてるんだ
$fmPartsCrass->getUTypePD(10); //DBの登録値10をselectedとするユーザタイプのプルダウンを作る
$fmPartsCrass->uTypeToTXT(10); //フォームの確認画面で、選択値10のユーザタイプを出力する
クラス内のinit()ではプルダウン元になるname,valueの二次元配列を沢山読み込ませてる感じ。
こんなので良いのかな? クラスの使い方って。。

900 名前:nobodyさん mailto:sage [2009/11/10(火) 09:56:23 ID:???]
俺の好みで言うと、コーディング時に種類が決まってるパーツは
new classNameで明示的にインスタンス化したいな。
パラメータ指定してインスタンス作ってからaddとかするように
書くだろうな。
ま、好みの話だからさらっと流してくれ。



901 名前:nobodyさん mailto:sage [2009/11/10(火) 09:57:06 ID:???]
今気づいたがクラスはCrassじゃなくてClassだなw
アホすぎワロタ

902 名前:nobodyさん mailto:sage [2009/11/10(火) 10:04:28 ID:???]
>>895
関数にすると値渡しが面倒なんだわ
特にお金関係は。

903 名前:nobodyさん mailto:sage [2009/11/10(火) 10:25:02 ID:???]
>>895は「最初は関数で作って」おけるような物なら、
クラス化する必要なくね?って事だと思う。

俺はそうは思わないけど。

904 名前:nobodyさん mailto:sage [2009/11/10(火) 10:51:32 ID:???]
ちょっとでも楽になるか、それともクラスにする手間を惜しむか、
必要があるかどうかは結局その人の感覚次第でしょ

905 名前:nobodyさん mailto:sage [2009/11/10(火) 11:05:09 ID:???]
どっちが楽かも人によるしね。
でも、殆どの人にとって、クラス化は最初は楽じゃないんだよね。
だから壁を越えようとしない人も多いんだろう。

壁を越えた向こうには、素敵な楽園が広がって・・・ るわけでもないし。
待ってるのは次の壁と、無間壁越え地獄w

906 名前:899 mailto:sage [2009/11/10(火) 11:50:11 ID:???]
上で書いた例ってヘンですか?
自分じゃ間違ってないだろって気持ちと、これはfunctionを束ねただけのものじゃないかって
気持ちが半分半分です。
バラしたら関数として独立化できるものはclassにする必要ないのかななんて考えると
全部そうだろうという気持ちがでてくるし…

907 名前:nobodyさん mailto:sage [2009/11/10(火) 11:57:28 ID:???]
>>906
functionを束ねただけのものですね

908 名前:nobodyさん mailto:sage [2009/11/10(火) 11:58:15 ID:???]
変数名にCl(r)assの文字がある時点でおかしいと思うべきだな

909 名前:nobodyさん mailto:sage [2009/11/10(火) 12:01:22 ID:???]
>>906
汎用性を持たせればいいんじゃね?
リスト意外にもラジオボタンや複数選択でも出力、クラス指定で見た目も変えれるとか

910 名前:nobodyさん [2009/11/10(火) 12:03:13 ID:HgEfIoEe]
くだらない質問ですがよろしくお願いします。
ソースを見ていたら
<?= $test ?> という書き方をしている箇所を見つけました。
コードを書くときは<?php ?>で囲うと本には書いてありましたが
<?php print($test) ?> と、どう違うのでしょうか。
あまり見かけないということは何か問題のある記述方ですか?



911 名前:nobodyさん mailto:sage [2009/11/10(火) 12:03:50 ID:???]
だから自分の基準は
 「素材があって、料理する方法が複数ある場合」
はクラスにするようにしてる

912 名前:nobodyさん mailto:sage [2009/11/10(火) 12:11:36 ID:???]
>バラしたら関数として独立化できるものはclassにする必要ないのかな

これはその通り。ただ、

>全部そうだろうという気持ちがでてくるし…

こっちは、クラス使える言語でなら、そういうのはやめた方がいいぞ。
データってもんを無視すれば全部そうできるかもしれんけど。

「関数/手続きに(引数等で)データを渡す」だけで考えても一応全てのプログラムは書けるよ、確かに。
昔はそればっかだったし。


913 名前:nobodyさん mailto:sage [2009/11/10(火) 12:20:07 ID:???]
>>910
マニュアル嫁

914 名前:nobodyさん mailto:sage [2009/11/10(火) 12:24:15 ID:???]
>>910
前者はそろそろ問題になってきてる。

915 名前:nobodyさん mailto:sage [2009/11/10(火) 12:36:32 ID:???]
別にクラスを 関数をひとくくりにするためだけに使ってもいいんだよ。

916 名前:nobodyさん [2009/11/10(火) 13:07:19 ID:n4Nrgy6L]
class Oyabun{function buki(){echo "マシンガン";}}
class Kobun extends Oyabun{function buki(){echo "ピストル";}}
class zako extends Kobun{function buki(){echo "鉄パイプ";}}

クラスKobunからクラスOyabunのメソットbukiを呼び出してマシンガンって表示させることはできましたが
クラスzakoからクラスOyabunのbukiを呼び出してマシンガンと表示させる書き方がわかりません
直接クラスOyabunで呼ぶ出すのではなくzakoから呼び出す方法をどなたかご指導お願い致します

917 名前:899 mailto:sage [2009/11/10(火) 13:11:58 ID:???]
皆さんどうもありがとう
>>915
そうなんですか? そうだとしたら安心(?)しました
何度も同じコード書きたくなくて関数化してまとめてみようと思ったのがきっかけでした
クラスの継承とかpublic指定した変数の外部から参照とかしないんで、
複数の関数で使う変数の値やDB接続処理をinit()内部で定義すればいっぺんに書き換えられる、
まとめていつでも呼び出せる以上の利便性なんて感じないんですよね。それで十分だし。
何か損してるのかな。。

918 名前:nobodyさん mailto:sage [2009/11/10(火) 13:16:16 ID:???]
言外の意図を読み取れないのかきみは

919 名前:nobodyさん mailto:sage [2009/11/10(火) 13:37:25 ID:???]
>>916
なんか妙な継承だと思うんだな。子分は親分か?

>クラスzakoからクラスOyabunのbukiを呼び出してマシンガンと表示させる書き方がわかりません
雑魚が親分を使役するのか?

実はPHPはよく知らないが、
 Oyabun::buki();
で呼び出せない?


でもなぁ…
interface Kouseiin {
 public function buki();
 public function setOyabun($oya);
}
class Oyabun implements Kouseiin{略}
class Zako implements Kouseiin{
 private $oyabun;

 public function tasuketeOyabin(){
  $this->oyabun->buki();
 }
}

$chimpira = new Zako();
$chimpira->buki();
$chimpira->tasuketeOyabin();


920 名前:nobodyさん [2009/11/10(火) 16:32:26 ID:k/b4LSiu]
よろしくお願いします。

function &set() {
     ↑このアンドマークの意味を教えてください。



921 名前:nobodyさん mailto:sage [2009/11/10(火) 16:45:26 ID:???]
記述ミス

922 名前:nobodyさん [2009/11/10(火) 18:02:30 ID:hMuYWgxi]
PDO::ATTR_PERSISTENT=>true として PDO::prepare を使った場合、prepare ステートメントは接続が維持されている限りキャッシュされていて、前回のキャッシュをphpが勝手に使ってくれるという動作をするのでしょうか?
DBサーバーはpostgresqlです

923 名前:nobodyさん mailto:sage [2009/11/10(火) 19:01:07 ID:???]
>>922
PDOStatementのデストラクタで毎回削除してしまうようだね

ext/pdo_pgsql/pgsql_statement.c
> static int pgsql_stmt_dtor(pdo_stmt_t *stmt TSRMLS_DC)
> {
...
> #if HAVE_PQPREPARE
...
> if (S->is_prepared) {
> spprintf(&q, 0, "DEALLOCATE %s", S->stmt_name);
> res = PQexec(H->server, q);

924 名前:nobodyさん mailto:sage [2009/11/10(火) 19:03:05 ID:???]
>>920
www.php.net/manual/ja/language.references.php

925 名前:nobodyさん [2009/11/10(火) 20:40:43 ID:k/b4LSiu]
>>924
ありがとうございます。
こちらで質問して良かったです。

926 名前:nobodyさん [2009/11/10(火) 21:11:57 ID:Yr8QXJQk]
>>923
ありがとうございます
しかし劇的に軽量化が出来ないかと思いましたが残念です
pgsqlで関数として定義にしておけば計量化したりしないものだろうか…

927 名前:nobodyさん mailto:sage [2009/11/10(火) 21:28:36 ID:???]
君のシステムはDBの接続が継続してたら軽量化するの?

928 名前:nobodyさん [2009/11/10(火) 21:31:00 ID:Yr8QXJQk]
そうですね、view使えばいいんですね。
ちゃんと勉強しましょう…。

929 名前:nobodyさん [2009/11/10(火) 23:50:57 ID:efP4W3lX]
GoogleのようなAND検索を実装しようとしています。

以下のように空白で区切ろうと考えています
preg_split('/\p{Z}+/', $query);

単純な区切りでは問題ないのですが、
test aaaa => array('test', 'aaaa');

以下のように一単語として検索したい場合の正規表現が分かりません。
"test aaaa" test => array('test aaaa', 'test');

分かる方お願いします。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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