Exemple #1
0
 /**
  * @static
  * @return self
  */
 public static function getInstance()
 {
     if (is_null(self::$_instance)) {
         self::$_instance = new self();
     }
     return self::$_instance;
 }
Exemple #2
0
 public function providerTestGetListFileListByModuleName()
 {
     $data = array();
     $items = array();
     $items[] = Miao_Autoload::getFilenameByClassName('Miao_FrontOffice_TemplatesEngine_PhpNative_Test');
     $data[] = array('Miao_FrontOffice_TemplatesEngine', $items);
     $items = array();
     $items[] = Miao_Autoload::getFilenameByClassName('Miao_FrontOffice_TemplatesEngine_PhpNative_Test');
     $data[] = array('Miao_FrontOffice_TemplatesEngine_Test', $items);
     $items = array();
     $items[] = Miao_Autoload::getFilenameByClassName('Miao_Autoload_Plugin_Test');
     $items[] = Miao_Autoload::getFilenameByClassName('Miao_Autoload_Plugin_Modules_Test');
     $items[] = Miao_Autoload::getFilenameByClassName('Miao_Autoload_Plugin_PHPExcel_Test');
     $items[] = Miao_Autoload::getFilenameByClassName('Miao_Autoload_Plugin_Project_Test');
     $items[] = Miao_Autoload::getFilenameByClassName('Miao_Autoload_Plugin_Zend_Test');
     $items[] = Miao_Autoload::getFilenameByClassName('Miao_Autoload_Test');
     $items[] = Miao_Autoload::getFilenameByClassName('Miao_Autoload_Name_Test');
     $data[] = array('Miao_Autoload', $items);
     $items = array();
     $items[] = Miao_Autoload::getFilenameByClassName('Miao_Autoload_Plugin_Test');
     $items[] = Miao_Autoload::getFilenameByClassName('Miao_Autoload_Plugin_Modules_Test');
     $items[] = Miao_Autoload::getFilenameByClassName('Miao_Autoload_Plugin_PHPExcel_Test');
     $items[] = Miao_Autoload::getFilenameByClassName('Miao_Autoload_Plugin_Project_Test');
     $items[] = Miao_Autoload::getFilenameByClassName('Miao_Autoload_Plugin_Zend_Test');
     $data[] = array('Miao_Autoload_Plugin', $items);
     return $data;
 }
Exemple #3
0
 public function testAutoloadStatic()
 {
     $autoload = Miao_Autoload::getInstance();
     $autoload->registerItem('Miao', 'Standart', $this->_getLibPath());
     $exceptionName = 'Miao_Autoload_Exception_FileNotFound';
     $this->setExpectedException($exceptionName);
     $obj = Miao_Autoload_UnknownClass::help();
 }
Exemple #4
0
 public function getFilenameByClassName($className)
 {
     $ar = explode('_', $className);
     $last = $ar[count($ar) - 1];
     if ('Test' != $last) {
         $ar[] = 'Test';
     }
     $className = implode('_', $ar);
     $filename = Miao_Autoload::getFilenameByClassName($className);
     return $filename;
 }
Exemple #5
0
 /**
  *
  * @param array $config
  * @return Miao_Router_Rule_Validator
  */
 public static function factory(array $config)
 {
     assert(array_key_exists('id', $config));
     assert(array_key_exists('type', $config));
     $type = $config['type'];
     if (Miao_Autoload::getInstance()->getFilenameByClassName($type)) {
         $className = $type;
     } else {
         $className = 'Miao_Router_Rule_Validator_' . ucfirst($type);
     }
     try {
         $result = new $className($config);
     } catch (Miao_Autoload_Exception_FileNotFound $e) {
         throw new Miao_Router_Rule_Exception(sprintf('Validator %s not found.', $className));
     }
     if (!$result instanceof self) {
         $message = sprintf('Validator class (%s) must be extend of Miao_Router_Rule_Validator', $className);
         throw new Miao_Router_Rule_Validator_Exception($message);
     }
     $result->_setId($config['id']);
     return $result;
 }
Exemple #6
0
 /**
  * Получить путь к файлу по его имени
  *
  * TODO maybe del
  *
  * @param string $class_name
  * @return string
  */
 public function getPathByClassName($class_name)
 {
     $class_path = Miao_Autoload::getFilenameByClassName($class_name);
     return $class_path;
 }
Exemple #7
0
<?php

$config = (include dirname(__FILE__) . '/../data/config_map.php');
foreach ($config['libs'] as $value) {
    if ('Miao' == $value['name']) {
        require_once $value['path'] . '/modules/Autoload/classes/Autoload.class.php';
        break;
    }
}
Miao_Autoload::register($config['libs']);
Miao_Path::register($config);
Miao_Env::defaultRegister();
Exemple #8
0
 /**
  * Разбиваем имя класса на составляющие
  * @param $className
  * @throws Miao_Console_Exception_WrongLibType
  * @return array
  */
 protected function _parse($className)
 {
     $result = array('type' => '', 'name' => '', 'lib' => '', 'module' => '', 'class' => '', 'office' => false);
     try {
         $parser = new Miao_Autoload_Name();
         $parser->parse($className);
         $result = $parser->toArray();
     } catch (Miao_Autoload_Exception $ex) {
         $this->_log('Error parse classname ' . $className, Miao_Log::WARN);
     }
     $autoLoad = Miao_Autoload::getInstance()->getRegisterList();
     $libName = strtolower($result['lib']);
     if (!isset($autoLoad[$libName]) || !$autoLoad[$libName] instanceof Miao_Autoload_Plugin_Standart) {
         throw new Miao_Console_Exception_WrongLibType('Type of autoloader lib must be "standart"!');
     }
     // Обработка Office
     if (!empty($result['class'])) {
         $parts = explode('_', $result['class']);
         if (false !== in_array($parts[0], array('View', 'ViewBlock'))) {
             $result['office'] = true;
         }
     }
     return $result;
 }
Exemple #9
0
 /**
  * Добавить описание создаваемого блока
  *
  * @param string $name
  *        	Имя блока, при помощи него вызывается нужный блок
  * @param
  *        	string or array $class_name Имя класса блока. Если массив, то
  *        	первый элемент - это имя класса, второй обязательно массив с
  *        	параметрами, которые будут использованы как аргументы функции
  *        	process() блока
  * @param array $templates
  *        	Шаблоны блока
  */
 protected function _initBlock($name, $className = '', $templates = array('index.tpl'))
 {
     $block_class_process_params = array();
     if (empty($className)) {
         $className = $name;
     }
     if (is_string($className)) {
         $block_class_name = $className;
         if (!Miao_Autoload::getFilenameByClassName($block_class_name)) {
             $block_class_name = $this->_defaultViewBlockPrefix . '_ViewBlock_' . $className;
         }
     } else {
         if (is_array($className)) {
             $block_class_name = $className[0];
             $block_class_process_params = isset($className[1]) ? $className[1] : null;
             if (!is_array($block_class_process_params)) {
                 $block_class_process_params = array($block_class_process_params);
             }
         }
     }
     $viewBlock = new $block_class_name($name, $templates, $block_class_process_params);
     $viewBlock->setOffice($this->getOffice());
     $this->_templatesObj->addBlock($name, $viewBlock);
 }