11 |
* $Id$ |
* $Id$ |
12 |
* |
* |
13 |
* $Log$ |
* $Log$ |
14 |
|
* Revision 1.4 2003/03/01 22:44:54 joko |
15 |
|
* setup_views not required? |
16 |
|
* |
17 |
|
* Revision 1.3 2003/03/01 21:13:00 joko |
18 |
|
* now actually doing something via '->perform' |
19 |
|
* |
20 |
* Revision 1.2 2003/03/01 16:53:57 joko |
* Revision 1.2 2003/03/01 16:53:57 joko |
21 |
* + now propagating/forwarding passed-in data to add_[model|view|controller] to base class method DesignPattern::Container::__add_entity to store it |
* + now propagating/forwarding passed-in data to add_[model|view|controller] to base class method DesignPattern::Container::__push_element to store it |
22 |
* is this a case for aspect-oriented-programming? |
* is this a case for aspect-oriented-programming? |
23 |
* - removed calls to _abstract_method |
* - removed calls to _abstract_method |
24 |
* |
* |
62 |
loadModule('DesignPattern::Container'); |
loadModule('DesignPattern::Container'); |
63 |
class DesignPattern_MVC extends DesignPattern_Container { |
class DesignPattern_MVC extends DesignPattern_Container { |
64 |
|
|
65 |
var $_model = NULL; |
var $_model = array(); |
66 |
var $_view = NULL; |
var $_view = array(); |
67 |
var $_controller = NULL; |
var $_controller = array(); |
68 |
|
|
69 |
|
var $_performed_result = null; |
70 |
|
|
71 |
|
|
72 |
/** |
/** |
80 |
|
|
81 |
function _abstract_method($method) { |
function _abstract_method($method) { |
82 |
$package = get_class($this); |
$package = get_class($this); |
83 |
print "$package: Please implement method '$method'.<br/>"; |
$package_p = get_parent_class($this); |
84 |
|
print "DesignPattern::MVC.$package_p.$package: Please implement method '$method'.<br/>"; |
85 |
} |
} |
86 |
|
|
87 |
|
// spool controller rules |
88 |
|
function &perform() { |
89 |
|
|
90 |
|
$this->_model_data = &$this->get_model_data(); |
91 |
|
$this->_controller_data = &$this->get_controller_data(); |
92 |
|
|
93 |
|
//print Dumper($this); |
94 |
|
//exit; |
95 |
|
|
96 |
|
// create instance of controller from module |
97 |
|
$this->_controller_instance = mkObject($this->_controller_data[module]); |
98 |
|
|
99 |
|
// trace |
100 |
|
//print Dumper($this); |
101 |
|
//print Dumper($this->_controller_data); |
102 |
|
//print Dumper($this->_controller_instance); |
103 |
|
//exit; |
104 |
|
|
105 |
|
//$this->perform_rules(); |
106 |
|
|
107 |
|
// new!!! request data is propagated here!!! |
108 |
|
// FIXME: '_raw[request]' - really? |
109 |
|
$this->_controller_instance->set_request(&$this->_raw[request]); |
110 |
|
|
111 |
|
$this->_controller_instance->set_rules($this->_controller_data[rules]); |
112 |
|
$this->_performed_result = $this->_controller_instance->perform($this->_model_data); |
113 |
|
|
114 |
|
// finally, re-integrate into main application flow |
115 |
|
return $this->handle(); |
116 |
|
|
117 |
|
} |
118 |
|
|
119 |
|
// dispatch on controller state flags/variables |
120 |
|
function handle() { |
121 |
|
$this->_abstract_method('handle'); |
122 |
|
} |
123 |
|
|
124 |
|
function setup_views() { |
125 |
|
//$this->_abstract_method('setup_views'); |
126 |
|
} |
127 |
|
|
128 |
function add_model() { |
function add_model() { |
129 |
$args = &func_get_args(); |
$args = &func_get_args(); |
130 |
$this->__add_entity('model', &$args); |
$this->__push('model', &$args[0]); |
131 |
} |
} |
132 |
|
|
133 |
function add_view() { |
function add_view() { |
134 |
$args = &func_get_args(); |
$args = &func_get_args(); |
135 |
$this->__add_entity('view', &$args); |
$this->__push('view', &$args[0]); |
136 |
} |
} |
137 |
|
|
138 |
function add_controller() { |
function add_controller() { |
139 |
$args = &func_get_args(); |
$args = &func_get_args(); |
140 |
$this->__add_entity('controller', &$args); |
$this->__push('controller', &$args[0]); |
141 |
|
} |
142 |
|
|
143 |
|
function &get_model_data() { |
144 |
|
return $this->__last('model'); |
145 |
|
} |
146 |
|
|
147 |
|
function &get_view_data() { |
148 |
|
$args = &func_get_args(); |
149 |
|
$slot = $args[0]; |
150 |
|
return $this->__slot('view', $slot); |
151 |
|
} |
152 |
|
|
153 |
|
function &get_controller_data() { |
154 |
|
return $this->__last('controller'); |
155 |
} |
} |
156 |
|
|
|
function setup_views() { |
|
|
$this->_abstract_method('setup_views'); |
|
|
} |
|
|
|
|
157 |
} |
} |
158 |
|
|
159 |
?> |
?> |