Re: [SMARTY-DEV] smarty recompiling with op-code accelerators

From: Date: Thu, 08 Jul 2004 13:51:46 +0000
Subject: Re: [SMARTY-DEV] smarty recompiling with op-code accelerators
References: 1 2 3  Groups: php.smarty.dev 
Request: Send a blank email to php-smarty-dev+get-2463@lists.php.net to get a copy of this message
pete M wrote: > Boots wrote: > > In my custom Smarty class, for example, I have it track the >> version of the files in the cache/compiled directories by writing a >> version file and comparing it to the running version of Smarty. It >> will clear the directory on a mismatch (and then rewrite the version >> file). > > >> >> xo boots > > > I really like this idea ;-)) > > pete I think this has been on the list before, but anyway here is a example howto extend Smarty to do this I also attached a bigger example that shows howto customize Smarty futher <?php /** * Template object... * http://smarty.php.net/ */ require_once 'Smarty/2.6.3/Smarty.class.php'; class Smarty_Extension extends Smarty { /** * Constructor * * @access public * * @return void */ function Smarty_Extension() { parent::Smarty(); $this->checkVersion(); } /** * This method checks the current version of Smarty. On different * versions the compiled and cached templates are deleted. * * @access public * * @return void */ function checkVersion() { $fname = $this->compile_dir . '/.version-' . $this->_version; if (!file_exists($fname)) { $this->clear_all_cache(); $this->clear_compiled_tpl(); touch($fname); } } } $smarty = new Smarty_Extension; ?> Just my 2 cent, Jan Rosier

<?php /** * Template object... * http://smarty.php.net/ */ require_once 'Smarty/2.6.3/Smarty.class.php'; class Smarty_Extension extends Smarty { /** * The directory where config files are located. * * @var string */ var $config_dir = ''; /** * The left delimiter used for the template tags. * * @var string */ var $left_delimiter = '<!--{'; /** * An array of directories searched for plugins. * * @var array */ var $plugins_dir = Array('plugins', '../plugins'); /** * The right delimiter used for the template tags. * * @var string */ var $right_delimiter = '}-->'; /** * Constructor * * @access public * * @return void */ function Smarty_Extension() { parent::Smarty(); $this->checkVersion(); } /** * This replacement methode gives more readeable names to the compiled templates * and is also quicker then the orginal methode ($use_sub_dirs is ignored) * * @access private * * @param string $auto_base * @param string $auto_source * @param string $auto_id * * @return string */ function _get_auto_filename($auto_base, $auto_source = null, $auto_id = null) { $_return = $auto_base . DIRECTORY_SEPARATOR; if (isset($auto_id)) { $_return .= str_replace(DIRECTORY_SEPARATOR, '_', $auto_id) . '.'; } if (isset($auto_source)) { $_return .= str_replace(DIRECTORY_SEPARATOR, '_', $auto_source); } return $_return; } /** * This replacement methode is using the file_get_contents function of PHP >= 4.3.0 * to read the contents of a file * * @access private * * @param string $file * * @return string */ function _read_file($file) { if (is_readable($file)) { return file_get_contents($file); } else { return false; } } /** * This method check the current version of Smarty. On different * versions the compiled and cached templates are deleted. * * @access public * * @return void */ function checkVersion() { $fname = $this->compile_dir . '/.version-' . $this->_version; if (!file_exists($fname)) { $this->clear_all_cache(); $this->clear_compiled_tpl(); touch($fname); } } } $smarty = new Smarty_Extension; ?>
« previous php.smarty.dev (#2463) next »