<?php namespace elanpl\L3; abstract class ViewModel{ private $module; private $controller; private $action; public $_L3; public function __construct($arg) { if($arg instanceof Applicstion){ $this->_L3 = $arg; } else{ global $_L3; $this->_L3 = $_L3; } $match = $this->_L3->findControllerInCallStack(); $this->controller = $match['controller']; $this->module = $match['module']; $this->action = $match['action']; } public function getController(){ if(!isset($this->controller)){ throw new \Exception("Controller not found in ViewModel \"".get_class($this)."! Use parent::__construct() in the class constructor or setController method."); } else return $this->controller; } public function getAction(){ if(!isset($this->action)){ throw new \Exception("Action not found in ViewModel \"".get_class($this)."! Use parent::___construct() in the class constructor or setAction method."); } return $this->action; } public function getModule(){ return $this->module; } public function setController($controller){ return $this->controller = $controller; } public function setAction($action){ return $this->action = $action; } public function setModule($module){ return $this->module = $module; } public function getDTO(){ //function to be overriden } }