/** * @static * @return self */ public static function getInstance() { if (is_null(self::$_instance)) { self::$_instance = new self(); } return self::$_instance; }
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; }
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(); }
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; }
/** * * @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; }
/** * Получить путь к файлу по его имени * * TODO maybe del * * @param string $class_name * @return string */ public function getPathByClassName($class_name) { $class_path = Miao_Autoload::getFilenameByClassName($class_name); return $class_path; }
<?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();
/** * Разбиваем имя класса на составляющие * @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; }
/** * Добавить описание создаваемого блока * * @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); }