Container.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. class Container {
  2. /**
  3. * 容器对象实例
  4. * @var Container
  5. */
  6. static $instance;
  7. /**
  8. * 容器中的对象实例
  9. * @var array
  10. */
  11. instances = {};
  12. static getInstance() {
  13. if (Container.$instance == null) {
  14. Container.$instance = new Container();
  15. }
  16. return Container.$instance;
  17. }
  18. /**
  19. * 获取容器中的对象实例
  20. * @access public
  21. * @param string name 类名或者标识
  22. * @return object
  23. */
  24. static get(name) {
  25. return Container.getInstance().instances[name];
  26. }
  27. /**
  28. * 移除容器中的对象实例
  29. * @access public
  30. * @param string name 类标识、接口
  31. * @return void
  32. */
  33. static remove(name) {
  34. return Container.getInstance().del(name);
  35. }
  36. /**
  37. * 创建类的实例
  38. * @access public
  39. * @param string vImport 导入improt
  40. * @param {} vars 变量
  41. * @return object
  42. */
  43. make(vImport, alias, vars = "default") {
  44. this.instances[alias] = vars == "" ? vImport : vImport[vars];
  45. return this.instances[alias];
  46. }
  47. /**
  48. * 获取容器中的对象实例
  49. * @access public
  50. * @param string name 类名或者标识
  51. * @return object
  52. */
  53. get(name) {
  54. return this.instances[name];
  55. }
  56. /**
  57. * 删除实例对象
  58. * @param {Object} name
  59. */
  60. del(name) {
  61. delete this.instances[name];
  62. }
  63. }
  64. export default Container;