/** * Default constructor * * @param string $fileLocation full path location of file * @param string $method the current method whose annotations should be used * @param string $caller determine if the caller is the built in beforeAction or afterAction */ public function __construct($fileLocation, $method, $caller = NULL) { $this->callerAnnotations = array(); $this->dependenciesLocations = array(); $annotations = Annotation::discover($fileLocation); if (isset($annotations[Functions::escapeCamel($method)])) { $this->callerAnnotations = $annotations[Functions::escapeCamel($method)]; } if (!isset($annotations[$method]) && ($caller == "beforeAction" || $caller == "afterAction")) { $this->callerAnnotations = $annotations[$caller]; } $this->dispatchAnnotations(); }
/** * Outputs the current View Model * * @param object|string $viewModel the name of the location of the view model relative to the viewModels directory * @param object $boundModel an optional object to manually bind to the view * @return Mixed */ public function viewModel($viewModel = NULL, $boundModel = NULL) { if (!empty($viewModel) && is_string($viewModel)) { if (file_exists("application/viewModels/" . $viewModel . "ViewModel.class.php")) { $annotations = Annotation::discover("application/viewModels/" . $viewModel . "ViewModel.class.php"); if (!empty($annotations)) { $this->view->viewModel = $annotations; } else { include_once "application/viewModels/" . $viewModel . "ViewModel.class.php"; eval("\$object = new " . substr($viewModel, strrpos($viewModel, "/") + 1) . "();"); $this->view->viewModel = array_fill_keys(array_keys((array) $object), NULL); } } } if (!empty($viewModel) && is_object($viewModel)) { $this->view->viewModel = array_fill_keys(array_keys((array) $viewModel), NULL); if ($boundModel == NULL) { $boundModel = $viewModel; } } if (!empty($viewModel) && !is_string($viewModel) && !is_object($viewModel)) { $this->view->viewModel = $viewModel; } $this->view->boundModel = $boundModel; echo $this->view; }