Webでオブジェクト指向プログラミング
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2005/12/02(金) 11:18:17ID:lnZM9OlM・OOP、MVC、デザパタなどのコンセプト的な話題
・OOにまつわる言語比較(言語批判はその言語で開発してる人に失礼にあたることが多いのでなるべく禁止でお願いします)
・保守、再利用、生産性、開発環境などの実践的な話題
・Webサーバ、DBなどの外部との親和性に関する問題
・学習、教育などの方法論
などなど。
前スレ
PHPでオブジェクト指向プログラミング
http://pc8.2ch.net/test/read.cgi/php/1113724557/
0320nobodyさん
2007/02/19(月) 03:34:31ID:???言いたいことはわかるけど、概念自体皆無とか不可能ってのは言い過ぎじゃね?
そもそもオブジェクト指向ってオブジェクト単位で独立した存在にするだろ。
だから、カプセル化=独立 であって カプセル化=隠蔽 ではないと思う。
PEARもPrivateメソッドやフィールドは先頭にアンダーバー(_)をつけるなど、
コーディング規約で決めてるわけだし。
もちろん、規約であって言語仕様じゃないから、
簡単にアクセスできて崩壊してしまうがの。
0321nobodyさん
2007/02/19(月) 03:48:01ID:???> カプセル化=隠蔽 ではない
は言い過ぎだったかな。
オブジェクトを独立させる為にカプセル化を行う。
隠蔽はカプセル化を厳密に行う手段(手法)ってことでどぉ。
0322nobodyさん
2007/02/20(火) 05:29:07ID:???そんな規約定めてるPEAR自身、アンダーバーがついてるプライベートであるはずのメンバに
パブリックアクセスしてる件について
0323nobodyさん
2007/02/20(火) 05:34:26ID:???4の解説書なんだから、コーディング規約のことまでいちいち面倒見る必要無いだろ。
概念として説明してもかえって紛らわしいだけ。
だからPHP5が生まれたわけで。
0326nobodyさん
2007/02/20(火) 21:40:15ID:???0327nobodyさん
2007/02/20(火) 22:14:00ID:???0328nobodyさん
2007/02/20(火) 22:33:04ID:???0329nobodyさん
2007/02/21(水) 01:59:11ID:???それおもしろそうだな。
symfonyのsfMixer使ってやれば、
意外とそれなりにつかえるもんになりそう。
まぁ、ぐちゃぐちゃになりそうな気もしなくも無いけど…
0330nobodyさん
2007/02/21(水) 02:19:36ID:???そんなに難しくもなさそうだし
0331nobodyさん
2007/02/21(水) 02:53:14ID:???function hoge(string s) {・・・
っていう定義の関数をhoge(12);で呼び出した場合、エラーにすべき?例外投げるべき?暗黙的にキャストすべき?
0332nobodyさん
2007/02/21(水) 05:54:57ID:???と考えられるから
事前にstringにキャストされてたらok
int等ならfatal errorじゃない?
0333nobodyさん
2007/02/21(水) 18:05:58ID:???とりあえずpearのDB呼んでみる。
0336nobodyさん
2007/03/26(月) 00:50:31ID:yFIZR+Qo入力処理
画像処理
ログ処理
表示処理
とかにクラスが分かれている場合、それぞれでオブジェクトを作成するの?
0337nobodyさん
2007/03/26(月) 02:17:48ID:???0338nobodyさん
2007/03/26(月) 17:48:59ID:yFIZR+Qo0339nobodyさん
2007/03/27(火) 11:03:25ID:???0340nobodyさん
2007/03/27(火) 11:09:19ID:???0341nobodyさん
2007/03/28(水) 04:38:55ID:???体で感じるんだ。
0342nobodyさん
2007/03/28(水) 22:47:10ID:???0343nobodyさん
2007/04/23(月) 00:54:16ID:+2ZNQJB1いきなりTemplate Method ではまった。
本の通りに打ち込んでるのに、クライアント呼んでも
画面が空白のままだ。
試しにクライアントの中で文字列出力をしてみると、
スクリプトの先頭では出力できるけど、require_once
以降ではechoしても出力できない。
var_dumpでnewしたオブジェクトを表示させようとしても
空白だ。
何だこの現象は。
0344nobodyさん
2007/04/23(月) 00:55:54ID:+2ZNQJB1軽いノリで始めるにはPHP5は結構いい感じに思えた。
0345nobodyさん
2007/04/23(月) 11:54:30ID:???エラーメッセージは表示される設定になってるのか?
ダウンロードしたソースを実行してるのか
自分で打ち込んで実行してるのか?
0346nobodyさん
2007/04/23(月) 16:31:14ID:LAYu+KhNホームページ作成ソフトがあったらいいのに・・・。
もし、プロ並みにキレイなホームページが作成が出来たとしたら、
情報商材で一旗あげようと思っているあなたの人生は変りますか?
【早くも成功者続出!】起業サイトビルダー
http://www.infotop.jp/click.php?aid=16484&iid=5683
0347343
2007/04/24(火) 00:02:00ID:yjQgQozI環境はPHP5.2.1 Apache2.0.59 WindpowsXP です。
error_reportingは E_ALL | E_STRICT っす。
だけど、HTML吐かれてるんだよね。で、そのHTMLソース見ると、
スクリプトに指定もしてないDOCTYPE宣言とか、METAタグとか、
空のBODYタグとか入るんだけど、これどういうときなるんだろ?
ちなみに、頭に叩きこうもと思って自分で打ち込んだやつ。
ダウンロードしたやつは動いた。違いといえば、require_once
のところを別の<?php ?>ブロックにしてないところだけど・・・。
0348nobodyさん
2007/04/24(火) 00:51:50ID:????>の後に空白とか入ってないか確かめてみ
0349nobodyさん
2007/04/24(火) 02:17:23ID:0JhT4MiQちなみに echoじゃなくて、var_dump()の方
0350343
2007/04/24(火) 02:42:26ID:yjQgQozI?>の後の空白はなかったです。
ほかにもHTMLモードに移行するような箇所はなし。
もっかい見てみますけど・・・。
>>349
echoもvar_dumpも出力してくれません。どうやっても、
DOCTYPE宣言、METAタグ、要素が空のBODYタグが出力され、
結果、真っ白な画面に。
しかし、こんな簡単なスクリプトで・・・。
php.iniの問題でしょうか?phpinfo()は動いてますが。
オブジェクト指向と関係ない話で申し訳ない。
0351nobodyさん
2007/04/24(火) 11:01:21ID:???UTF-8で保存しているなら、BOM無しのUTF-8Nで保存し直したら、空白が直るかもしれないよ。
UTF-8とUTF-8Nの違い=BOMについてはGoogleで検索して!
0352nobodyさん
2007/04/25(水) 23:24:32ID:B1ZZgxV3フリーのエディタの中には、デフォでBOMを付加する設定になっていたりする...
UTF-8のBOM付きでは、PHPは動かなかった!
0354nobodyさん
2007/04/27(金) 01:50:35ID:???分業の切り分けもしやすいと最近思った。
クラスが2、3個とか済む軽いのはPHPでさくっと実装するけど。
要件で言語指定がないとき、みんなの言語の選定基準って何?
0355nobodyさん
2007/04/30(月) 20:32:09ID:???0356nobodyさん
2007/05/03(木) 13:44:43ID:???サクサク開発できるPHPは良い
0357nobodyさん
2007/06/05(火) 12:21:35ID:/w569Zaf0358nobodyさん
2007/06/05(火) 16:24:00ID:???「ウェブ社会をどう生きるか」「iPhone 衝撃のビジネスモデル」「低度情報化社会」
http://iiyu.asablo.jp/blog/2007/06/05/1556512
0359nobodyさん
2008/06/19(木) 06:33:48ID:4gsKqLnV・ユーザーAがユーザーBにメッセージを送る
・ユーザーBにメッセージ到着メールを送る
・システム管理人にメッセージ到着メールを送る
このとき、私書箱メッセージもメール形式でmail classから処理できるようにするとして、
mailオブジェクトを3つ作って処理って普通ですか?
0360nobodyさん
2008/06/20(金) 09:01:44ID:RWxKmjHmどっちを採用してもおかしくないよ。
0361nobodyさん
2008/06/25(水) 04:06:12ID:???まずその仕様をオブジェクト指向にしたい理由を言って下さい
メリット・デメリットなど
その後にその仕様の目的にあったクラス構成を議論したいです
0362nobodyさん
2008/06/25(水) 04:07:57ID:???そうでないロジックが存在する
0363nobodyさん
2008/06/29(日) 01:46:48ID:???クラス名をアンダーバーで繋げるという回避策は悲しすぎる。
唯一悔やまれる点だわ。
0364nobodyさん
2008/07/02(水) 02:00:54ID:???問題が解決するからじゃね?
0365nobodyさん
2008/07/03(木) 23:11:58ID:???あれがあればいろんなものをStaticなまま呼び出せるのにー。
0366nobodyさん
2008/07/04(金) 04:53:13ID:zouluv3Bそれってクラス名得る以外に使い道あるの?
0367nobodyさん
2008/07/04(金) 12:41:49ID:???0368nobodyさん
2008/07/21(月) 01:17:35ID:gHzQi72i書くのって、やはり負けですかね。なにがなんでもクラスとして記述した方がいい
でしょうか?
0370nobodyさん
2008/07/21(月) 15:54:45ID:Aaw/YKL1クラスが参照するサブルーチンて書いてあるけど、ちょっと意味かわからない
0371nobodyさん
2008/07/21(月) 16:12:59ID:gHzQi72iええっとですね、hoge.pmないに、コンストラクタとクラスを書くのが
オブジェクト指向でのモジュールですが、その中のいくつかのクラスが
使い回せるサブルーチン(例えば、変数が英数かチェックするサブルーチン)
を書いておく、という感じです。
そうするといくつかのクラスの中で英数チェックを共通かできるので。
ただ、英数チェックなどそういうチェック部分だけをオブジェクト指向
モジュール化してという方法もありますが、いまいち、決めかねています。
一般的にはどういう感じでやっているのかなぁとアドバイスを求めた次第です。
0372nobodyさん
2008/07/21(月) 16:19:42ID:gHzQi72i中にある特定のクラスが処理として行なう共通な部分(たとえば英数半角チェック)
を抜き出して、それをサブルーチンとしてhoge.pmの中に記述して、クラスが
使うようにする(メインプログラムcgiが直接利用するのではない)、という
のは、手法としてはどうですか?
という意味です。オブジェクト指向でつくられたモジュール内のサブルーチンは
簡単にいってクラスとして書くけど、単なる英数半角チェックルーチンをサブルーチン
化した場合はそれはクラスというよりやっぱり単なるサブルーチンでしかない
ですよね?
いや、その半角英数チェックのサブルーチン内で処理後の変数をあらたに定義
すればその半角英数チェックのルーチンはクラスとしていってもいいとおもいますが。
0373nobodyさん
2008/07/21(月) 19:17:33ID:???0374nobodyさん
2008/07/22(火) 04:02:09ID:???0375nobodyさん
2008/07/22(火) 23:13:02ID:???動画検索ロボットが毎日動画を自動収集!!
アクセスアップ間違いなし。
もちろん海外のサーバーなので違法性も一切ありません。
完全無料!!いくらでも動画サイトを作成できます。
http://sxv.xgun.tv
▼mixiのトピックです。
http://mixi.jp/view_bbs.pl?id=33336111&comment_count=0&comm_id=326589
▼自分のmixiです。
http://mixi.jp/show_friend.pl?id=15652823
0376nobodyさん
2008/11/13(木) 09:58:56ID:???おま、一言でいえるかっての!
0378nobodyさん
2008/11/13(木) 12:52:57ID:???0379nobodyさん
2008/11/13(木) 17:13:17ID:???upper 上底
lower 下底
height 高さ
それぞれのアクセッサ
コンストラクタで初期値を設定
面積を求めるメソッド calcArea()
現在のフィールド値を画面に表示するshow() メソッド
誰かおしえてください
0380nobodyさん
2008/11/14(金) 02:19:47ID:beq8Chz/0381nobodyさん
2008/11/14(金) 02:42:17ID:s13+G+Dg0382nobodyさん
2008/12/03(水) 08:17:46ID:RtCrzg9N日ごとにincludeするファイルが増えていくような気がする
昔はファイル一枚あればいいだったのに
ってか、はっぱ隊とかウンナンとか10年ぶりぐらいに思い出したような
0383nobodyさん
2008/12/04(木) 00:43:26ID:XlgDZGNX0384nobodyさん
2008/12/09(火) 15:36:44ID:???アマゾンンの読者レビューでは褒められてたけど。
0385nobodyさん
2008/12/09(火) 16:06:48ID:???0386nobodyさん
2008/12/09(火) 16:33:10ID:???継承と多態の意味くらいが分かる。
0387nobodyさん
2008/12/12(金) 01:33:02ID:???class Trapezoid
{
private upper ;
private lower ;
private height ;
function __construct( $u , $l , $h ) {
$this->upper = $u ;
$this->lower=$l;
$this->height=$h;
}
略
}
0388nobodyさん
2008/12/12(金) 01:39:31ID:???0389nobodyさん
2008/12/12(金) 01:59:29ID:???うむ。やはり宿題か。だったら
面積求める抽象クラス
と
継承して作った四角や三角
っていうのが本当に伝えたかったことじゃないだろかなんて思った。
0390nobodyさん
2009/01/01(木) 09:21:40ID:???利用者ごとにログインし、見た目をカスタマイズ出来るような仕組みを考えています。
で、ログイン状態やユーザー情報というのはModelに相当すると思うんですが、
見た目の情報はModelには入りませんよね。
そもそもViewの情報はどこで管理すべきなのか。
Viewで良いのか。だとして、ユーザー情報との同期はどうとれば良いのか。
分からないところだらけですが、よろしくお願いします。
0391nobodyさん
2009/01/01(木) 09:22:32ID:???0392nobodyさん
2009/01/01(木) 09:50:26ID:???だからこそ質問しているわけですが・・・
0393nobodyさん
2009/01/01(木) 09:59:06ID:???0394nobodyさん
2009/01/02(金) 22:50:28ID:???前提知識がないから、回答する側も途方にくれてしまう。
入門書等でWEBアプリってどういう風に作るのか、大まかにつかんだ方がいいかも。
0395nobodyさん
2009/04/17(金) 23:34:39ID:???0396nobodyさん
2009/07/09(木) 01:01:48ID:qbvjwLD60397nobodyさん
2009/10/23(金) 00:12:07ID:???class hogeClassUnit extends dbConnectBase{
private var $name; // 以下20項目くらい
public function set_name($str){ // 受け取ったデータを加工したり精査したりでこれも20項目くらい
public function get_name(){ // クラスから取り出すだけ 以下20項目くらい
public function register(){ // ここまできて、登録とか何たらとかの処理を書き始める。
こういう風に細かくやるのが普通なのでしょうか?
単純なことが多いとはいえ、ずいぶんとソースコードが長い
0398nobodyさん
2009/10/23(金) 00:27:46ID:???OOPの表面だけ真似るんじゃなくて本質を学んだほうがいいと思うぞ
0399nobodyさん
2009/10/23(金) 03:13:03ID:???0400age
2009/11/12(木) 11:26:43ID:FhD9csekfunction getA(){
{
return new b('hoge');
}
}
class b{
public $a;
protected $_z;
public function __construct($data)
{
$this->a = $data+$data;
$this->_z = $data;
}
}
上記のような、クラスがあって、aから、bが返されるのですが、bのprotected
のデータを取得したい場合はどうすればいいでしょうか。
たとえばbを継承したb'を作成し、zを取り出すメソッドを作っても、bのャCンスタンスを麹成しているのbヘ
aなのでb'のインスタンスは作られないですよね。
0401nobodyさん
2009/11/12(木) 11:44:55ID:???>たとえばbを継承したb'を作成し、zを取り出すメソッドを作っても、bのインスタンスを作成しているのは
>aなのでb'のインスタンスは作られないですよね。
aでb'のインスタンスを作るように変更すればいいのでは。
>上記のような、クラスがあって、aから、bが返されるのですが、bのprotected
>のデータを取得したい場合はどうすればいいでしょうか。
getZというメソッドを作るのはだめなの?
0402nobodyさん
2009/11/12(木) 11:51:13ID:???変更しないで挙動を変えたいなら、それこそa'とb'を作ってメソッドをオーバーライドするしかないかと
0403sage
2009/11/12(木) 14:29:44ID:FhD9csek有難う。
0404nobodyさん
2010/05/13(木) 18:19:29ID:9BJiXr6fhttp://okamikakushi.net/jp/wbiyhi1
俺やってみたけど、マジ寝てるだけで金くれたぞ!!
0405nobodyさん
2010/05/15(土) 17:20:55ID:???0406nobodyさん
2010/05/23(日) 16:33:14ID:ReStOCg4再利用したも猛者はいるか?
0409nobodyさん
2010/05/27(木) 12:15:02ID:???0410nobodyさん
2010/05/27(木) 20:21:31ID:P724q4SGって言われたら、どのようなオブジェクトを作りますか?
0411nobodyさん
2010/05/28(金) 20:25:52ID:???クライアントサイドプログラムはWeb制作板へ
って言います
0412入社1ヶ月の新人が書いてきた。うれしい。
2010/07/14(水) 20:35:40ID:???<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script>
//<!--
window.onload = function(){
kanako = createGirl('かなこ');
miku = createGirl('みく');
haruhi = createGirl('ハルヒ');
};
/*
* クローンを作成
*/
function createGirl( name )
{
var superClass = new girlClass();
var superClone = function(){};
superClone.prototype = superClass;
//これで他に影響ないクローン完成
var instanse = new superClone();
//いわゆるコンストラクタ
instanse.myName = name;
return instanse;
};
0413入社1ヶ月の新人が書いてきた。うれしい。
2010/07/14(水) 20:36:21ID:???* おんにゃのこクラス定義
*/
function girlClass()
{
//プロパティ宣言
girlClass.prototype.myName = "";
//振る舞い
girlClass.prototype.writeMyName = function()
{
document.write("私は"+this.myName+"だよ。<br />");
};
}
//-->
</script>
</head>
<body>
<input type="button" value="Execute" onclick="onClickExecute()" />
<script type="text/javascript">
function onClickExecute()
{
//おんにゃのこに名前を言ってもらう。
kanako.writeMyName();
miku.writeMyName();
haruhi.writeMyName();
}
</script>
</body>
</html>
0414nobodyさん
2010/07/15(木) 02:09:27ID:???0415nobodyさん
2010/07/15(木) 04:17:09ID:hmDV/lDTそんな事する意味が全くわからんwwww
なんのメリットがあるの??wwww
プロパティ宣言とかめっちゃウケルwww
0416nobodyさん
2010/07/15(木) 13:49:38ID:???なんでそんなことしなくちゃいけないんだよってやつ。
0417nobodyさん
2010/07/15(木) 16:43:10ID:???kanako = new girlClass('かなこ','girlmessage');
miku = new girlClass('みく','girlmessage');
haruhi = new girlClass('ハルヒ','girlmessage');
};
function girlClass( name , target )
{
girlClass.prototype.myName = name;
girlClass.prototype.target = target;
って書いたら全員ハルヒになったぞ
0418nobodyさん
2010/07/15(木) 16:49:47ID:???親クラスとして定義されている関数は触るなと。
了解した。
■ このスレッドは過去ログ倉庫に格納されています