Resource.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. <?php
  2. /**
  3. * 资源
  4. *
  5. */
  6. namespace Qii\View;
  7. class Resource
  8. {
  9. //页面标题
  10. public $title = '';
  11. //meta 标签
  12. public $meta = array();
  13. public $htmlBlock = array();
  14. public $htmlBlockJS = array();
  15. public $htmlBlockCss = array();
  16. //块js,里边可能包含js代码及js链接,是完整的文件
  17. public $blockJs = '';
  18. //js路径,渲染的时候加上标签
  19. public $blockLinkJs = '';
  20. //css块,css代码及css文件路径,是完整的css文件
  21. public $blockCss = '';
  22. //css路径,渲染的时候加上标签
  23. public $blockLinkCss = '';
  24. //资源处理队列依赖的模块,如果有依赖就等依赖执行完以后再执行
  25. public $dependence = array();
  26. //资源处理队列
  27. public $resource = array();
  28. public function __construct(array $resource)
  29. {
  30. if(empty($resource)) _e(100003, __LINE__);
  31. $this->resource($resource);
  32. return $this;
  33. }
  34. /**
  35. * 添加blocks
  36. */
  37. public function addBlocks($blocks)
  38. {
  39. if (!$blocks) return;
  40. if (is_array($blocks)) {
  41. $this->addBlocks($blocks);
  42. }
  43. $this->blocks .= $blocks;
  44. }
  45. /**
  46. * 添加JS
  47. */
  48. public function addblockLinkJs($js)
  49. {
  50. if (!$js) return;
  51. if (empty($this->blockLinkJs)) $this->blockLinkJs = array();
  52. if ($this->blockLinkJs && !is_array($this->blockLinkJs)) {
  53. $this->blockLinkJs = array($this->blockLinkJs);
  54. }
  55. if (is_array($js)) {
  56. $this->blockLinkJs = array_merge($this->blockLinkJs, $js);
  57. } else {
  58. $this->blockLinkJs[] = $js;
  59. }
  60. $this->blockLinkJs = $this->array_unique($this->blockLinkJs);
  61. return $this->blockLinkJs;
  62. }
  63. /**
  64. * 添加js block
  65. */
  66. public function addBlockJs($js)
  67. {
  68. if (!$js) return;
  69. if (empty($this->blockJs)) $this->blockJs = array();
  70. if ($this->blockJs && !is_array($this->blockJs)) {
  71. $this->blockJs = array($this->blockJs);
  72. }
  73. if (is_array($js)) {
  74. $this->blockJs = array_merge($this->blockJs, $js);
  75. } else {
  76. $this->blockJs[] = $js;
  77. }
  78. $this->blockJs = $this->array_unique($this->blockJs);
  79. return $this->blockJs;
  80. }
  81. /**
  82. * 添加css
  83. */
  84. public function addBlockLinkCss($css)
  85. {
  86. if (!$css) return;
  87. if (empty($this->blockLinkCss)) $this->blockLinkCss = array();
  88. if ($this->blockLinkCss && !is_array($this->blockLinkCss)) {
  89. $this->blockLinkCss = array($this->blockLinkCss);
  90. }
  91. if (is_array($css)) {
  92. $this->blockLinkCss = array_merge($this->blockLinkCss, $css);
  93. } else {
  94. $this->blockLinkCss[] = $css;
  95. }
  96. $this->blockLinkCss = $this->array_unique($this->blockLinkCss);
  97. return $this->blockLinkCss;
  98. }
  99. /**
  100. * 添加css block
  101. */
  102. public function addBlockCss($css)
  103. {
  104. if (!$css) return;
  105. if (empty($this->blockCss)) $this->blockCss = array();
  106. if ($this->blockCss && !is_array($this->blockCss)) {
  107. $this->blockCss = array($this->blockCss);
  108. }
  109. if (is_array($css)) {
  110. $this->blockCss = array_merge($this->blockCss, $css);
  111. } else {
  112. $this->blockCss[] = $css;
  113. }
  114. $this->blockCss = array_unique($this->blockCss);
  115. return $this->blockCss;
  116. }
  117. /**
  118. * 避免重复
  119. * @array array $array
  120. */
  121. public function array_unique($array)
  122. {
  123. if (is_array($array)) return array_unique($array);
  124. return $array;
  125. }
  126. /**
  127. * 格式化资源数据
  128. * @return stdClass
  129. */
  130. public function resource(array $resource)
  131. {
  132. if (!isset($resource['title'])) _e(100001);
  133. if (!isset($resource['resource']) || !is_array($resource['resource'])) _e(100002);
  134. $this->title = $resource['title'];
  135. $this->blockJs = isset($resource['blockJs']) ? $this->array_unique($resource['blockJs']) : '';
  136. $this->blockCss = isset($resource['blockCss']) ? $this->array_unique($resource['blockCss']) : '';
  137. $this->blockLinkJs = isset($resource['blockLinkJs']) ? $this->array_unique($resource['blockLinkJs']) : '';
  138. $this->blockLinkCss = isset($resource['blockLinkCss']) ? $this->array_unique($resource['blockLinkCss']) : '';
  139. $this->dependence = isset($resource['dependence']) ? $resource['dependence'] : array();
  140. $this->resource = isset($resource['resource']) ? $resource['resource'] : array();
  141. return $this;
  142. }
  143. }