/[cvs]/nfo/php/libs/org.netfrag.glib/DesignPattern/MVC.php
ViewVC logotype

Annotation of /nfo/php/libs/org.netfrag.glib/DesignPattern/MVC.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.12 - (hide annotations)
Mon Mar 10 23:30:27 2003 UTC (21 years, 5 months ago) by joko
Branch: MAIN
Changes since 1.11: +8 -1 lines
+ fixed metadata for phpDocumentor

1 joko 1.1 <?php
2     /**
3 joko 1.8 * This file contains the DesignPattern::MVC class
4 joko 1.1 *
5 joko 1.7 * @author Andreas Motl <andreas.motl@ilo.de>
6 joko 1.6 * @package org.netfrag.glib
7     * @name DesignPattern::MVC
8 joko 1.9 *
9     *
10 joko 1.12 */
11    
12    
13     /**
14 joko 1.9 *
15     * <b>Cvs-Log:</b>
16 joko 1.5 *
17 joko 1.9 * <pre>
18 joko 1.12 * $Id: MVC.php,v 1.11 2003/03/10 22:31:56 joko Exp $
19 joko 1.2 *
20     * $Log: MVC.php,v $
21 joko 1.12 * Revision 1.11 2003/03/10 22:31:56 joko
22     * + fixed metadata for phpDocumentor
23     *
24 joko 1.11 * Revision 1.10 2003/03/05 17:02:22 joko
25     * updated docu (phpDocumentor testing....)
26     *
27 joko 1.10 * Revision 1.9 2003/03/05 16:32:18 joko
28     * updated docu (phpDocumentor testing....)
29     *
30 joko 1.9 * Revision 1.8 2003/03/05 16:10:17 joko
31     * updated docu (phpDocumentor testing....)
32     *
33 joko 1.8 * Revision 1.7 2003/03/05 15:41:03 joko
34     * updated docu (phpDocumentor testing....)
35     *
36 joko 1.7 * Revision 1.6 2003/03/05 15:24:23 joko
37     * updated docu (phpDocumentor testing....)
38     *
39 joko 1.6 * Revision 1.5 2003/03/03 21:57:42 joko
40     * changed base class
41     *
42 joko 1.5 * Revision 1.4 2003/03/01 22:44:54 joko
43     * setup_views not required?
44     *
45 joko 1.4 * Revision 1.3 2003/03/01 21:13:00 joko
46     * now actually doing something via '->perform'
47     *
48 joko 1.3 * Revision 1.2 2003/03/01 16:53:57 joko
49 joko 1.5 * + now propagating/forwarding passed-in data to add_[model|view|controller] to base class method DesignPattern::Container::push_element to store it
50 joko 1.3 * is this a case for aspect-oriented-programming?
51     * - removed calls to _abstract_method
52     *
53 joko 1.2 * Revision 1.1 2003/03/01 15:31:18 joko
54     * + initial commit
55 joko 1.9 * </pre>
56 joko 1.1 *
57     *
58     */
59    
60    
61     /**
62 joko 1.8 * This tries to abstract some parts of the MVC Pattern
63 joko 1.1 *
64     * @author Andreas Motl <andreas.motl@ilo.de>
65 joko 1.6 * @link http://www.netfrag.org/~joko/
66 joko 1.1 * @copyright (c) 2003 - All Rights reserved.
67     * @license GNU LGPL (GNU Lesser General Public License)
68 joko 1.6 * @link http://www.gnu.org/licenses/lgpl.txt
69 joko 1.1 *
70     * @package org.netfrag.glib
71 joko 1.10 * @subpackage DesignPattern
72 joko 1.6 * @name DesignPattern::MVC
73 joko 1.1 *
74 joko 1.9 *
75 joko 1.6 * @todo xyz
76     * @todo bla, bli, blub
77 joko 1.1 *
78     *
79     */
80 joko 1.5 class DesignPattern_MVC extends DesignPattern_Facade {
81 joko 1.1
82 joko 1.3 var $_model = array();
83     var $_view = array();
84     var $_controller = array();
85    
86     var $_performed_result = null;
87 joko 1.1
88    
89     /**
90     * The constructor ...
91     * ... just does nothing.
92     *
93     * @param registry
94     */
95 joko 1.5 function constructor() {
96     parent::constructor();
97 joko 1.1 }
98    
99     function _abstract_method($method) {
100 joko 1.2 $package = get_class($this);
101 joko 1.3 $package_p = get_parent_class($this);
102     print "DesignPattern::MVC.$package_p.$package: Please implement method '$method'.<br/>";
103 joko 1.1 }
104 joko 1.2
105 joko 1.3 // spool controller rules
106     function &perform() {
107    
108     $this->_model_data = &$this->get_model_data();
109     $this->_controller_data = &$this->get_controller_data();
110    
111     //print Dumper($this);
112     //exit;
113    
114     // create instance of controller from module
115     $this->_controller_instance = mkObject($this->_controller_data[module]);
116    
117     // trace
118     //print Dumper($this);
119     //print Dumper($this->_controller_data);
120     //print Dumper($this->_controller_instance);
121     //exit;
122    
123     //$this->perform_rules();
124    
125     // new!!! request data is propagated here!!!
126     // FIXME: '_raw[request]' - really?
127     $this->_controller_instance->set_request(&$this->_raw[request]);
128    
129     $this->_controller_instance->set_rules($this->_controller_data[rules]);
130     $this->_performed_result = $this->_controller_instance->perform($this->_model_data);
131    
132     // finally, re-integrate into main application flow
133     return $this->handle();
134    
135     }
136    
137     // dispatch on controller state flags/variables
138     function handle() {
139     $this->_abstract_method('handle');
140     }
141 joko 1.2
142 joko 1.3 function setup_views() {
143 joko 1.4 //$this->_abstract_method('setup_views');
144 joko 1.3 }
145 joko 1.5
146    
147 joko 1.1 function add_model() {
148 joko 1.2 $args = &func_get_args();
149 joko 1.5 $this->_container->push('model', &$args[0]);
150 joko 1.1 }
151    
152     function add_view() {
153 joko 1.2 $args = &func_get_args();
154 joko 1.5 $this->_container->push('view', &$args[0]);
155 joko 1.1 }
156    
157     function add_controller() {
158 joko 1.2 $args = &func_get_args();
159 joko 1.5 $this->_container->push('controller', &$args[0]);
160 joko 1.3 }
161    
162     function &get_model_data() {
163 joko 1.5 return $this->_container->last('model');
164 joko 1.3 }
165    
166     function &get_view_data() {
167     $args = &func_get_args();
168     $slot = $args[0];
169 joko 1.5 return $this->_container->slot('view', $slot);
170 joko 1.3 }
171    
172     function &get_controller_data() {
173 joko 1.5 return $this->_container->last('controller');
174 joko 1.1 }
175    
176     }
177    
178     ?>

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed