PHPでOOP (894レス)
上下前次1-新
274(1): 2008/02/07(木)12:36 ID:??? AAS
[InsertModel.php]
<?php
/**
* データ追加Model抽象クラスです。
*/
class InsertModel extends DataModel
{
# @access sealed
function & _onExecute(&$param)
{
省8
275(1): 2008/02/07(木)12:37 ID:??? AAS
[SampleInsertModel.php]
<?php
/**
* データ追加 サンプルクラスです。
*/
class SampleInsertModel extends InsertModel
{
# @access protected
function & _onInsert(&$param)
{
省19
276: 2008/02/07(木)13:59 ID:??? AAS
細かい指摘になるけれど、継承関係の勉強中なので質問で書き込みします。
[InsertModel.php]
class InsertModel extends DataModel
function & _onExecute(&$param) のところは、
return $this->_OnInsert(&$param); となっているけれど、
return $this->_onInsert(&$param); が正しいという解釈で良いのですよね?
277: 2008/02/07(木)14:16 ID:??? AAS
>>273-275
ソースのサンプルサンクス。
イメージしてたよりも継承が多いですね。
全体ソースコードの可読性よりも、クラス単位での
再利用性を考えた場合は、このような構成になる
のでしょうね。早く慣れないといけません。
278: 2008/02/07(木)15:36 ID:??? AAS
まだ中身が出来ていない状況なので、修正の必要はあるだろうけど、
こんな感じでドキュメントもまとめていくと、分かりやすくなるだろうね。
■SampleInsertModelクラス[SampleInsertModel.php]
Model - DataModel - InsertModel - SampleInsertModel
◎概要
DBへのデータの記録、読み取りを行うクラス。
◎メンバ一覧
[publicコンストラクタ]
SampleInsertModel()
[publicメソッド]
省8
279(2): 2008/02/07(木)23:22 ID:??? AAS
>>263 ひとまず出来ました・・疲れました・説明は後でアップしようと思います・・
外部リンク[zip]:proxy.f3.ymdb.yahoofs.jp
280: に ◆lKs5QMUHoA 2008/02/07(木)23:27 ID:??? AAS
>>279
乙です。じっくりソースを読んでみます。
281(2): に ◆lKs5QMUHoA 2008/02/08(金)08:04 ID:??? AAS
せっかくプログラムを作っていただいたのだから、みんなでその説明文章をまとめるといいかもね。
例えば、こんな感じでhtmlで書いておいて、ファイル名をクリックすると、その詳細の説明のページに飛ぶとか。
[abstract]
[controls]
空
[models]
DataModel.php、DeleteModel.php、InsertModel.php、SelectModel.php、UpdateModel.php
[views]
HtmlQuickFormSmartyView.php、RenderView.php
[controls]
省20
282: 2008/02/08(金)08:10 ID:??? AAS
>>281
>>279ですがphpDocumentorで今作っているのでちょっと待っててね。
283: 2008/02/08(金)08:52 ID:??? AAS
phpDocumentorにソース読み込ませて吐かせただけです。
外部リンク[zip]:proxy.f3.ymdb.yahoofs.jp
フォルダ内のindex.htmlです、荒いですがご容赦を。
とりあえずトライアルなんでまだリファクタ出来そうだけど・・
[コントローラの処理]
_form_onLoad
_buttonHoge_onClick
[モデルの処理]
_onSelect
_onInsert
省9
284: 2008/02/08(金)09:26 ID:??? AAS
ファイルが見れん・・・
285(1): 2008/02/08(金)11:03 ID:??? AAS
OOP FW ソース
外部リンク[zip]:proxy.f3.ymdb.yahoofs.jp
OOP FW ドキュメント
外部リンク[zip]:proxy.f3.ymdb.yahoofs.jp
すいません再アップしました、ドキュメントにControlが反映されてませんでした。
286: 2008/02/08(金)11:20 ID:??? AAS
サンクス
287(1): 2008/02/08(金)11:51 ID:??? AAS
全体構成の把握はまだ出来てないけれど、只今、ソース解析中・・・
いちゃもんつけるつもりじゃないけれど、気になった点を2つ。
Control.phpのPOSTされたSubmitボタン名取得のところは
クラス化されてないのはどうしてなのでしょうか?
さらに非常にクラスが多くなって面倒になるから?
class Control extends Base
var \$_view_calss;
このメンバはあえてclassにしてない理由はあるのでしょうか。
288: 2008/02/08(金)12:39 ID:??? AAS
>>287
POSTされたサブミットボタン名取得部分は説明の通りです・・
今その部分をC#でのデリゲートで実装しようと思ってます。
Viewクラスexecuteのところもこのままでは$eパラメータが
コントローラから任意に渡せないので検討中です。
オブジェクトにexecute以外のパブリックメソッドを
実装しないのが目標です・・(※アクセサ以外)
289: 2008/02/08(金)13:12 ID:??? AAS
クラスの継承関係が結構複雑になってますね。
Documentsいただいても、追いかけていって、全体構造を把握するのが結構大変。
例えば、SampleInsertModelからその元を追っていくと、以下のような継承構造。
Base - Model - DataModel - InsertModel - SampleInsertModel
俺のメモとして、SampleInsertModelを追いかけていった様子をまとめておく。
■Base(抽象)クラス[fw/framework/Base.php]
●パブリックメソッド
& execute(&$param, $e) →アプリのログを記録する。_onExecute(&$param, $e)を実行
●プロテクテッドメソッド
_onExecute(&$param, $e) →サブクラスでオーバーライドして使用。
省4
290: 2008/02/08(金)13:15 ID:??? AAS
■DataModel(抽象)クラス[fw/abstract/models/DataModel.php]
●フィールド
$_items; // コントロール値のハッシュを保存
●パブリックメソッド
setItem($key, $value) // コントロール値を受け取り、$_itemsに代入
getItem($key) // $_itemsの値を返す。
■InsertModel(抽象)クラス[fw/abstract/models/InsertDataModel.php]
●シールドメソッド
& _onExecute(&$sender, $e) →onInsert(&$sender, $e)
●プロテクテッドメソッド
省6
291(1): 2008/02/08(金)13:32 ID:??? AAS
こうやってみてみると、クラスを継承する際の設計思想が見えてくるな。
どの段階で実装を替えるかを考えた場合、どのクラスを置き換えれば良いかも分かる。
しかし、俺はこれまでフレームワークの構成などをじっくり読んだりしたことが無いので、
つい、ここまでクラスを継承させるメリットがあるのかなとか思ってしまう。
なんか、1つのメソッドを実装するのに、1回継承してるって感じだよね。
例えば、Model(抽象)クラスの $src_file_name を別のものにする場合、
それ以降のクラスが全部影響するかの確認が必要なわけだから、
Model(抽象)クラス以降のものをすべて一つのクラスにまとめて書いても
同じなんじゃないかと思えてしまう。
こういうのとは別な場面で、継承しているメリットがあるってことかな?
292: 2008/02/08(金)13:51 ID:??? AAS
ちょっと紹介しておきますね。
フレームワークを使った開発のメリット、デメリットを教えてください
外部リンク:q.hatena.ne.jp
特集:第1回 フレームワーク「Struts」の基礎を知る (3/8)
フレームワークのメリットとデメリット
外部リンク[html]:www.itmedia.co.jp
293(1): 2008/02/08(金)15:31 ID:??? AAS
Control の & _onExecute(&\$param, \$e) で
\$this->_view_calss = \$view_calss;
というコードがあるけれど、右辺の \$view_calss って、
何処でも定義されてないですよね?
このまま動かすと、nullが入るだけのように思えるんだけど。
上下前次1-新書関写板覧索設栞歴
あと 601 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.027s