Bu sınıf oluşturulurken listesini hazırlayacağı klasör konumuna zorunlu olarak ihtiyaç duymaktadır. Hazırladığım sınıfın kaynak kodu şu şekilde geliştirildi.
<?php
/**
* This class is used to represent the list of Templates that are in a directory.
*
* @author Behçet MUTLU
* @copyright 2009 Adres Gezgini
*/
class ADVTemplateList {
private $dir;
private $list;
private $ready;
/**
* This is the default constructor of the class that needs directory to be
* traversed of which contains the templates.
*
* @param mixed $dir
* @return void
*/
public function __construct($dir)
{
$this->dir = $dir;
$this->_initialize();
}
/**
* This method is used to initialize the private variables of the class that
* are used by this class.
*
* @return void
*/
private function _initialize()
{
$this->list = $this->_getTemplates($this->dir);
$this->ready = $this->list != false;
}
/**
* This method is used to traverse the list of the directories of given directory
* and collect the list of templates in to an array and return, if the directory
* exist template list, otherwise false.
*
* @param mixed $directory to be traversed
* @param mixed $exempt to exclude from listing
* @param mixed $templates the referance to be used
* if we want collect from multiple directories
* @return template list or false
*/
private function _getTemplates($directory,
$exempt = array('.','..','.ds_store','.svn'),
&$templates = array())
{
if( ! ($handle = @opendir($directory))) // with @ character we are avoiding the wrong path error to be displayed as an exception
return false;
while(false !== ($resource = readdir($handle))) {
if(!in_array(strtolower($resource),$exempt)) {
if(is_dir($directory.$resource.'/'))
{
if(file_exists($directory.$resource."/template.xml"))
$templates[] = new ADVTemplate($directory.$resource."/template.xml");
else
debug("Template at \"" . $directory.$resource . "\" does not contain <i>template.xml</i> schema file.");
}
}
}
closedir($handle);
return $templates;
}
/**
* The setter methods of the class
* @param value to set
*/
public function setList($value) { $this->list = $value; }
public function setDir($value) { $this->dir = $value; $this->_initialize();}
/**
* The getter methods of the class
*
* @return values requested
*/
public function getList() { return $this->list; }
public function getDir() { return $this->dir; }
public function isReady() { return $this->ready; }
}
?>
0 yorum:
Yorum Gönder