inc/classes/exceptions/template/class_InvalidTemplateVariableNameException.php -text
inc/classes/exceptions/template/class_UnexpectedTemplateTypeException.php -text
inc/classes/exceptions/template/class_UnsupportedTemplateEngineException.php -text
+inc/classes/exceptions/template/class_ViewHelperNotFoundException.php -text
inc/classes/interfaces/.htaccess -text
inc/classes/interfaces/application/.htaccess -text
inc/classes/interfaces/application/class_ManageableApplication.php -text
inc/classes/interfaces/language/class_ManageableLanguage.php -text
inc/classes/interfaces/template/.htaccess -text
inc/classes/interfaces/template/class_CompileableTemplate.php -text
+inc/classes/interfaces/template/view/class_ViewHelper.php -text
inc/classes/main/.htaccess -text
inc/classes/main/class_BaseFrameworkSystem.php -text
inc/classes/main/class_FrameworkArrayObject.php -text
/**
* The constructor
*
- * @param $class An array holding our informations
- * @param $code Code number for the exception
+ * @param $class An array holding our informations
+ * @param $code Code number for the exception
* @return void
*/
public function __construct (BaseFrameworkSystem $class, $code) {
--- /dev/null
+<?php
+/**
+ * An exception thrown when a given view helper was not found
+ *
+ * @author Roland Haeder <webmaster@mxchange.org>
+ * @version 0.3.0
+ * @copyright Copyright(c) 2007, 2008 Roland Haeder, this is free software
+ * @license GNU GPL 3.0 or any newer version
+ * @link http://www.mxchange.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+class ViewHelperNotFoundException extends FrameworkException {
+ /**
+ * The constructor
+ *
+ * @param $msgArray An array holding our informations
+ * @param $code Code number for the exception
+ * @return void
+ */
+ public function __construct (array $msgArray, $code) {
+ // Add a message around the missing class
+ $message = sprintf("[%s:] View-Helper <u>%s</u> ist ungültig.",
+ $msgArray[0]->__toString(),
+ $msgArray[1]
+ );
+
+ // Call parent constructor
+ parent::__construct($message, $code);
+ }
+}
+
+// [EOF]
+?>
--- /dev/null
+<?php
+/**
+ * An interface for view helpers
+ *
+ * @author Roland Haeder <webmaster@mxchange.org>
+ * @version 0.3.0
+ * @copyright Copyright(c) 2007, 2008 Roland Haeder, this is free software
+ * @license GNU GPL 3.0 or any newer version
+ * @link http://www.mxchange.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+interface ViewHelper extends FrameworkInterface {
+ /**
+ * The execute method for executing the view helper
+ *
+ * @param $args Arguments to send to the view helper
+ * @return mixed Unknown return arguments, or void
+ */
+ function execute (array $args = null);
+}
+
+// [EOF]
+?>
*/
private $regExpCodeTags = '/\{\?([a-z_]+)(:("[^"]+"|[^?}]+)+)?\?\}/';
+ /**
+ * Loaded helpers
+ */
+ private $helpers = array();
+
// Exception codes for the template engine
const EXCEPTION_TEMPLATE_TYPE_IS_UNEXPECTED = 0xa00;
- const TEMPLATE_CONTAINS_INVALID_VAR_EXCEPTION = 0xa01;
+ const EXCEPTION_TEMPLATE_CONTAINS_INVALID_VAR = 0xa01;
+ const EXCEPTION_INVALID_VIEW_HELPER = 0xa02;
/**
* Private constructor
// Is the variable name valid?
if (($variableMatches[1][$key] != $this->getConfigInstance()->readConfig("tpl_valid_var")) && ($variableMatches[1][$key] != "config")) {
// Invalid variable name
- throw new InvalidTemplateVariableNameException(array($this, $this->getLastTemplate(), $variableMatches[1][$key], $this->getConfigInstance()), self::TEMPLATE_CONTAINS_INVALID_VAR_EXCEPTION);
+ throw new InvalidTemplateVariableNameException(array($this, $this->getLastTemplate(), $variableMatches[1][$key], $this->getConfigInstance()), self::EXCEPTION_TEMPLATE_CONTAINS_INVALID_VAR);
}
// Try to assign it, empty strings are being ignored
break;
}
}
+
+ /**
+ * Loads a given view helper (by name)
+ *
+ * @param $helperName The helper's name
+ * @return void
+ * @throws ViewHelperNotFoundException If the given view helper was not found
+ */
+ protected function loadViewHelper ($helperName) {
+ // Make first character upper case, rest low
+ $helperName = ucfirst($helperName);
+
+ // Is this view helper loaded?
+ if (!isset($this->helpers[$helperName])) {
+ // Create a class name
+ $className = "{$helperName}ViewHelper";
+
+ // Does this class exists?
+ if (!class_exists($className)) {
+ // Abort here!
+ throw new ViewHelperNotFoundException(array($this, $helperName), self::EXCEPTION_INVALID_VIEW_HELPER);
+ }
+
+ // Generate new instance
+ $eval = sprintf("\$this->helpers[%s] = %s::create%s();",
+ $helperName,
+ $className,
+ $className
+ );
+
+ // Run the code
+ @eval($eval);
+ }
+
+ // Return the requested instance
+ return $this->helpers[$helperName];
+ }
}
// [EOF]