diff --git a/TplBlock.php b/TplBlock.php index fe802b7..36d5496 100644 --- a/TplBlock.php +++ b/TplBlock.php @@ -107,6 +107,12 @@ class TplBlock */ private $replaceNonGivenVars = true; + /** + * Use strict mode? + * + * @var boolean + */ + private $strictMode = true; /** * Initialize TplBlock * @@ -200,6 +206,19 @@ class TplBlock . '/is'; } + /** + * Make some tests to check template consistency. + * Return error message if needed, return 1 otherwise. + * + * @param string $str the string to check + * @return string message + */ + public function checkConsistency($str){ + + + return 1; + } + /** * Shake the template string and input vars then returns the parsed text. * @@ -211,6 +230,14 @@ class TplBlock */ public function applyTplStr($str, $subBlocsPath = "") { + if($this->strictMode){ + $consistency = self::checkConsistency($str); + if($consistency <> 1 ){ + throw new \UnexpectedValueException($consistency); + } + + } + // Replace all simple vars. $prefix = $subBlocsPath === "" ? "" : $subBlocsPath . "."; @@ -314,5 +341,28 @@ class TplBlock return $this; } - + + /** + * Enable mode strict. If template is inconsistent, will throw an exception + * and return nothing + * + * @return TplBlock For chaining. + */ + public function doStrictMode() + { + $this->strictMode = true; + return $this; + } + + /** + * Disable mode strict. If template is inconsistent, will be parsed anyway. + * and no errors will be returned. + * + * @return TplBlock For chaining. + */ + public function dontStrictMode(){ + $this->strictMode = false; + return $this; + + } }