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


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

PHPでOOP



1 名前:1 ◆SWtzLesEmM mailto:age [2007/02/23(金) 13:35:52 ID:???]
PHPを使ってプログラミングするとき、
プロシージャ指向(手続き型、構造化プログラミング)でもできますが、
オブジェクト指向を使った場合の恩恵を享受するために、
PHPでオブジェクト指向プログラミングの勉強をしてみましょう。

<目的>
PHP5でオブジェクト指向プログラミングを行なうための知識を習得する。
(PHP4のOOPもOK、このスレが1000に行く前にPHP6が出たらPHP6のOOPもOK)

<方向性>
・このスレは、プログラミング初心者、PHP初心者の勉強の場として利用することを前提にします。
・PHPのOOPの話題に限定します。
(Ruby、Python、Javaなど他言語のOOPについては、その言語のスレッドでお願いします。)
・PHPのOOP学習に役立つ本、WEBサイトの紹介をお願いします。

<その他>
・略記は、「OO」=「オブジェクト指向」、「OOP」=「オブジェクト指向プログラミング」でお願いします。
・質問をする人はなるべくトリップを付けましょう。
・荒らし、煽り、叩き、気違いは無視・無干渉でお願いします。

このスレで、今日から貴方もOOP!!!\(^o^)/

435 名前:nobodyさん mailto:sage [2008/02/16(土) 11:47:29 ID:???]
フレームワークの利点などの検証の参考となるかと思ったので書いておきます。

ASP.NETでは、「検証コントロール」というのが便利そうだ。
「プログラムを作成するたびにこういうのをいちいち書いたりしなくていい」という
部分の利便性は良く分かる。

ASP.NETで学ぶVisual Studio .NETの魅力
第2回 Visual Studio.NETでプログラム・レス開発を学ぶ(前編)
www.atmarkit.co.jp/fdotnet/aspandvs/aspandvs02/aspandvs02_04.html

だが、こういうのは逆にそのフレームワークに縛られてしまうのが欠点だな。
準備されてるコントロールを自分の意図するようにやりたいが、その方法が誰も分からない
もしくは、出来ない場合は、それで終わりみたいな。

話はずれるが、Accessで開発してる時、各種コントロールやウィザードの組み合わせでは
対応出来ないと感じたのを思い出した。ウィザードが準備する通りの物が目的ならば良いのだが、
それにちょっと変更を加えたい場合はどうしたらよいのかという感じ。各種プロパティーの
値を変更してみても変な方向に変わっていくだけ。
自分の意図するようにカスタマイズしたい場合は、非連結のテキストボックスを貼り付けて
VBAで制御するスタイルでやってたな。

436 名前:nobodyさん mailto:sage [2008/02/16(土) 12:59:37 ID:???]
Accessではグリッドが無いけれど、サブフォームで代用する方法はある。
しかし、そのカスタマイズ度は低い。(確か、クリックしたセルの場所を
取るとか、一つのセルだけ色を変更するとかがかなり苦手だったような。)
サブフォームで代用できない場合は、フォーム上にグリッドを貼り付けるような
モジュールは無いので、DBへのアクセス手段が手軽なものを捨ててでも
VBで0から作り直すのが一般的な選択方法となる。

Webアプリのフレームワークでもこのような状況になる事ってあるのかなぁ?

437 名前:383 mailto:sage [2008/02/16(土) 17:18:06 ID:???]
PDOを継承する形でこんなクラスにしてみました。
突っ込みどころ満載だと思うんだけど、とりあえず、このコーディング方法はやめておいたほうがいい、
っていうところを教えていただけると嬉しいです。

class DBConnect(){
// メンバ変数にDB接続情報を記述

function __construct(){} // PDOをインスタンス化
function getConnID(){} // PDOオブジェクト格納変数を返す
}

class TableCtrl extends PDO{} //PDOを継承、汎用関数を定義してもOK.

class CtrlA extends TableCtrl{ // テーブルAを操作する
protected $ConnID;
function __construct($ConnID){} //PDOオブジェクト格納変数を渡す
}

438 名前:438 mailto:sage [2008/02/16(土) 17:21:28 ID:???]
スクリプト先頭で、DBConnectをnewして、PDO格納オブジェクトを受け取ってから、
それを引数にCtrlAをnewする感じ……。
一応動きはするけど……全然ダメだな……。

439 名前:nobodyさん mailto:sage [2008/02/16(土) 17:46:45 ID:???]
>>438
なんでもいいけど、既存のフレームワークがどうなっているか見てみろ。

見たら自分で作るきなくなるけどなw

440 名前:438 mailto:sage [2008/02/17(日) 16:53:21 ID:???]
>>439
返信ありがとう。

まったくわかってないみたいなので、クラスの設計方法から学び直します。

実際の処理をする具象クラスを作って、また別に、それを統括するクラスを作っていく。
複数のクラスを設定によって使い分けしなきゃいけない場合は、抽象クラスなりインターフェイスなりを継承(後者の場合は実装)させて、
メソッド名を統一させた上で、ポリモーフィズム――クラスによって同名メソッドの振る舞いを変えさせるって解釈でいいよね?――で実現させる。
基本こんな感じかな?

プリペアドステートメントに惹かれて、PDOを継承する形で作って見たんだけど、
DB接続関連の場合、接続IDを返してくるmysql_connect(); なんかのほうが、使いやすい気がする。

フレームワーク自作なんて、自分にとってはとんでもない話しですよ……。

441 名前:nobodyさん mailto:sage [2008/02/17(日) 19:14:54 ID:???]
お前の下らない御託はいいから見ろっつの

442 名前:nobodyさん mailto:sage [2008/02/17(日) 20:01:12 ID:???]
>>441
ごめん、無視してたわけじゃないんだ。
とりあえず、軽い「ちいたん」とやらを見てきます。

スレ汚し、ごめんなさい。自重します。

443 名前:nobodyさん mailto:sage [2008/02/17(日) 20:03:55 ID:???]
なぜちいたんを選ぶか・・・




444 名前:nobodyさん mailto:sage [2008/02/17(日) 20:08:23 ID:???]
( ゚д゚)ポカーン

445 名前:nobodyさん mailto:sage [2008/02/17(日) 20:22:12 ID:???]
救いようが無いな。

446 名前:nobodyさん mailto:sage [2008/02/17(日) 21:40:51 ID:???]
スレのレベルを下げちゃってごめんなさい……。

軽い「ちいたん」が入門にはちょうどいいかな、と思っての選択です。
いきなり、CakePHPなど大きいのを見ても、余計に混乱しそうだったので。

スレのレベルを余計に下げるだけなのでROMします。
度重なるスレ汚し、失礼しました。

447 名前:1 ◆SWtzLesEmM mailto:age [2008/02/17(日) 23:11:41 ID:???]
>>324
>>335
掲示板スクリプトの改善、どうもありがとうございます。(*^^*)v

↓動作サンプルを設置しました。

ssurl.net/n777
ssurl.net/ioah

448 名前:nobodyさん mailto:age [2008/02/22(金) 09:37:11 ID:???]
フレームワークをみてみろとアドバイスをしてくださってる方は、
もう少し具体的なアドバイスを出して欲しい。
具体的に、どんなフレームワークの構造を見て、どんなことを
学んだのかなどをあわせて出してくれたら、勉強もしやすいと
思うのですが。

449 名前:nobodyさん mailto:sage [2008/02/22(金) 09:52:27 ID:???]
お前は人に逐一指示されないと何にもできないんだな

450 名前:nobodyさん mailto:sage [2008/02/22(金) 09:59:49 ID:???]
フレームワークはどこに行けば手に入りますか?

451 名前:nobodyさん mailto:sage [2008/02/22(金) 11:02:18 ID:???]
>>449
漠然としすぎていて良く分からないのである程度は具体例が
欲しいという意味なのですが。


>>450
こちらへどうぞ
【PHP】フレームワークについて語るスレ10【総合】
pc11.2ch.net/test/read.cgi/php/1202521438/l50

452 名前:nobodyさん mailto:sage [2008/02/22(金) 11:21:05 ID:???]
>>451
そのくらい自分で探せよという意味なのですが

453 名前:nobodyさん mailto:sage [2008/02/22(金) 11:36:33 ID:???]
>>451
自分でDBの抽象化を考えてみて、クラスの定義だけでも書いてみろ。
その後にZFのZend_DBを見て、自分のとどう違うか、なぜそうなっているのかを考えろ。

それから、偉そうな態度で教えてもらおうと思うな。





454 名前:nobodyさん mailto:sage [2008/02/22(金) 11:50:38 ID:???]
別に偉そうじゃないだろ。
むしろお前のほうが偉そうだ。
何被害妄想してるんだw

455 名前:nobodyさん mailto:sage [2008/02/22(金) 12:50:26 ID:???]
本気でOOP勉強したい人はまずPHP止めないと・・
PHPの世界にOOPの参考になるものがどれほどある?
javaやらずOOP出来ましたってありえないでしょ。

456 名前:nobodyさん mailto:sage [2008/02/22(金) 12:58:24 ID:???]
>>455
OOP勉強するなら、SmallTalkだな。
Javaとかアフォ?w

457 名前:nobodyさん mailto:sage [2008/02/22(金) 13:04:24 ID:???]
本気でOOP勉強する為にPHPをやめる必要は無い。
PHP使いながら、OOP勉強すればいいだけ。

本気でOOP勉強をするなら、非実用的な言語も含めていろいろな
言語を使うことになる。そしてそれらが実用的かというと別の問題。

いくらsmalltalkでOOPをマスターしました!とかいっても
それでウェブサービスを作ることはまずありえないんだから

手段と目的を逆にしないようにね。

458 名前:nobodyさん mailto:age [2008/02/22(金) 13:04:45 ID:???]
その論争は、きりが無いから、マ板とかのOOPのスレでやって欲しい。
「スクリプトの世界ならRubyだろ。」とか、結論が見えてこないし、
このスレの趣旨とは違うと思う。

459 名前:nobodyさん mailto:age [2008/02/22(金) 13:06:38 ID:???]
>>457は非常にすばらしいことを言ったと思う。

460 名前:nobodyさん mailto:sage [2008/02/22(金) 13:13:27 ID:???]
確かにPHPでOOPの解説をしている情報は非常に少ないので、
勉強の際はjavaやC#などの情報を読みながらやることになると思う。
しかし、PHPを辞めるまでする必要性は無いと思う。
言いたいのは「OOPの勉強するのなら、PHPに限定してはいけないよ。」
じゃないの?

461 名前:nobodyさん mailto:sage [2008/02/22(金) 13:16:21 ID:???]
本気で勉強する為にPHPをやめた。
そしてOOPをマスターした。

しかし、Javaでは共有サーバーで動くソフトを作れなかった。
多くのオープンソースアプリはPHP製だった。

OOPをマスターしたが、何も出来なくなった。 完。

462 名前:nobodyさん mailto:sage [2008/02/22(金) 13:27:17 ID:???]
前から思ってたんだが、頭の悪い人間が粘着してるな。
自分がどんな風に思われてるかも分かってないんだろうなw

463 名前:nobodyさん mailto:sage [2008/02/22(金) 13:58:48 ID:???]
>>457
> いくらsmalltalkでOOPをマスターしました!とかいっても
> それでウェブサービスを作ることはまずありえないんだから

今やウエブサービスに欠かせないMVCはそもそもsmalltalkのOOP由来なんだが…。
継続ベースだって覚えておいて損はない。

www.ibm.com/developerworks/opensource/library/os-lightweight8/
www.ibm.com/developerworks/jp/java/library/j-cb07056/index.html



464 名前:nobodyさん mailto:sage [2008/02/22(金) 14:19:47 ID:???]
PHPでOOPする為に別の言語でOOPの勉強をする。
自分の為に必要だからやるだけ。

465 名前:nobodyさん mailto:sage [2008/02/22(金) 14:42:14 ID:???]
>>463
うん。だからさ勉強・研究の為の言語と
実用・開発の為の言語は別なの。

466 名前:nobodyさん mailto:sage [2008/02/22(金) 17:56:13 ID:???]
このソースの解析をがんばればいろいろ見えてくるだろうけど、
一人じゃ到底無理だろうな。別スレでも立てて、解析して
ドキュメント作ろう!見たいなことやってみる?

Visual Studio 2008で見る.NET Frameworkのソースコード
www.atmarkit.co.jp/fdotnet/insiderseye/20080222sourcecode/sourcecode.html
> 公開されたソースコードには(もちろん英語だが)多くのコメントが入っており、
> ローカル変数名も元のままの“生”のソースコードである。
> そしてそれがVisual Studio 2008でシームレスにトレースできるようになる

467 名前:nobodyさん mailto:sage [2008/02/23(土) 08:39:50 ID:???]
>>447
サンプル見たけど
Viewで変数が入らないとこで”を使ってる意味がわからない
”と’の使い方間違ってると思う
面倒な使いわけするならsprintfという手もある

パラメータ変数が渡ってくる
switch文のcaseに頭文字を大文字にしてる意味がわからない



468 名前:nobodyさん mailto:sage [2008/02/23(土) 08:44:08 ID:???]
function html_head(){
echo "<html>";
echo "<head><title>BBS</title></head>";
echo "<body>";
}

上は、こうでいいやん!

function html_head(){
echo '<html>';
echo '<head><title>BBS</title></head>';
echo '<body>';
}

なんでダブルクォートやねん

469 名前:nobodyさん mailto:sage [2008/02/23(土) 09:12:10 ID:???]
>>447

class View_Baseは
helper的な役割だからいいとしても

View_List
View_WriteFinish

コントローラで判断させるべき機能が
Viewで書かれてるし
テンプレート化されてないのもあって
ぐちゃぐちゃですね。
ここがOOP構造を理解しにくい作りになってる

コントローラは面倒でもOOP理解するには必要だ
理解しやすくするためにテンプレート化も必要

470 名前:nobodyさん mailto:sage [2008/02/23(土) 09:19:29 ID:???]
>>447
本来コントローラとModelがやりとりする部分が
コントローラが無いために
Viewで処理されてる

MVモデルですね!
OOP構造化理解のためには
面倒でもMVCモデルじゃないと
初心者を間違った方向に導きますよ!!



471 名前:nobodyさん mailto:sage [2008/02/23(土) 12:22:21 ID:???]
>>469
具体的にどうすればいいの?
条件分岐してないから切り分けは良さげに見えたんだが。
viewは機能ごとの静的HTML吐くのとは違うの?

472 名前:nobodyさん [2008/02/23(土) 13:43:29 ID:i4AYcehM]
www.microsoft.com/japan/msdn/practices/type/Patterns/enterprise/DesMVC.aspx

これの

アクティブモデルは、コントローラとは関係なくモデルで状態が変更される場合に使用されます。
これは別のソースでデータが変更され、この変更をビューに反映する必要がある場合に起こります。
株価相場表示を例に考えてみます。株価データが変更された場合、外部ソースからデータを受け取り、チッカーバンドや警告ウィンドウなどのビューを更新する必要があります。
モデルの内部状態の変更が検知できるのはモデルだけなので、モデルからビューに表示を更新するよう通知する必要があります。

って、hoge.php?param1=aaa¶m2=iiiみたいなリクエストを解析してコントローラがそれに応じたビューを選択して云々
ではなくて、例えばブログだったら記事テーブルにまだ一つもデータが無いときは「まだ記事が登録されていません」のビューをモデルが選ぶ、ってことかい?

だとしたらどうやって実装したらいいんだろ・・・

そのモデルを使用するビューをモデルに登録しておいて、モデルのデータによって分岐させて使うビューを選択。そのときにビューは出力に必要なデータをモデルからひっぱりだす

MSDNは書き方がやたらめんどいぜ

473 名前:nobodyさん [2008/02/23(土) 13:56:50 ID:i4AYcehM]
コントローラがリクエスト解析

そのリクエストにおいて必要なモデルのインスタンス生成

モデルのメソッド呼び出す

選択したビューのupdate呼びだして出力に必要な変数定義

モデルがビューの出力するメソッドを呼ぶ

ビューはモデルからの変更を受け付けるupdateメソッドと出力するためのputHtmlメソッド持つインターフェイスを実装する

なんか間違ってますか>< 教えてください!><



474 名前:nobodyさん mailto:sage [2008/02/23(土) 14:42:12 ID:???]
なんですでにあるフレームワークを参考にしない?

475 名前:474 mailto:sage [2008/02/23(土) 14:43:18 ID:???]
474は無視してくれ

476 名前:474 mailto:sage [2008/02/23(土) 15:11:03 ID:???]
>>472
それはようするに、株価データのようにユーザーが
ページを更新しなくてもデータが更新されるときの話。

コントローラがモデルからデータ引っ張ってきて
そのデータをビューに渡して表示という処理は変わらない。
↑この処理を、普通は「URLを開いた」というタイミングで行っているわけ。

しかし、そのタイミングだと株価データ表示のようなリアルタイムでの表示は難しい
人間がF5を押す必要がある。この場合も更新されているとは限らず無駄に負荷が高くなる。

それを(ウェブアプリ以外では)モデルからデータが変更されたよーと
コントローラ・ビューに通知し、その通知が来たタイミングでコントローラ・ビューが
モデルからデータを引っ張ってきて(ry)という設計方法がある。
それが>>472で言っていること。

モデルに対して、コントローラやビューを「変更あったら俺に通知してくれ」
登録することでそれを実現する。
(データに変更があったらコントローラ・ビューのこの関数を呼び出してくれとモデルに登録する)


でも、この設計。モデル(つまりサーバー)から変更の通知をすることになるので
ウェブアプリでは一工夫必要になる。結局は、JavaScriptを使って
一定ごとに変更チェックをすることになるわけだが、まあそれをAjaxとかの技術で
非同期的にバックグラウンドで行うことにより、見た目上はサーバーから
変更通知がくるような感じに出来るんでしょ?やったこと無いけど。
その通知を元に、画面の一部、もしくはすべてを再描画する。



あとは詳しい人に任せた。

477 名前:nobodyさん [2008/02/23(土) 17:10:06 ID:i4AYcehM]
>>476
レスd

オブザーバパターンはWebアプリに不向きなのかー。

じゃあ、
//コントローラの実行メソッド
public function doExecute(){
if($this->model->getArticleNum() === 0){
$message = '記事がまだ一つもありません';
require_once('./template/Error.php');
}else{
$this->view->putHtml();
}
}

こういう、コントローラがモデルからデータ引っ張ってきて分岐して、ビューを選択する、ってのはアリなのかな?

ちょっとCakePHPとかの資料ググってくるは

478 名前:nobodyさん mailto:sage [2008/02/23(土) 17:50:55 ID:???]
そういう場合Comet使うんじゃね?
Cometすげえ!って大騒ぎになってたころ資料見ても俺には何がなんだか理解できなかったけど

479 名前:nobodyさん mailto:sage [2008/02/23(土) 20:15:50 ID:???]
1を含めてコントローラの役割が全然わかってないんだよ!
MVモデルになってるんだよ!
CakePHP、symfonyのソースをよく解読してみろよ!
1のサンプルにはVIEWにコントローラで処理するコードかいてあるんだぜ!

480 名前:nobodyさん mailto:sage [2008/02/23(土) 20:21:31 ID:???]
PHPでOOPを追求すると
結局はMVCモデルのフレームワークにテーマが行き着くんだよね
だったらPHPフレームワークのスレと同じじゃんて感じで
ここでOOPを議論するときは
MVCモデル以外を議論の対象にしたいよ

481 名前:nobodyさん mailto:sage [2008/02/23(土) 20:27:22 ID:???]
>>478
ワロタ。目からうろこw
httpってのはクライアント(ブラウザ側)から聞くことしかできないんだ。
どうやってもサーバーから話しかけることはできない。

だから、たとえば一分おきに、
「データ変わったかい?」「変わってねーよ」
「データ変わったかい?」「変わってねーよ」
「データ変わったかい?」「変わってねーよ」
「データ変わったかい?」「変わってねーよ」
「データ変わったかい?」「変わったよ!」

って聞かないといけない。たとえ4分半の時点でデータが変わっていても
5分後に聞くまでわからない。Cometというのは、
「データ変わったかい?」・・・・・・・・・・・(4分30秒後)「変わったよ!」・・・(数分後)「また変わったよ!」
とこうなる。

本質的にはクライアントから聞いているわけだが、変更があるまで
みのもんたみたいにずっと溜めてから返答するため、
負荷の軽減とリアルタイムな通知が実現できるというわけ。

しかし、いまさらだけどhttpで無茶やりすぎだw

482 名前:nobodyさん mailto:sage [2008/02/23(土) 20:30:12 ID:???]
例え巧すぎワロタ

483 名前:nobodyさん mailto:sage [2008/02/23(土) 20:32:35 ID:???]
>>479
だから具体的にどこがだよ?



484 名前:nobodyさん mailto:sage [2008/02/23(土) 20:35:35 ID:???]
>>480
> PHPでOOPを追求すると
> 結局はMVCモデルのフレームワークにテーマが行き着くんだよね

それはPHPに限らず。

そもそもOOPが一番よく使われるのは、フレームワーク部分なんだよ。
OOPはフレームワークを作るときに使うものといっても過言じゃない。

通常のビジネスロジック部分は基本的に単純な命令の集まりになるので
OOPを使っているという感じは無くなる。

485 名前:nobodyさん mailto:sage [2008/02/23(土) 20:43:56 ID:???]
>>484
だから結局フレームワークの議論になるんなら
このスレの意味が無いんだよ

486 名前:nobodyさん mailto:sage [2008/02/23(土) 20:45:46 ID:???]
>>483
>>469

487 名前:nobodyさん mailto:sage [2008/02/23(土) 20:49:01 ID:???]
>>485
フレームワークスレは、フレームワークの比較などを話すスレ
OOPはフレームワークを題材に、OOPの話をするスレ

おk?

488 名前:nobodyさん mailto:sage [2008/02/23(土) 20:53:31 ID:???]
>>486
class View_List extends View_Base{
//
function Write_HTML_head(){
$this->html_head();
$this->html_title("--- PHP で OOP の BBS ---");
echo "<hr>";
}

// 書き込みフォームを表示させる。
function Write_HTML_form(){
$this->html_form_start("index.php");
echo "<b>[メッセージを投稿する]</b><br>";
$this->html_input_hidden("PAGE", "Write");
echo "タイトル:<br>";
$this->html_input_text("title");
echo "<br>";
echo "メッセージ:<br>";
$this->html_textarea("msg");
echo "<br>";
$this->html_submit(" 書き込む ");
$this->html_form_end();
}


489 名前:nobodyさん mailto:sage [2008/02/23(土) 20:54:28 ID:???]
//
function Write_HTML_foot(){
$this->html_foot();
}
//
function Write_HTML_data($line){
echo "<b>タイトル:</b>";
echo $line->GetName();
echo "<br>";
echo "<b>メッセージ:</b>";
echo $line->GetMsg();
echo "<hr>";
}
}
この中のどこがコントローラで判断させるべき処理なんだ?

490 名前:nobodyさん mailto:sage [2008/02/23(土) 20:57:01 ID:???]
>>487
OOPはフレームワークを題材に、OOPの話をするスレならプログラム板だろ?
初心者だらけの、ここよりも良レスが来ると思うんだが
PHPにこだわる理由がわからない
WEBでのフレームワークならどれも仕組みは同じだろうに
じゃあperlでOOP、rubyでOOPていうスレが無いのは何でなんだ?

491 名前:nobodyさん mailto:sage [2008/02/23(土) 21:21:33 ID:???]
function GetNextData(){
if( $line = fgets($this->m_file_hd, 1024) ){
$line2 = split($this->m_pause_chr, $line);
$ans = new Line();
$ans->SetData($line2[0], $line2[1]);
}else{
$ans = "";
}
return $ans;
}

これは下記がいいだろ?

function GetNextData(){

$ans = "";
if( $line = fgets($this->m_file_hd, 1024) ){
$line2 = split($this->m_pause_chr, $line);
$ans = new Line();
$ans->SetData($line2[0], $line2[1]);
}

return $ans;
}

492 名前:nobodyさん mailto:sage [2008/02/23(土) 21:36:01 ID:???]
// データを1行読み出す。
function GetNextData(){
if( $line = fgets($this->m_file_hd, 1024) ){
$line2 = split($this->m_pause_chr, $line);
$ans = new Line();
$ans->SetData($line2[0], $line2[1]);
}else{
$ans = "";
}
return $ans;
}

変数名の最後に数字使うのは初心者だろ?
もしコード拡張で数値計算が入ったら紛らわしい

493 名前:nobodyさん mailto:sage [2008/02/23(土) 21:39:32 ID:???]
// データを最後に追記する。
function AddLast($title, $msg){
// ファイルを開く
$hd = fopen($this->m_file_name , "a");
// データを書き込む
$line = $title . $this->m_pause_chr . $msg . "\n";
fwrite($hd, $line);
// ファイルを閉じる
fclose($hd);
}

なんでflock入れないの?



494 名前:nobodyさん mailto:sage [2008/02/23(土) 21:47:30 ID:???]
$line2 = split($this->m_pause_chr, $line);

はこれの方がわかりやすいだろ?

list($name,$msg) = split($this->m_pause_chr, $line);

495 名前:nobodyさん mailto:sage [2008/02/23(土) 21:52:46 ID:???]
function GetNextData(){
if( $line = fgets($this->m_file_hd, 1024) ){
$line2 = split($this->m_pause_chr, $line);
$ans = new Line();
$ans->SetData($line2[0], $line2[1]);
}else{
$ans = "";
}
return $ans;
}

これは下記に修正した方がわかりやすいよ

function GetNextData(){

$ans = "";
if( $line = fgets($this->m_file_hd, 1024) ){
 list($name,$msg) = split($this->m_pause_chr, $line);
 $ans = new Line();
 $ans->SetData($name, $msg);
}

return $ans;
}

496 名前:nobodyさん mailto:sage [2008/02/23(土) 21:55:49 ID:???]
変数にオブジェクトが入ってくるなら
初期化はこうだった

function GetNextData(){

$ans = null;
if( $line = fgets($this->m_file_hd, 1024) ){
 list($name,$msg) = split($this->m_pause_chr, $line);
 $ans = new Line();
 $ans->SetData($name, $msg);
}

return $ans;
}


497 名前:nobodyさん mailto:sage [2008/02/23(土) 22:04:10 ID:???]
else{
$ans = "";
}

これ全部

$ans = null;
に初期化に変えて
elseとっぱらった方がいいよ

返り値はオブジェクトが入ってるか入ってないかという処理なのに
空文字を返すのよくないよ!

498 名前:nobodyさん mailto:sage [2008/02/23(土) 22:44:30 ID:???]
まぁ空文字もnullも演算子によっては同様にfalse扱いできるという点がPHPの特徴なわけで

499 名前:nobodyさん mailto:sage [2008/02/24(日) 05:50:47 ID:???]
>>490
> じゃあperlでOOP、rubyでOOPていうスレが無いのは何でなんだ?
人気が無い言語だからw

500 名前:nobodyさん mailto:sage [2008/02/24(日) 11:09:06 ID:???]
プログラム初心者がPHPだけでOOPを習得するのはほぼ不可能に近いと思う。
OOP習得が目的ならあまりにも無謀だし、全くもって得策ではない。

フレームワークとか利用しても、ユーザが$_POSTとか直接呼べちゃうと
結局OOPの意味が無いんではないだろうか?むしろそれが出来てしまうPHPは
OOP理解には全く向いていない言語だとも思うのだ。

でも不完全ながら、PHPでOOPっぽくコーディングすること自体は楽しいと思う。

501 名前:nobodyさん mailto:sage [2008/02/24(日) 11:31:24 ID:???]
>>500
> プログラム初心者がPHPだけでOOPを習得するのはほぼ不可能に近いと思う。
どんな言語でも当たり前。

> フレームワークとか利用しても、ユーザが$_POSTとか直接呼べちゃうと
> 結局OOPの意味が無いんではないだろうか?
まったく関係ない。


502 名前:nobodyさん mailto:sage [2008/02/24(日) 14:04:04 ID:???]
PHPでOOPするには
初心者じゃ無理だよ
オブジェクトの設計は上手に出来ても
コーディングレベルで初心者ならではのミスが目立つ

503 名前:nobodyさん mailto:sage [2008/02/24(日) 14:08:38 ID:???]
PHPでOOP勉強は適してないよ
JAVA,C#,rubyみたいに
OOPを前提として作られた言語じゃないからね




504 名前:nobodyさん mailto:sage [2008/02/24(日) 15:14:16 ID:???]
「PHPでOOPは」みたいな話は何度も出てるのに、いつも具体的な話にならないのは何で?

505 名前:nobodyさん mailto:sage [2008/02/24(日) 15:31:22 ID:???]
お前に知識がないから

506 名前:nobodyさん mailto:sage [2008/02/24(日) 15:37:16 ID:???]
( ´・∀・`)へー

507 名前:nobodyさん mailto:sage [2008/02/24(日) 15:38:42 ID:???]
関係なくはないよ。グローバル変数として、どこからでも呼べちゃうんだから、カプセル化できてないってことになる。
だいたい$_REQUESTや$_SESSIONがオブジェクトじゃなくって、変数な時点で、PHPのウェブアプリでオブジェクトなんて使うなっていう、PHP開発者からのメッセージと理解すべき。

508 名前:nobodyさん mailto:sage [2008/02/24(日) 15:44:11 ID:???]
グローバル変数が使えたら、カプセル化できない言語ってことになるのか。
そりゃすごい。

509 名前:nobodyさん mailto:sage [2008/02/24(日) 16:03:09 ID:???]
俺も、>>469に書いてる、コントローラで判断させるべき処理の具体的な
コードを教えて欲しい。
このコードの話が質問されても出ていないのはなぜ?フレームワークを
使わないと、理論を完全に実現できないとかそういう話だから?

510 名前:nobodyさん mailto:sage [2008/02/24(日) 16:19:48 ID:???]
>>479=486も結局答えられてないしな。
だめだだめだと言うものの、何故だめなのか、どう書けばいいのかということには答えられない低レベル批判厨なのさ

511 名前:nobodyさん mailto:sage [2008/02/24(日) 19:08:42 ID:???]
また見えなくすることをカプセル化と勘違いしてる高レベルプログラマさんのお出ましだ

512 名前:1 ◆SWtzLesEmM mailto:age [2008/02/24(日) 19:49:37 ID:???]
>>1 ◆SWtzLesEmM :2007/02/23(金) 13:35:52

このスレも1周年を迎えてましたね!
…時間が経つのは早いなー。><

1年前からあまり進歩してないのは気のせい?(・∀・)

513 名前:1 ◆SWtzLesEmM mailto:age [2008/02/24(日) 19:50:55 ID:???]
>>487
PHPでOOPを勉強するとき、フレームワークは良い見本になりますね!

>>490
>PHPにこだわる理由がわからない
ホームページ作成でPHPの勉強を始めました。
プログラミングの勉強をしていたら、手続き型以外にOOPという方法があることを知り、使えるようになりたいと思いました。

>>502
Zendが積極的に音頭を取って、初心者向けの情報提供をやってくれたらいいですね。><
www.zend.co.jp/tech/
Zendの代わりに、PHPプロというサイトがPHP初心者のニーズをカバーしてくれているでしょうか?(・∀・)
www.phppro.jp/

>>503
Javaもちょっと勉強してみました。^^
…今使っているレンタルサーバだとJavaが動かない><

>>507
自分で作ったクラスに関しては、クラス内に変数を封じ込めておけるので、スコープ(変数が操作できる領域)をコントロールできるのではないでしょうか?
PHPが最初から用意してくれているグローバル変数($_REQUES等T)のデメリットがよく分からないのですが、いつでもアクセスできるのでこれはこれで便利だと思います。

とりあえず、PHPでOOPが使えるようになりたいです。
PHP以外の言語も使ってみて、必要に応じて使い分けができるようになれればイイですね!(´∀`)



514 名前:1 ◆SWtzLesEmM mailto:age [2008/02/24(日) 20:01:23 ID:???]
フレームワークに関して情報提供どうもありがとうございます。

>>479
MVモデル…(ノ∀`) アチャー
以前作った掲示板を、MVCフレームワークの形で作り直してみました。(^^)v

ssurl.net/ryol

515 名前:nobodyさん mailto:sage [2008/02/24(日) 20:34:16 ID:???]
結局1のやりたいことは
アマゾンのアフィリエイトの誘導らしいwww

516 名前:1 ◆SWtzLesEmM mailto:age [2008/02/24(日) 22:49:51 ID:???]
>>515
PukiWikiPlusでamazonプラグインをデフォルトのまま使うと、プラグイン作者さん?のアフィリエイトコードが付くようですね。><
ttp://cafelounge.net/dev/?PukiWiki%20Plus!%2FPlng-in%20Customize#a5aa9e2a
>amazonアカウントを設定します。
>define('AMAZON_AID','mikoscafeterr-22');

アフィリエイトはやってませんが、とりあえず本の情報をまとめるのに便利なのでamazonプラグインを使ってみます。^^

517 名前:nobodyさん mailto:sage [2008/02/25(月) 07:27:51 ID:???]
>>516
本の情報とかいらんよ
あと、valueclickのアフィリエイトも出てるし
あとTOPページいくとgoogle広告も出てる
結局こういうことかいな
最悪やなお前

518 名前:nobodyさん mailto:sage [2008/02/25(月) 11:09:54 ID:???]
具体的な本の紹介をサイトに掲載することは俺は賛成だけどな。
でも、単に羅列してるだけよりも、読んでみてどう思ったのかという
レビューをだして、その人なりの評価を出して欲しいとは思った。
羅列しているだけだと、そのサイト特有の色を感じない。

519 名前:nobodyさん mailto:sage [2008/02/25(月) 11:36:58 ID:???]
どう考えても本の紹介を書くのおかしいだろう?
ここだけじゃないけど
技術的なサイトに広告とかマジうざい!!!!





520 名前:nobodyさん mailto:sage [2008/02/25(月) 11:41:53 ID:???]
「OOPやるのならば、PHPを辞めた方がいい」といっている人は、
それをいいたいのならば、もっと具体的に言って欲しい。
「RubyはもともとOOPとして設計されている」とか抽象論で終わってるから
何も話が進まず、同じことの繰り返しが続いているんだと思う。
「$_POSTなど、グローバル変数があるからオブジェクト指向的な考えには
ならない」とかそういう話をしてもらえれば、勉強する人はそれを
それぞれに解釈して学んでいけるのではと思う。
「じゃ、辞めようか」と思う人もいれば、「じゃ、その部分だけ気を
つけていけばPHPでもOOPがやれるんだな」と思う人もいるわけで。

521 名前:nobodyさん mailto:sage [2008/02/25(月) 11:44:37 ID:???]
1は誤解を招くことは面倒だからやめた方がいいよ



522 名前:nobodyさん mailto:sage [2008/02/25(月) 11:44:58 ID:???]
>>519
そこまでいいきるのなら、じゃ、みなけりゃいいじゃんとか思うけどな。

あからさまなCMじゃなければいいと思うけどな。俺はこの本をつかって
こういう勉強をして、こういう役に立ったとか、いいじゃん。
このスレは勉強しようっていうスレなんだから。

523 名前:nobodyさん mailto:sage [2008/02/25(月) 11:46:05 ID:???]
>>521
それにおいては俺も同意だな。



524 名前:nobodyさん mailto:sage [2008/02/25(月) 11:47:54 ID:???]
特に2ちゃんはスレ利用して
最終的に宣伝目的にするやつが多いからな
リンク先に広告があるかどうかだけはシビアに見てる奴が多いよ

525 名前:nobodyさん mailto:sage [2008/02/25(月) 11:51:48 ID:???]
100歩譲って本を紹介しても、それは構わないけど
それがアフィリエイトになってるのがおかしいよ

526 名前:nobodyさん mailto:sage [2008/02/25(月) 11:54:29 ID:???]
以前、面白いレスを自分のサイトに集めて、面白かったと思う
投稿も受け付けたりしていて、そのサイトに広告を出して儲けてた
人がいて、叩かれたことがあったからな。
あと、のまねこ。
そういう事件があったから、2ちゃんねるをつかって管理者が
儲けようとする目的で広告が掲載されていることにはぴりぴりと
している傾向はあると思うな。

2ちゃんねるを通じて何か企画をするのには賛成だけど、やるのなら
GPLライセンスでやるみたいな意識でやらないとだめなんじゃないかな。

527 名前:nobodyさん mailto:sage [2008/02/25(月) 11:59:06 ID:???]
書籍の紹介は良いと思う。そうしないと、@ITの紹介もだめになるわけで、
本当に内容の無いことしかかけなくなってしまう。
情報をまとめていることで、便利だというものもあるしね。
だけど、「アフィリエイトはダメだ」という意見には賛成だ。

528 名前:nobodyさん mailto:sage [2008/02/25(月) 12:02:29 ID:???]
1がアフィリエイトするのは構わないけど
2ちゃんを利用するというのが問題あり

529 名前:nobodyさん mailto:sage [2008/02/25(月) 12:06:47 ID:???]
2ちゃんねるのスレのまとめサイトであるにもかかわらず、
アフィリエイトされていると、それがどこかで告知されて、
大きく騒がれると思う。このスレに厨を沢山呼ぶことにも
なりかねない。
記念パピコとかが大量に来るので、1は早急にアフィリエイトは
辞めるべきだと思う。

530 名前:nobodyさん mailto:sage [2008/02/25(月) 12:07:12 ID:???]
嫌いだと思う事と否定すべき事は分けるものだと思うが、ここでのOOPの議論を見れば
それができないのも仕方がない。

531 名前:nobodyさん mailto:sage [2008/02/25(月) 12:08:30 ID:???]
>>530
kwsk

532 名前:nobodyさん mailto:sage [2008/02/25(月) 12:34:45 ID:???]
2ちゃん利用して金儲けはよくないし
まとめサイトで書籍紹介するのも始めてみて正直びびった


533 名前:1 ◆SWtzLesEmM mailto:age [2008/02/25(月) 12:50:47 ID:???]
ご意見どうもありがとうございます。もう少しPHPでOOPの勉強を続けてみます。

>>517
2chでソースコードを投稿(>>36-50)したら、>>53さんが「わかりにくいからWebサイトにまとめてくれ。」とアドバイスしてくれました。
とりあえず、無料サーバ(XREA)にまとめサイトを設置しましたが、XREAは広告を表示するようになっているので仕方ないですね。
ttp://www.xrea.com/?action=ad
>当サイトは、無料運営のため、広告コードを自分で挿入する、または、自動的に挿入して頂く必要があります。

>>521
アドバイスどうもありがとうございます。
PukiWikiPlusのamazonプラグインに付いていたプラグイン作者さん?のアフィリエイトコードは外しました。

>>526
CGM型のサイトを運営して収益が出る場合、運営者だけが利益を得て、参加者に利益が還元されないと、不公平=不満に感じる人もいるかもしれませんね。
このまとめサイトは、ソースコード置き場+自分のメモという感じで使っていますが、利益が出せるでしょうか?

営利目的の企画として行なうなら、企業や出版社等に運営してもらった方が、本格的になっていいかもしれませんね。(^^;
…どこかで「PHPでOOP」講座を作ってもらえないでしょうか?>PHPプロさんとか?

>>527
勉強するとき、本を読む人っていますよね?
本は読まない人もいると思いますが、本の情報も調べたのでついでにまとめました。



534 名前:nobodyさん mailto:sage [2008/02/25(月) 12:58:27 ID:???]
1の目的がよくわらん。
1がコテハン使ってスレをリードするのおかしいやろ?
まとめサイトも1が作るのちゃうやろ
名無しがやることやろ


535 名前:nobodyさん mailto:sage [2008/02/25(月) 13:00:22 ID:???]
1がスレをリードせんといて
長くレスが続くなら
それは本当に需要のあるスレであって
1が作り上げたスレになってるやん






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

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

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