赛亿提成统计系统

Loader.php 2.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. <?php
  2. namespace daswork;
  3. class Loader
  4. {
  5. // protected static $instance = [];
  6. // 类名映射
  7. protected static $map = [];
  8. // 命名空间别名
  9. protected static $namespaceAilas = [];
  10. // // 自动加载的文件
  11. // private static $autoloadFiles = [];
  12. // 命名空间与路径映射
  13. private static $namespaces = [];
  14. // 保存已加载的类
  15. private static $classMaps = [];
  16. // // 自动加载
  17. // public static function autoload($class)
  18. // {
  19. // // 检测命名空间别名
  20. // if (!empty(self::$namespaces)) {
  21. // $namespace = dirname($class);
  22. // if (isset(self::$namespaces[$namespace])) {
  23. // $original = self::$namespaces[$namespace] . '\\' . basename($class);
  24. // if (class_exists($original)) {
  25. // return class_alias($original, $class, false);
  26. // }
  27. // }
  28. // }
  29. // if ($file = self::findFile($class)) {
  30. // // Win环境严格区分大小写
  31. // if (IS_WIN && pathinfo($file, PATHINFO_FILENAME) != pathinfo(realpath($file), PATHINFO_FILENAME)) {
  32. // return false;
  33. // }
  34. // __include_file($file);
  35. // return true;
  36. // }
  37. // }
  38. private static function autoload($class)
  39. {
  40. if (in_array($class, self::$classMaps)) {
  41. return true;
  42. }
  43. if ($file = self::findFile($class)) {
  44. // Win环境严格区分大小写
  45. if (IS_WIN && pathinfo($file, PATHINFO_FILENAME) != pathinfo(realpath($file), PATHINFO_FILENAME)) {
  46. return false;
  47. }
  48. __include_file($file);
  49. self::$classMaps[] = $class;
  50. return true;
  51. }
  52. }
  53. public static function findFile($class)
  54. {
  55. $namespace = \dirname($class);
  56. // 有命名空间映射的
  57. if (isset(self::$namespaces[$namespace])) {
  58. $file = self::$namespaces[$namespace] . basename($class) . EXT;
  59. return $file;
  60. }
  61. // var_dump(substr($class,strpos($class, '\\') + 1));
  62. $model = substr($class,0,strpos($class, '\\'));
  63. // var_dump($model);
  64. if ($model=='app') {
  65. $file = APP_PATH . DS. str_replace('\\', DS, substr($class,strpos($class, '\\') + 1)) . EXT;
  66. // var_dump($file);
  67. return $file;
  68. }
  69. }
  70. // 注册系统自动加载
  71. public static function register($autoload = '')
  72. {
  73. spl_autoload_register($autoload ?: 'daswork\\Loader::autoload', true, true);
  74. self::$namespaces = [
  75. 'daswork' => CORE_PATH,
  76. 'daswork\lib' => CORE_PATH . 'lib' . DS
  77. ];
  78. }
  79. }
  80. /**
  81. * 作用范围隔离
  82. *
  83. * @param $file
  84. * @return mixed
  85. */
  86. function __include_file($file)
  87. {
  88. return include $file;
  89. }
  90. function __require_file($file)
  91. {
  92. return require $file;
  93. }