blob: d70ac26af1341243a54a19c97c708fe4c4172d7d [file] [log] [blame]
<?php
/**
* File containing the ezcTemplateLocationInterface class
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
* @package Template
* @version //autogen//
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
*/
/**
* Interface for classes implementing a dynamic template location.
*
* An object implementing the ezcTemplateLocationInterface can be used as a substitute
* for the template source in the ezcTemplate::process() method and inside the template
* {include} block.
*
* Inside a template, a custom function is used to create this location object. The
* following template source:
* <code>
* Hello word!
* {include dynloc("my_template.ezt")}
* </code>
*
* With the following custom function definition:
* <code>
* class DynLocCF implements ezcTemplateCustomFunction
* {
* public static function getCustomFunctionDefinition( $name )
* {
* if ( $name === "dynloc" )
* {
* $def = new ezcTemplateCustomFunctionDefinition();
* $def->class = __CLASS__;
* $def->method = "dynloc";
* $def->sendTemplateObject = true;
* return $def;
* }
* return false;
* }
*
* public static function dynloc($templateObj, $name)
* {
* return new DynamicLocation($templateObj, $name);
* }
* }
* </code>
*
* The dynloc() method returns a new DynamicLocation object. A
* simple implementation of the ezcTemplateLocationInterface is shown below:
*
* <code>
* class DynamicLocation implements ezcTemplateLocationInterface
* {
* protected $templatePath;
* protected $templateName;
*
* public function __construct( $templateObj, $templateName)
* {
* $this->templateName = $templateName;
* $this->templatePath = $templateObj->usedConfiguration->templatePath;
* }
*
* public function getPath()
* {
* $loc = $this->templatePath ."/". $this->templateName;
* if ( !file_exists( $loc ) )
* {
* $loc = "/fallback/" . $this->templateName;
* }
*
* return $loc;
* }
* }
* </code>
*
* The template will first try to use the original template. If that template
* does not exist, it uses the fallback template.
*
* @package Template
* @version //autogen//
*/
interface ezcTemplateLocation
{
/**
* Implement this method to return the path to the template source.
* The original template name is set with any other method.
*
* @return string Path to the template source.
*/
public function getPath();
}
?>