* * This source file is subject to the MIT license that is bundled * with this source code in the file LICENSE. */ /** * Provides useful features shared by many extensions. * * @author Fabien Potencier */ abstract class Extension extends BaseExtension { protected $classes = array(); protected $classMap = array(); /** * Gets the classes to cache. * * @return array An array of classes */ public function getClassesToCompile() { return $this->classes; } /** * Adds classes to the class cache. * * @param array $classes An array of classes */ protected function addClassesToCompile(array $classes) { $this->classes = array_merge($this->classes, $classes); } /** * Gets the autoload class map. * * @return array An array of classes */ public function getAutoloadClassMap() { return $this->classMap; } /** * Adds classes to the autoload class map. * * @param array $classes An array of classes */ public function addClassesToAutoloadMap(array $classes) { $this->classMap = array_merge($this->classMap, $classes); } /** * Returns the base path for the XSD files. * * @return string The XSD base path */ public function getXsdValidationBasePath() { return false; } public function getNamespace() { return false; } public function getAlias() { $className = get_class($this); if (substr($className, -9) != 'Extension') { throw new \BadMethodCallException('This extension does not follow the normal naming, so you must overwrite the getAlias method'); } $classBaseName = substr(strrchr($className, '\\'), 1, -9); return Container::underscore($classBaseName); } }