Application.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <?php
  2. namespace Qii;
  3. class Application
  4. {
  5. /**
  6. * 存储网站配置文件内容
  7. *
  8. * @var array $config 配置内容
  9. */
  10. protected static $config = [];
  11. /**
  12. * @var object $logerWriter 写日志工具
  13. */
  14. public $logerWriter = null;
  15. /**
  16. * @var string $workspace 工作目录
  17. */
  18. private static $workspace = './';
  19. public function __construct()
  20. {
  21. }
  22. /**
  23. * 初始化本实例对象
  24. *
  25. * @return object
  26. */
  27. public static function getInstance()
  28. {
  29. return \Qii\Autoloader\Factory::getInstance('\Qii\Application');
  30. }
  31. /**
  32. * 设置网站的工作目录,可以通过此方法将网站的重要文件指向到其他目录
  33. *
  34. * @param string $workspace 工作目录
  35. * @return $this
  36. */
  37. public function setWorkspace($workspace = './')
  38. {
  39. //此处转换成真实路径,防止workspace中引入的文件出错
  40. if (!is_dir($workspace)) {
  41. throw new \Qii\Exceptions\FolderDoesNotExist(\Qii::i(1045, $workspace), __LINE__);
  42. }
  43. $workspace = \Qii\Autoloader\Psr4::getInstance()->realpath($workspace);
  44. \Qii\Autoloader\Psr4::getInstance()->removeNamespace('workspace', self::$workspace);
  45. //如果配置了使用namespace就走namespace
  46. self::$workspace = $workspace;
  47. \Qii\Autoloader\Psr4::getInstance()->addNamespace('workspace', $workspace, true);
  48. foreach (self::$paths AS $path) {
  49. \Qii\Autoloader\Psr4::getInstance()->addNamespace($path, $workspace . '\\' . $path);
  50. }
  51. return $this;
  52. }
  53. public function getWorkspace()
  54. {
  55. return self::$workspace;
  56. }
  57. /**
  58. * 设置网站配置文件
  59. *
  60. * @param array $config 配置文件
  61. */
  62. public function setConfig($key, $config = [])
  63. {
  64. \Qii\Autoloader\Factory::getInstance('\Qii\Config\Arrays')
  65. ->set(\Qii\Consts\Config::APP_CONFIGURE . '['. $key.']', $config);
  66. }
  67. /**
  68. * 获取指定配置内容key的值
  69. *
  70. * @param string $key 配置内容key
  71. * @return mixed|null
  72. */
  73. public function getConfig($key = null)
  74. {
  75. if(!$key) {
  76. return \Qii\Autoloader\Factory::getInstance('\Qii\Config\Arrays')
  77. ->get(\Qii\Consts\Config::APP_CONFIGURE);
  78. }
  79. return \Qii\Autoloader\Factory::getInstance('\Qii\Config\Arrays')
  80. ->get(\Qii\Consts\Config::APP_CONFIGURE . '['.$key.']');
  81. }
  82. /**
  83. * 设置Route配置
  84. * @param array $route
  85. */
  86. public function setRoute($route = [])
  87. {
  88. \Qii\Autoloader\Factory::getInstance('\Qii\Config\Arrays')
  89. ->set(\Qii\Consts\Config::APP_SITE_ROUTER, $config);
  90. }
  91. public function run()
  92. {
  93. print_r($this->getConfig());
  94. }
  95. }