Keine Beschreibung

Autoloader.php 14KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. <?php
  2. namespace PhpParser;
  3. /**
  4. * @codeCoverageIgnore
  5. */
  6. class Autoloader
  7. {
  8. /**
  9. * Registers PhpParser\Autoloader as an SPL autoloader.
  10. *
  11. * @param bool $prepend Whether to prepend the autoloader instead of appending
  12. */
  13. static public function register($prepend = false) {
  14. ini_set('unserialize_callback_func', 'spl_autoload_call');
  15. spl_autoload_register(array(__CLASS__, 'autoload'), true, $prepend);
  16. }
  17. /**
  18. * Handles autoloading of classes.
  19. *
  20. * @param string $class A class name.
  21. */
  22. static public function autoload($class) {
  23. if (0 === strpos($class, 'PhpParser\\')) {
  24. $fileName = dirname(__DIR__) . '/' . strtr($class, '\\', '/') . '.php';
  25. if (file_exists($fileName)) {
  26. require $fileName;
  27. }
  28. } else if (0 === strpos($class, 'PHPParser_')) {
  29. if (isset(self::$oldToNewMap[$class])) {
  30. self::registerLegacyAliases();
  31. }
  32. }
  33. }
  34. private static function registerLegacyAliases() {
  35. foreach (self::$oldToNewMap as $old => $new) {
  36. class_alias($new, $old);
  37. }
  38. }
  39. private static $oldToNewMap = array(
  40. 'PHPParser_Builder' => 'PhpParser\Builder',
  41. 'PHPParser_BuilderAbstract' => 'PhpParser\BuilderAbstract',
  42. 'PHPParser_BuilderFactory' => 'PhpParser\BuilderFactory',
  43. 'PHPParser_Comment' => 'PhpParser\Comment',
  44. 'PHPParser_Comment_Doc' => 'PhpParser\Comment\Doc',
  45. 'PHPParser_Error' => 'PhpParser\Error',
  46. 'PHPParser_Lexer' => 'PhpParser\Lexer',
  47. 'PHPParser_Lexer_Emulative' => 'PhpParser\Lexer\Emulative',
  48. 'PHPParser_Node' => 'PhpParser\Node',
  49. 'PHPParser_NodeAbstract' => 'PhpParser\NodeAbstract',
  50. 'PHPParser_NodeDumper' => 'PhpParser\NodeDumper',
  51. 'PHPParser_NodeTraverser' => 'PhpParser\NodeTraverser',
  52. 'PHPParser_NodeTraverserInterface' => 'PhpParser\NodeTraverserInterface',
  53. 'PHPParser_NodeVisitor' => 'PhpParser\NodeVisitor',
  54. 'PHPParser_NodeVisitor_NameResolver' => 'PhpParser\NodeVisitor\NameResolver',
  55. 'PHPParser_NodeVisitorAbstract' => 'PhpParser\NodeVisitorAbstract',
  56. 'PHPParser_Parser' => 'PhpParser\Parser',
  57. 'PHPParser_PrettyPrinterAbstract' => 'PhpParser\PrettyPrinterAbstract',
  58. 'PHPParser_PrettyPrinter_Default' => 'PhpParser\PrettyPrinter\Standard',
  59. 'PHPParser_PrettyPrinter_Zend' => 'PhpParser\PrettyPrinter\Standard',
  60. 'PHPParser_Serializer' => 'PhpParser\Serializer',
  61. 'PHPParser_Serializer_XML' => 'PhpParser\Serializer\XML',
  62. 'PHPParser_Unserializer' => 'PhpParser\Unserializer',
  63. 'PHPParser_Unserializer_XML' => 'PhpParser\Unserializer\XML',
  64. 'PHPParser_Builder_Class' => 'PhpParser\Builder\Class_',
  65. 'PHPParser_Builder_Function' => 'PhpParser\Builder\Function_',
  66. 'PHPParser_Builder_Interface' => 'PhpParser\Builder\Interface_',
  67. 'PHPParser_Builder_Method' => 'PhpParser\Builder\Method',
  68. 'PHPParser_Builder_Param' => 'PhpParser\Builder\Param',
  69. 'PHPParser_Builder_Property' => 'PhpParser\Builder\Property',
  70. 'PHPParser_Node_Arg' => 'PhpParser\Node\Arg',
  71. 'PHPParser_Node_Const' => 'PhpParser\Node\Const_',
  72. 'PHPParser_Node_Expr' => 'PhpParser\Node\Expr',
  73. 'PHPParser_Node_Name' => 'PhpParser\Node\Name',
  74. 'PHPParser_Node_Name_FullyQualified' => 'PhpParser\Node\Name\FullyQualified',
  75. 'PHPParser_Node_Name_Relative' => 'PhpParser\Node\Name\Relative',
  76. 'PHPParser_Node_Param' => 'PhpParser\Node\Param',
  77. 'PHPParser_Node_Scalar' => 'PhpParser\Node\Scalar',
  78. 'PHPParser_Node_Stmt' => 'PhpParser\Node\Stmt',
  79. 'PHPParser_Node_Stmt_Break' => 'PhpParser\Node\Stmt\Break_',
  80. 'PHPParser_Node_Stmt_Case' => 'PhpParser\Node\Stmt\Case_',
  81. 'PHPParser_Node_Stmt_Catch' => 'PhpParser\Node\Stmt\Catch_',
  82. 'PHPParser_Node_Stmt_Class' => 'PhpParser\Node\Stmt\Class_',
  83. 'PHPParser_Node_Stmt_ClassConst' => 'PhpParser\Node\Stmt\ClassConst',
  84. 'PHPParser_Node_Stmt_ClassMethod' => 'PhpParser\Node\Stmt\ClassMethod',
  85. 'PHPParser_Node_Stmt_Const' => 'PhpParser\Node\Stmt\Const_',
  86. 'PHPParser_Node_Stmt_Continue' => 'PhpParser\Node\Stmt\Continue_',
  87. 'PHPParser_Node_Stmt_Declare' => 'PhpParser\Node\Stmt\Declare_',
  88. 'PHPParser_Node_Stmt_DeclareDeclare' => 'PhpParser\Node\Stmt\DeclareDeclare',
  89. 'PHPParser_Node_Stmt_Do' => 'PhpParser\Node\Stmt\Do_',
  90. 'PHPParser_Node_Stmt_Echo' => 'PhpParser\Node\Stmt\Echo_',
  91. 'PHPParser_Node_Stmt_Else' => 'PhpParser\Node\Stmt\Else_',
  92. 'PHPParser_Node_Stmt_ElseIf' => 'PhpParser\Node\Stmt\ElseIf_',
  93. 'PHPParser_Node_Stmt_For' => 'PhpParser\Node\Stmt\For_',
  94. 'PHPParser_Node_Stmt_Foreach' => 'PhpParser\Node\Stmt\Foreach_',
  95. 'PHPParser_Node_Stmt_Function' => 'PhpParser\Node\Stmt\Function_',
  96. 'PHPParser_Node_Stmt_Global' => 'PhpParser\Node\Stmt\Global_',
  97. 'PHPParser_Node_Stmt_Goto' => 'PhpParser\Node\Stmt\Goto_',
  98. 'PHPParser_Node_Stmt_HaltCompiler' => 'PhpParser\Node\Stmt\HaltCompiler',
  99. 'PHPParser_Node_Stmt_If' => 'PhpParser\Node\Stmt\If_',
  100. 'PHPParser_Node_Stmt_InlineHTML' => 'PhpParser\Node\Stmt\InlineHTML',
  101. 'PHPParser_Node_Stmt_Interface' => 'PhpParser\Node\Stmt\Interface_',
  102. 'PHPParser_Node_Stmt_Label' => 'PhpParser\Node\Stmt\Label',
  103. 'PHPParser_Node_Stmt_Namespace' => 'PhpParser\Node\Stmt\Namespace_',
  104. 'PHPParser_Node_Stmt_Property' => 'PhpParser\Node\Stmt\Property',
  105. 'PHPParser_Node_Stmt_PropertyProperty' => 'PhpParser\Node\Stmt\PropertyProperty',
  106. 'PHPParser_Node_Stmt_Return' => 'PhpParser\Node\Stmt\Return_',
  107. 'PHPParser_Node_Stmt_Static' => 'PhpParser\Node\Stmt\Static_',
  108. 'PHPParser_Node_Stmt_StaticVar' => 'PhpParser\Node\Stmt\StaticVar',
  109. 'PHPParser_Node_Stmt_Switch' => 'PhpParser\Node\Stmt\Switch_',
  110. 'PHPParser_Node_Stmt_Throw' => 'PhpParser\Node\Stmt\Throw_',
  111. 'PHPParser_Node_Stmt_Trait' => 'PhpParser\Node\Stmt\Trait_',
  112. 'PHPParser_Node_Stmt_TraitUse' => 'PhpParser\Node\Stmt\TraitUse',
  113. 'PHPParser_Node_Stmt_TraitUseAdaptation' => 'PhpParser\Node\Stmt\TraitUseAdaptation',
  114. 'PHPParser_Node_Stmt_TraitUseAdaptation_Alias' => 'PhpParser\Node\Stmt\TraitUseAdaptation\Alias',
  115. 'PHPParser_Node_Stmt_TraitUseAdaptation_Precedence' => 'PhpParser\Node\Stmt\TraitUseAdaptation\Precedence',
  116. 'PHPParser_Node_Stmt_TryCatch' => 'PhpParser\Node\Stmt\TryCatch',
  117. 'PHPParser_Node_Stmt_Unset' => 'PhpParser\Node\Stmt\Unset_',
  118. 'PHPParser_Node_Stmt_UseUse' => 'PhpParser\Node\Stmt\UseUse',
  119. 'PHPParser_Node_Stmt_Use' => 'PhpParser\Node\Stmt\Use_',
  120. 'PHPParser_Node_Stmt_While' => 'PhpParser\Node\Stmt\While_',
  121. 'PHPParser_Node_Expr_AssignBitwiseAnd' => 'PhpParser\Node\Expr\AssignOp\BitwiseAnd',
  122. 'PHPParser_Node_Expr_AssignBitwiseOr' => 'PhpParser\Node\Expr\AssignOp\BitwiseOr',
  123. 'PHPParser_Node_Expr_AssignBitwiseXor' => 'PhpParser\Node\Expr\AssignOp\BitwiseXor',
  124. 'PHPParser_Node_Expr_AssignConcat' => 'PhpParser\Node\Expr\AssignOp\Concat',
  125. 'PHPParser_Node_Expr_AssignDiv' => 'PhpParser\Node\Expr\AssignOp\Div',
  126. 'PHPParser_Node_Expr_AssignMinus' => 'PhpParser\Node\Expr\AssignOp\Minus',
  127. 'PHPParser_Node_Expr_AssignMod' => 'PhpParser\Node\Expr\AssignOp\Mod',
  128. 'PHPParser_Node_Expr_AssignMul' => 'PhpParser\Node\Expr\AssignOp\Mul',
  129. 'PHPParser_Node_Expr_AssignPlus' => 'PhpParser\Node\Expr\AssignOp\Plus',
  130. 'PHPParser_Node_Expr_AssignShiftLeft' => 'PhpParser\Node\Expr\AssignOp\ShiftLeft',
  131. 'PHPParser_Node_Expr_AssignShiftRight' => 'PhpParser\Node\Expr\AssignOp\ShiftRight',
  132. 'PHPParser_Node_Expr_Cast' => 'PhpParser\Node\Expr\Cast',
  133. 'PHPParser_Node_Expr_Cast_Array' => 'PhpParser\Node\Expr\Cast\Array_',
  134. 'PHPParser_Node_Expr_Cast_Bool' => 'PhpParser\Node\Expr\Cast\Bool',
  135. 'PHPParser_Node_Expr_Cast_Double' => 'PhpParser\Node\Expr\Cast\Double',
  136. 'PHPParser_Node_Expr_Cast_Int' => 'PhpParser\Node\Expr\Cast\Int',
  137. 'PHPParser_Node_Expr_Cast_Object' => 'PhpParser\Node\Expr\Cast\Object',
  138. 'PHPParser_Node_Expr_Cast_String' => 'PhpParser\Node\Expr\Cast\String',
  139. 'PHPParser_Node_Expr_Cast_Unset' => 'PhpParser\Node\Expr\Cast\Unset_',
  140. 'PHPParser_Node_Expr_BitwiseAnd' => 'PhpParser\Node\Expr\BinaryOp\BitwiseAnd',
  141. 'PHPParser_Node_Expr_BitwiseOr' => 'PhpParser\Node\Expr\BinaryOp\BitwiseOr',
  142. 'PHPParser_Node_Expr_BitwiseXor' => 'PhpParser\Node\Expr\BinaryOp\BitwiseXor',
  143. 'PHPParser_Node_Expr_BooleanAnd' => 'PhpParser\Node\Expr\BinaryOp\BooleanAnd',
  144. 'PHPParser_Node_Expr_BooleanOr' => 'PhpParser\Node\Expr\BinaryOp\BooleanOr',
  145. 'PHPParser_Node_Expr_Concat' => 'PhpParser\Node\Expr\BinaryOp\Concat',
  146. 'PHPParser_Node_Expr_Div' => 'PhpParser\Node\Expr\BinaryOp\Div',
  147. 'PHPParser_Node_Expr_Equal' => 'PhpParser\Node\Expr\BinaryOp\Equal',
  148. 'PHPParser_Node_Expr_Greater' => 'PhpParser\Node\Expr\BinaryOp\Greater',
  149. 'PHPParser_Node_Expr_GreaterOrEqual' => 'PhpParser\Node\Expr\BinaryOp\GreaterOrEqual',
  150. 'PHPParser_Node_Expr_Identical' => 'PhpParser\Node\Expr\BinaryOp\Identical',
  151. 'PHPParser_Node_Expr_LogicalAnd' => 'PhpParser\Node\Expr\BinaryOp\LogicalAnd',
  152. 'PHPParser_Node_Expr_LogicalOr' => 'PhpParser\Node\Expr\BinaryOp\LogicalOr',
  153. 'PHPParser_Node_Expr_LogicalXor' => 'PhpParser\Node\Expr\BinaryOp\LogicalXor',
  154. 'PHPParser_Node_Expr_Minus' => 'PhpParser\Node\Expr\BinaryOp\Minus',
  155. 'PHPParser_Node_Expr_Mod' => 'PhpParser\Node\Expr\BinaryOp\Mod',
  156. 'PHPParser_Node_Expr_Mul' => 'PhpParser\Node\Expr\BinaryOp\Mul',
  157. 'PHPParser_Node_Expr_NotEqual' => 'PhpParser\Node\Expr\BinaryOp\NotEqual',
  158. 'PHPParser_Node_Expr_NotIdentical' => 'PhpParser\Node\Expr\BinaryOp\NotIdentical',
  159. 'PHPParser_Node_Expr_Plus' => 'PhpParser\Node\Expr\BinaryOp\Plus',
  160. 'PHPParser_Node_Expr_ShiftLeft' => 'PhpParser\Node\Expr\BinaryOp\ShiftLeft',
  161. 'PHPParser_Node_Expr_ShiftRight' => 'PhpParser\Node\Expr\BinaryOp\ShiftRight',
  162. 'PHPParser_Node_Expr_Smaller' => 'PhpParser\Node\Expr\BinaryOp\Smaller',
  163. 'PHPParser_Node_Expr_SmallerOrEqual' => 'PhpParser\Node\Expr\BinaryOp\SmallerOrEqual',
  164. 'PHPParser_Node_Expr_Array' => 'PhpParser\Node\Expr\Array_',
  165. 'PHPParser_Node_Expr_ArrayDimFetch' => 'PhpParser\Node\Expr\ArrayDimFetch',
  166. 'PHPParser_Node_Expr_ArrayItem' => 'PhpParser\Node\Expr\ArrayItem',
  167. 'PHPParser_Node_Expr_Assign' => 'PhpParser\Node\Expr\Assign',
  168. 'PHPParser_Node_Expr_AssignRef' => 'PhpParser\Node\Expr\AssignRef',
  169. 'PHPParser_Node_Expr_BitwiseNot' => 'PhpParser\Node\Expr\BitwiseNot',
  170. 'PHPParser_Node_Expr_BooleanNot' => 'PhpParser\Node\Expr\BooleanNot',
  171. 'PHPParser_Node_Expr_ClassConstFetch' => 'PhpParser\Node\Expr\ClassConstFetch',
  172. 'PHPParser_Node_Expr_Clone' => 'PhpParser\Node\Expr\Clone_',
  173. 'PHPParser_Node_Expr_Closure' => 'PhpParser\Node\Expr\Closure',
  174. 'PHPParser_Node_Expr_ClosureUse' => 'PhpParser\Node\Expr\ClosureUse',
  175. 'PHPParser_Node_Expr_ConstFetch' => 'PhpParser\Node\Expr\ConstFetch',
  176. 'PHPParser_Node_Expr_Empty' => 'PhpParser\Node\Expr\Empty_',
  177. 'PHPParser_Node_Expr_ErrorSuppress' => 'PhpParser\Node\Expr\ErrorSuppress',
  178. 'PHPParser_Node_Expr_Eval' => 'PhpParser\Node\Expr\Eval_',
  179. 'PHPParser_Node_Expr_Exit' => 'PhpParser\Node\Expr\Exit_',
  180. 'PHPParser_Node_Expr_FuncCall' => 'PhpParser\Node\Expr\FuncCall',
  181. 'PHPParser_Node_Expr_Include' => 'PhpParser\Node\Expr\Include_',
  182. 'PHPParser_Node_Expr_Instanceof' => 'PhpParser\Node\Expr\Instanceof_',
  183. 'PHPParser_Node_Expr_Isset' => 'PhpParser\Node\Expr\Isset_',
  184. 'PHPParser_Node_Expr_List' => 'PhpParser\Node\Expr\List_',
  185. 'PHPParser_Node_Expr_MethodCall' => 'PhpParser\Node\Expr\MethodCall',
  186. 'PHPParser_Node_Expr_New' => 'PhpParser\Node\Expr\New_',
  187. 'PHPParser_Node_Expr_PostDec' => 'PhpParser\Node\Expr\PostDec',
  188. 'PHPParser_Node_Expr_PostInc' => 'PhpParser\Node\Expr\PostInc',
  189. 'PHPParser_Node_Expr_PreDec' => 'PhpParser\Node\Expr\PreDec',
  190. 'PHPParser_Node_Expr_PreInc' => 'PhpParser\Node\Expr\PreInc',
  191. 'PHPParser_Node_Expr_Print' => 'PhpParser\Node\Expr\Print_',
  192. 'PHPParser_Node_Expr_PropertyFetch' => 'PhpParser\Node\Expr\PropertyFetch',
  193. 'PHPParser_Node_Expr_ShellExec' => 'PhpParser\Node\Expr\ShellExec',
  194. 'PHPParser_Node_Expr_StaticCall' => 'PhpParser\Node\Expr\StaticCall',
  195. 'PHPParser_Node_Expr_StaticPropertyFetch' => 'PhpParser\Node\Expr\StaticPropertyFetch',
  196. 'PHPParser_Node_Expr_Ternary' => 'PhpParser\Node\Expr\Ternary',
  197. 'PHPParser_Node_Expr_UnaryMinus' => 'PhpParser\Node\Expr\UnaryMinus',
  198. 'PHPParser_Node_Expr_UnaryPlus' => 'PhpParser\Node\Expr\UnaryPlus',
  199. 'PHPParser_Node_Expr_Variable' => 'PhpParser\Node\Expr\Variable',
  200. 'PHPParser_Node_Expr_Yield' => 'PhpParser\Node\Expr\Yield_',
  201. 'PHPParser_Node_Scalar_ClassConst' => 'PhpParser\Node\Scalar\MagicConst\Class_',
  202. 'PHPParser_Node_Scalar_DirConst' => 'PhpParser\Node\Scalar\MagicConst\Dir',
  203. 'PHPParser_Node_Scalar_FileConst' => 'PhpParser\Node\Scalar\MagicConst\File',
  204. 'PHPParser_Node_Scalar_FuncConst' => 'PhpParser\Node\Scalar\MagicConst\Function_',
  205. 'PHPParser_Node_Scalar_LineConst' => 'PhpParser\Node\Scalar\MagicConst\Line',
  206. 'PHPParser_Node_Scalar_MethodConst' => 'PhpParser\Node\Scalar\MagicConst\Method',
  207. 'PHPParser_Node_Scalar_NSConst' => 'PhpParser\Node\Scalar\MagicConst\Namespace_',
  208. 'PHPParser_Node_Scalar_TraitConst' => 'PhpParser\Node\Scalar\MagicConst\Trait_',
  209. 'PHPParser_Node_Scalar_DNumber' => 'PhpParser\Node\Scalar\DNumber',
  210. 'PHPParser_Node_Scalar_Encapsed' => 'PhpParser\Node\Scalar\Encapsed',
  211. 'PHPParser_Node_Scalar_LNumber' => 'PhpParser\Node\Scalar\LNumber',
  212. 'PHPParser_Node_Scalar_String' => 'PhpParser\Node\Scalar\String',
  213. );
  214. }
  215. class_alias('PhpParser\Autoloader', 'PHPParser_Autoloader');