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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2 by joko, Sat Mar 1 16:53:57 2003 UTC revision 1.4 by joko, Sat Mar 1 22:44:54 2003 UTC
# Line 11  Line 11 
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   *   *
# Line 56  Line 62 
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   /**   /**
# Line 72  class DesignPattern_MVC extends DesignPa Line 80  class DesignPattern_MVC extends DesignPa
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  ?>  ?>

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.4

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