Router.php.html 107 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Code Coverage for /win/work/Project/ecom/core/tools/Router.php</title>
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <link href="../css/bootstrap.min.css" rel="stylesheet">
  8. <link href="../css/style.css" rel="stylesheet">
  9. <!--[if lt IE 9]>
  10. <script src="../js/html5shiv.min.js"></script>
  11. <script src="../js/respond.min.js"></script>
  12. <![endif]-->
  13. </head>
  14. <body>
  15. <header>
  16. <div class="container">
  17. <div class="row">
  18. <div class="col-md-12">
  19. <ol class="breadcrumb">
  20. <li><a href="../index.html">/win/work/Project/ecom/core</a></li>
  21. <li><a href="index.html">tools</a></li>
  22. <li class="active">Router.php</li>
  23. </ol>
  24. </div>
  25. </div>
  26. </div>
  27. </header>
  28. <div class="container">
  29. <table class="table table-bordered">
  30. <thead>
  31. <tr>
  32. <td>&nbsp;</td>
  33. <td colspan="10"><div align="center"><strong>Code Coverage</strong></div></td>
  34. </tr>
  35. <tr>
  36. <td>&nbsp;</td>
  37. <td colspan="3"><div align="center"><strong>Classes and Traits</strong></div></td>
  38. <td colspan="4"><div align="center"><strong>Functions and Methods</strong></div></td>
  39. <td colspan="3"><div align="center"><strong>Lines</strong></div></td>
  40. </tr>
  41. </thead>
  42. <tbody>
  43. <tr>
  44. <td class="danger">Total</td>
  45. <td class="danger big"> <div class="progress">
  46. <div class="progress-bar progress-bar-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
  47. <span class="sr-only">0.00% covered (danger)</span>
  48. </div>
  49. </div>
  50. </td>
  51. <td class="danger small"><div align="right">0.00%</div></td>
  52. <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
  53. <td class="warning big"> <div class="progress">
  54. <div class="progress-bar progress-bar-warning" role="progressbar" aria-valuenow="88.89" aria-valuemin="0" aria-valuemax="100" style="width: 88.89%">
  55. <span class="sr-only">88.89% covered (warning)</span>
  56. </div>
  57. </div>
  58. </td>
  59. <td class="warning small"><div align="right">88.89%</div></td>
  60. <td class="warning small"><div align="right">8&nbsp;/&nbsp;9</div></td>
  61. <td class="warning small"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></td>
  62. <td class="success big"> <div class="progress">
  63. <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="93.94" aria-valuemin="0" aria-valuemax="100" style="width: 93.94%">
  64. <span class="sr-only">93.94% covered (success)</span>
  65. </div>
  66. </div>
  67. </td>
  68. <td class="success small"><div align="right">93.94%</div></td>
  69. <td class="success small"><div align="right">62&nbsp;/&nbsp;66</div></td>
  70. </tr>
  71. <tr>
  72. <td class="danger">Router</td>
  73. <td class="danger big"> <div class="progress">
  74. <div class="progress-bar progress-bar-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
  75. <span class="sr-only">0.00% covered (danger)</span>
  76. </div>
  77. </div>
  78. </td>
  79. <td class="danger small"><div align="right">0.00%</div></td>
  80. <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
  81. <td class="warning big"> <div class="progress">
  82. <div class="progress-bar progress-bar-warning" role="progressbar" aria-valuenow="88.89" aria-valuemin="0" aria-valuemax="100" style="width: 88.89%">
  83. <span class="sr-only">88.89% covered (warning)</span>
  84. </div>
  85. </div>
  86. </td>
  87. <td class="warning small"><div align="right">88.89%</div></td>
  88. <td class="warning small"><div align="right">8&nbsp;/&nbsp;9</div></td>
  89. <td class="warning small">35.27</td>
  90. <td class="success big"> <div class="progress">
  91. <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="93.94" aria-valuemin="0" aria-valuemax="100" style="width: 93.94%">
  92. <span class="sr-only">93.94% covered (success)</span>
  93. </div>
  94. </div>
  95. </td>
  96. <td class="success small"><div align="right">93.94%</div></td>
  97. <td class="success small"><div align="right">62&nbsp;/&nbsp;66</div></td>
  98. </tr>
  99. <tr>
  100. <td class="success" colspan="4">&nbsp;<a href="#76"><abbr title="__construct($server, $context)">__construct</abbr></a></td>
  101. <td class="success big"> <div class="progress">
  102. <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
  103. <span class="sr-only">100.00% covered (success)</span>
  104. </div>
  105. </div>
  106. </td>
  107. <td class="success small"><div align="right">100.00%</div></td>
  108. <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
  109. <td class="success small">2</td>
  110. <td class="success big"> <div class="progress">
  111. <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
  112. <span class="sr-only">100.00% covered (success)</span>
  113. </div>
  114. </div>
  115. </td>
  116. <td class="success small"><div align="right">100.00%</div></td>
  117. <td class="success small"><div align="right">8&nbsp;/&nbsp;8</div></td>
  118. </tr>
  119. <tr>
  120. <td class="success" colspan="4">&nbsp;<a href="#92"><abbr title="init($server)">init</abbr></a></td>
  121. <td class="success big"> <div class="progress">
  122. <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
  123. <span class="sr-only">100.00% covered (success)</span>
  124. </div>
  125. </div>
  126. </td>
  127. <td class="success small"><div align="right">100.00%</div></td>
  128. <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
  129. <td class="success small">3</td>
  130. <td class="success big"> <div class="progress">
  131. <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
  132. <span class="sr-only">100.00% covered (success)</span>
  133. </div>
  134. </div>
  135. </td>
  136. <td class="success small"><div align="right">100.00%</div></td>
  137. <td class="success small"><div align="right">2&nbsp;/&nbsp;2</div></td>
  138. </tr>
  139. <tr>
  140. <td class="success" colspan="4">&nbsp;<a href="#111"><abbr title="serveUrl()">serveUrl</abbr></a></td>
  141. <td class="success big"> <div class="progress">
  142. <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
  143. <span class="sr-only">100.00% covered (success)</span>
  144. </div>
  145. </div>
  146. </td>
  147. <td class="success small"><div align="right">100.00%</div></td>
  148. <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
  149. <td class="success small">4</td>
  150. <td class="success big"> <div class="progress">
  151. <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
  152. <span class="sr-only">100.00% covered (success)</span>
  153. </div>
  154. </div>
  155. </td>
  156. <td class="success small"><div align="right">100.00%</div></td>
  157. <td class="success small"><div align="right">11&nbsp;/&nbsp;11</div></td>
  158. </tr>
  159. <tr>
  160. <td class="success" colspan="4">&nbsp;<a href="#135"><abbr title="createController($className, $params)">createController</abbr></a></td>
  161. <td class="success big"> <div class="progress">
  162. <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
  163. <span class="sr-only">100.00% covered (success)</span>
  164. </div>
  165. </div>
  166. </td>
  167. <td class="success small"><div align="right">100.00%</div></td>
  168. <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
  169. <td class="success small">4</td>
  170. <td class="success big"> <div class="progress">
  171. <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
  172. <span class="sr-only">100.00% covered (success)</span>
  173. </div>
  174. </div>
  175. </td>
  176. <td class="success small"><div align="right">100.00%</div></td>
  177. <td class="success small"><div align="right">10&nbsp;/&nbsp;10</div></td>
  178. </tr>
  179. <tr>
  180. <td class="success" colspan="4">&nbsp;<a href="#160"><abbr title="routeMatch($request, $route)">routeMatch</abbr></a></td>
  181. <td class="success big"> <div class="progress">
  182. <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
  183. <span class="sr-only">100.00% covered (success)</span>
  184. </div>
  185. </div>
  186. </td>
  187. <td class="success small"><div align="right">100.00%</div></td>
  188. <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
  189. <td class="success small">10</td>
  190. <td class="success big"> <div class="progress">
  191. <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
  192. <span class="sr-only">100.00% covered (success)</span>
  193. </div>
  194. </div>
  195. </td>
  196. <td class="success small"><div align="right">100.00%</div></td>
  197. <td class="success small"><div align="right">17&nbsp;/&nbsp;17</div></td>
  198. </tr>
  199. <tr>
  200. <td class="success" colspan="4">&nbsp;<a href="#186"><abbr title="prepareUrl()">prepareUrl</abbr></a></td>
  201. <td class="success big"> <div class="progress">
  202. <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
  203. <span class="sr-only">100.00% covered (success)</span>
  204. </div>
  205. </div>
  206. </td>
  207. <td class="success small"><div align="right">100.00%</div></td>
  208. <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
  209. <td class="success small">2</td>
  210. <td class="success big"> <div class="progress">
  211. <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
  212. <span class="sr-only">100.00% covered (success)</span>
  213. </div>
  214. </div>
  215. </td>
  216. <td class="success small"><div align="right">100.00%</div></td>
  217. <td class="success small"><div align="right">5&nbsp;/&nbsp;5</div></td>
  218. </tr>
  219. <tr>
  220. <td class="success" colspan="4">&nbsp;<a href="#198"><abbr title="doRouteAdd($route, $controller)">doRouteAdd</abbr></a></td>
  221. <td class="success big"> <div class="progress">
  222. <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
  223. <span class="sr-only">100.00% covered (success)</span>
  224. </div>
  225. </div>
  226. </td>
  227. <td class="success small"><div align="right">100.00%</div></td>
  228. <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
  229. <td class="success small">1</td>
  230. <td class="success big"> <div class="progress">
  231. <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
  232. <span class="sr-only">100.00% covered (success)</span>
  233. </div>
  234. </div>
  235. </td>
  236. <td class="success small"><div align="right">100.00%</div></td>
  237. <td class="success small"><div align="right">2&nbsp;/&nbsp;2</div></td>
  238. </tr>
  239. <tr>
  240. <td class="danger" colspan="4">&nbsp;<a href="#213"><abbr title="routeAdd($route, $controller)">routeAdd</abbr></a></td>
  241. <td class="danger big"> <div class="progress">
  242. <div class="progress-bar progress-bar-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
  243. <span class="sr-only">0.00% covered (danger)</span>
  244. </div>
  245. </div>
  246. </td>
  247. <td class="danger small"><div align="right">0.00%</div></td>
  248. <td class="danger small"><div align="right">0&nbsp;/&nbsp;1</div></td>
  249. <td class="danger small">6</td>
  250. <td class="danger big"> <div class="progress">
  251. <div class="progress-bar progress-bar-danger" role="progressbar" aria-valuenow="0.00" aria-valuemin="0" aria-valuemax="100" style="width: 0.00%">
  252. <span class="sr-only">0.00% covered (danger)</span>
  253. </div>
  254. </div>
  255. </td>
  256. <td class="danger small"><div align="right">0.00%</div></td>
  257. <td class="danger small"><div align="right">0&nbsp;/&nbsp;4</div></td>
  258. </tr>
  259. <tr>
  260. <td class="success" colspan="4">&nbsp;<a href="#223"><abbr title="__get($key)">__get</abbr></a></td>
  261. <td class="success big"> <div class="progress">
  262. <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
  263. <span class="sr-only">100.00% covered (success)</span>
  264. </div>
  265. </div>
  266. </td>
  267. <td class="success small"><div align="right">100.00%</div></td>
  268. <td class="success small"><div align="right">1&nbsp;/&nbsp;1</div></td>
  269. <td class="success small">7</td>
  270. <td class="success big"> <div class="progress">
  271. <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="100.00" aria-valuemin="0" aria-valuemax="100" style="width: 100.00%">
  272. <span class="sr-only">100.00% covered (success)</span>
  273. </div>
  274. </div>
  275. </td>
  276. <td class="success small"><div align="right">100.00%</div></td>
  277. <td class="success small"><div align="right">7&nbsp;/&nbsp;7</div></td>
  278. </tr>
  279. </tbody>
  280. </table>
  281. <table id="code" class="table table-borderless table-condensed">
  282. <tbody>
  283. <tr><td><div align="right"><a name="1"></a><a href="#1">1</a></div></td><td class="codeLine"><span class="default">&lt;?php</span></td></tr>
  284. <tr><td><div align="right"><a name="2"></a><a href="#2">2</a></div></td><td class="codeLine"></td></tr>
  285. <tr><td><div align="right"><a name="3"></a><a href="#3">3</a></div></td><td class="codeLine"><span class="keyword">namespace</span><span class="default">&nbsp;</span><span class="default">Tools</span><span class="keyword">;</span></td></tr>
  286. <tr><td><div align="right"><a name="4"></a><a href="#4">4</a></div></td><td class="codeLine"></td></tr>
  287. <tr><td><div align="right"><a name="5"></a><a href="#5">5</a></div></td><td class="codeLine"><span class="comment">/**</span></td></tr>
  288. <tr><td><div align="right"><a name="6"></a><a href="#6">6</a></div></td><td class="codeLine"><span class="comment">&nbsp;*&nbsp;Will&nbsp;manager&nbsp;new&nbsp;connections&nbsp;to&nbsp;the&nbsp;server</span></td></tr>
  289. <tr><td><div align="right"><a name="7"></a><a href="#7">7</a></div></td><td class="codeLine"><span class="comment">&nbsp;*&nbsp;and&nbsp;try&nbsp;to&nbsp;match&nbsp;the&nbsp;requests&nbsp;and&nbsp;the&nbsp;controllers</span></td></tr>
  290. <tr><td><div align="right"><a name="8"></a><a href="#8">8</a></div></td><td class="codeLine"><span class="comment">**/</span></td></tr>
  291. <tr><td><div align="right"><a name="9"></a><a href="#9">9</a></div></td><td class="codeLine"><span class="keyword">class</span><span class="default">&nbsp;</span><span class="default">Router</span></td></tr>
  292. <tr><td><div align="right"><a name="10"></a><a href="#10">10</a></div></td><td class="codeLine"><span class="keyword">{</span></td></tr>
  293. <tr><td><div align="right"><a name="11"></a><a href="#11">11</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
  294. <tr><td><div align="right"><a name="12"></a><a href="#12">12</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@var&nbsp;string&nbsp;$rootPath</span></td></tr>
  295. <tr><td><div align="right"><a name="13"></a><a href="#13">13</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Contains&nbsp;the&nbsp;application's&nbsp;root&nbsp;path&nbsp;(ex:&nbsp;http://myshop.com/)&nbsp;with&nbsp;trailing&nbsp;slash</span></td></tr>
  296. <tr><td><div align="right"><a name="14"></a><a href="#14">14</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Can&nbsp;be&nbsp;accessed&nbsp;read-only&nbsp;via&nbsp;$instance-&gt;rootPath</span></td></tr>
  297. <tr><td><div align="right"><a name="15"></a><a href="#15">15</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;**/</span></td></tr>
  298. <tr><td><div align="right"><a name="16"></a><a href="#16">16</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span class="default">&nbsp;</span><span class="default">$rootPath</span><span class="keyword">;</span></td></tr>
  299. <tr><td><div align="right"><a name="17"></a><a href="#17">17</a></div></td><td class="codeLine"></td></tr>
  300. <tr><td><div align="right"><a name="18"></a><a href="#18">18</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
  301. <tr><td><div align="right"><a name="19"></a><a href="#19">19</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@var&nbsp;string&nbsp;$rootPath</span></td></tr>
  302. <tr><td><div align="right"><a name="20"></a><a href="#20">20</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Contains&nbsp;the&nbsp;application's&nbsp;root&nbsp;path&nbsp;(ex:&nbsp;/srv/http/myshop/)&nbsp;with&nbsp;trailing&nbsp;slash</span></td></tr>
  303. <tr><td><div align="right"><a name="21"></a><a href="#21">21</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Can&nbsp;be&nbsp;accessed&nbsp;read-only&nbsp;via&nbsp;$instance-&gt;rootUrl</span></td></tr>
  304. <tr><td><div align="right"><a name="22"></a><a href="#22">22</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;**/</span></td></tr>
  305. <tr><td><div align="right"><a name="23"></a><a href="#23">23</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span class="default">&nbsp;</span><span class="default">$rootUrl</span><span class="keyword">;</span></td></tr>
  306. <tr><td><div align="right"><a name="24"></a><a href="#24">24</a></div></td><td class="codeLine"></td></tr>
  307. <tr><td><div align="right"><a name="25"></a><a href="#25">25</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
  308. <tr><td><div align="right"><a name="26"></a><a href="#26">26</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@var&nbsp;string&nbsp;$requestUrl</span></td></tr>
  309. <tr><td><div align="right"><a name="27"></a><a href="#27">27</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Contains&nbsp;request</span></td></tr>
  310. <tr><td><div align="right"><a name="28"></a><a href="#28">28</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;**/</span></td></tr>
  311. <tr><td><div align="right"><a name="29"></a><a href="#29">29</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span class="default">&nbsp;</span><span class="default">$requestUrl</span><span class="keyword">;</span></td></tr>
  312. <tr><td><div align="right"><a name="30"></a><a href="#30">30</a></div></td><td class="codeLine"></td></tr>
  313. <tr><td><div align="right"><a name="31"></a><a href="#31">31</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
  314. <tr><td><div align="right"><a name="32"></a><a href="#32">32</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@var&nbsp;array&nbsp;(&nbsp;array&nbsp;(&nbsp;uri&nbsp;=&gt;&nbsp;controller&nbsp;)&nbsp;)&nbsp;$routes</span></td></tr>
  315. <tr><td><div align="right"><a name="33"></a><a href="#33">33</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;**/</span></td></tr>
  316. <tr><td><div align="right"><a name="34"></a><a href="#34">34</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span class="default">&nbsp;</span><span class="default">$routes</span><span class="keyword">;</span></td></tr>
  317. <tr><td><div align="right"><a name="35"></a><a href="#35">35</a></div></td><td class="codeLine"></td></tr>
  318. <tr><td><div align="right"><a name="36"></a><a href="#36">36</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
  319. <tr><td><div align="right"><a name="37"></a><a href="#37">37</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@var&nbsp;\Tools\Context&nbsp;$context</span></td></tr>
  320. <tr><td><div align="right"><a name="38"></a><a href="#38">38</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;/core/tools/Context.php</span></td></tr>
  321. <tr><td><div align="right"><a name="39"></a><a href="#39">39</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Contains&nbsp;website's&nbsp;informations</span></td></tr>
  322. <tr><td><div align="right"><a name="40"></a><a href="#40">40</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;**/</span></td></tr>
  323. <tr><td><div align="right"><a name="41"></a><a href="#41">41</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span class="default">&nbsp;</span><span class="default">$context</span><span class="keyword">;</span></td></tr>
  324. <tr><td><div align="right"><a name="42"></a><a href="#42">42</a></div></td><td class="codeLine"></td></tr>
  325. <tr><td><div align="right"><a name="43"></a><a href="#43">43</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
  326. <tr><td><div align="right"><a name="44"></a><a href="#44">44</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@var&nbsp;array&nbsp;RouteParams</span></td></tr>
  327. <tr><td><div align="right"><a name="45"></a><a href="#45">45</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Contains&nbsp;route&nbsp;parameter</span></td></tr>
  328. <tr><td><div align="right"><a name="46"></a><a href="#46">46</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;ex:&nbsp;/product/:id&nbsp;will&nbsp;contains&nbsp;{</span></td></tr>
  329. <tr><td><div align="right"><a name="47"></a><a href="#47">47</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;=&gt;&nbsp;product</span></td></tr>
  330. <tr><td><div align="right"><a name="48"></a><a href="#48">48</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;=&gt;&nbsp;[ID]</span></td></tr>
  331. <tr><td><div align="right"><a name="49"></a><a href="#49">49</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;':id'&nbsp;=&gt;&nbsp;[ID]</span></td></tr>
  332. <tr><td><div align="right"><a name="50"></a><a href="#50">50</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;**/</span></td></tr>
  333. <tr><td><div align="right"><a name="51"></a><a href="#51">51</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span class="default">&nbsp;</span><span class="default">$routeParams</span><span class="keyword">;</span></td></tr>
  334. <tr><td><div align="right"><a name="52"></a><a href="#52">52</a></div></td><td class="codeLine"></td></tr>
  335. <tr><td><div align="right"><a name="53"></a><a href="#53">53</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
  336. <tr><td><div align="right"><a name="54"></a><a href="#54">54</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@var&nbsp;string&nbsp;$modulePath</span></td></tr>
  337. <tr><td><div align="right"><a name="55"></a><a href="#55">55</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Contains&nbsp;the&nbsp;module&nbsp;directory</span></td></tr>
  338. <tr><td><div align="right"><a name="56"></a><a href="#56">56</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;**/</span></td></tr>
  339. <tr><td><div align="right"><a name="57"></a><a href="#57">57</a></div></td><td class="codeLine"></td></tr>
  340. <tr><td><div align="right"><a name="58"></a><a href="#58">58</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
  341. <tr><td><div align="right"><a name="59"></a><a href="#59">59</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@var&nbsp;string&nbsp;$moduleUrl</span></td></tr>
  342. <tr><td><div align="right"><a name="60"></a><a href="#60">60</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Contains&nbsp;the&nbsp;module&nbsp;Uri</span></td></tr>
  343. <tr><td><div align="right"><a name="61"></a><a href="#61">61</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;**/</span></td></tr>
  344. <tr><td><div align="right"><a name="62"></a><a href="#62">62</a></div></td><td class="codeLine"></td></tr>
  345. <tr><td><div align="right"><a name="63"></a><a href="#63">63</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
  346. <tr><td><div align="right"><a name="64"></a><a href="#64">64</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@var&nbsp;string&nbsp;$themePath</span></td></tr>
  347. <tr><td><div align="right"><a name="65"></a><a href="#65">65</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Contains&nbsp;the&nbsp;theme&nbsp;directory</span></td></tr>
  348. <tr><td><div align="right"><a name="66"></a><a href="#66">66</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;**/</span></td></tr>
  349. <tr><td><div align="right"><a name="67"></a><a href="#67">67</a></div></td><td class="codeLine"></td></tr>
  350. <tr><td><div align="right"><a name="68"></a><a href="#68">68</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
  351. <tr><td><div align="right"><a name="69"></a><a href="#69">69</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@var&nbsp;string&nbsp;$themeUrl</span></td></tr>
  352. <tr><td><div align="right"><a name="70"></a><a href="#70">70</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Contains&nbsp;the&nbsp;theme&nbsp;Uri</span></td></tr>
  353. <tr><td><div align="right"><a name="71"></a><a href="#71">71</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;**/</span></td></tr>
  354. <tr><td><div align="right"><a name="72"></a><a href="#72">72</a></div></td><td class="codeLine"></td></tr>
  355. <tr><td><div align="right"><a name="73"></a><a href="#73">73</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
  356. <tr><td><div align="right"><a name="74"></a><a href="#74">74</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Create&nbsp;the&nbsp;router,&nbsp;initialize&nbsp;url&nbsp;and&nbsp;path</span></td></tr>
  357. <tr><td><div align="right"><a name="75"></a><a href="#75">75</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;**/</span></td></tr>
  358. <tr><td><div align="right"><a name="76"></a><a href="#76">76</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">__construct</span><span class="keyword">(</span><span class="default">$server</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">$context</span><span class="keyword">)</span></td></tr>
  359. <tr><td><div align="right"><a name="77"></a><a href="#77">77</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
  360. <tr class="covered-by-large-tests popin" data-title="2 tests cover line 78" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;RouterTest::testBaseLinker&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="78"></a><a href="#78">78</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$pos</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">strrpos</span><span class="keyword">(</span><span class="default">$server</span><span class="keyword">[</span><span class="default">&quot;SCRIPT_NAME&quot;</span><span class="keyword">]</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">&quot;/&quot;</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
  361. <tr class="covered-by-large-tests popin" data-title="2 tests cover line 79" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;RouterTest::testBaseLinker&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="79"></a><a href="#79">79</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$relativePath</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="keyword">(</span><span class="default">$pos</span><span class="default">&nbsp;</span><span class="default">===</span><span class="default">&nbsp;</span><span class="default">FALSE</span><span class="keyword">)</span><span class="default">&nbsp;</span><span class="keyword">?</span><span class="default">&nbsp;</span><span class="default">&quot;&quot;</span><span class="default">&nbsp;</span><span class="keyword">:</span><span class="default">&nbsp;</span><span class="default">substr</span><span class="keyword">(</span><span class="default">$server</span><span class="keyword">[</span><span class="default">&quot;SCRIPT_NAME&quot;</span><span class="keyword">]</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">0</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">$pos</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
  362. <tr class="covered-by-large-tests popin" data-title="2 tests cover line 80" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;RouterTest::testBaseLinker&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="80"></a><a href="#80">80</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">rootPath</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">$server</span><span class="keyword">[</span><span class="default">&quot;DOCUMENT_ROOT&quot;</span><span class="keyword">]</span><span class="default">&nbsp;</span><span class="keyword">.</span><span class="default">&nbsp;</span><span class="default">$relativePath</span><span class="default">&nbsp;</span><span class="keyword">.</span><span class="default">&nbsp;</span><span class="default">&quot;/&quot;</span><span class="keyword">;</span></td></tr>
  363. <tr class="covered-by-large-tests popin" data-title="2 tests cover line 81" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;RouterTest::testBaseLinker&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="81"></a><a href="#81">81</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">rootUrl</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">$server</span><span class="keyword">[</span><span class="default">&quot;REQUEST_SCHEME&quot;</span><span class="keyword">]</span><span class="default">&nbsp;</span><span class="keyword">.</span><span class="default">&nbsp;</span><span class="default">&quot;://&quot;</span><span class="default">&nbsp;</span><span class="keyword">.</span><span class="default">&nbsp;</span><span class="default">$server</span><span class="keyword">[</span><span class="default">&quot;HTTP_HOST&quot;</span><span class="keyword">]</span><span class="default">&nbsp;</span><span class="keyword">.</span><span class="default">&nbsp;</span><span class="default">$relativePath</span><span class="default">&nbsp;</span><span class="keyword">.</span><span class="default">&quot;/&quot;</span><span class="keyword">;</span></td></tr>
  364. <tr class="covered-by-large-tests popin" data-title="2 tests cover line 82" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;RouterTest::testBaseLinker&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="82"></a><a href="#82">82</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">requestUrl</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">substr</span><span class="keyword">(</span><span class="default">$server</span><span class="keyword">[</span><span class="default">&quot;REQUEST_URI&quot;</span><span class="keyword">]</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">count</span><span class="keyword">(</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">rootUrl</span><span class="keyword">)</span><span class="default">&nbsp;</span><span class="keyword">-</span><span class="default">1</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
  365. <tr class="covered-by-large-tests popin" data-title="2 tests cover line 83" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;RouterTest::testBaseLinker&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="83"></a><a href="#83">83</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">context</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">$context</span><span class="keyword">;</span></td></tr>
  366. <tr class="covered-by-large-tests popin" data-title="2 tests cover line 84" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;RouterTest::testBaseLinker&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="84"></a><a href="#84">84</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">routes</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="keyword">array</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
  367. <tr class="covered-by-large-tests popin" data-title="2 tests cover line 85" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;RouterTest::testBaseLinker&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="85"></a><a href="#85">85</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
  368. <tr><td><div align="right"><a name="86"></a><a href="#86">86</a></div></td><td class="codeLine"></td></tr>
  369. <tr><td><div align="right"><a name="87"></a><a href="#87">87</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
  370. <tr><td><div align="right"><a name="88"></a><a href="#88">88</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Called&nbsp;after&nbsp;database&nbsp;initialization</span></td></tr>
  371. <tr><td><div align="right"><a name="89"></a><a href="#89">89</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Check&nbsp;the&nbsp;site&nbsp;url&nbsp;and&nbsp;redirect&nbsp;user&nbsp;if&nbsp;the&nbsp;HOST&nbsp;does&nbsp;not&nbsp;match</span></td></tr>
  372. <tr><td><div align="right"><a name="90"></a><a href="#90">90</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;If&nbsp;the&nbsp;site&nbsp;url&nbsp;is&nbsp;not&nbsp;defined&nbsp;in&nbsp;database,&nbsp;do&nbsp;not&nbsp;redirect</span></td></tr>
  373. <tr><td><div align="right"><a name="91"></a><a href="#91">91</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;**/</span></td></tr>
  374. <tr><td><div align="right"><a name="92"></a><a href="#92">92</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">init</span><span class="keyword">(</span><span class="default">$server</span><span class="keyword">)</span></td></tr>
  375. <tr><td><div align="right"><a name="93"></a><a href="#93">93</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
  376. <tr class="covered-by-large-tests popin" data-title="2 tests cover line 94" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;RouterTest::testBaseLinker&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="94"></a><a href="#94">94</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$siteUrl</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">\</span><span class="default">Entity</span><span class="default">\</span><span class="default">Config</span><span class="default">::</span><span class="default">getConfig</span><span class="keyword">(</span><span class="default">null</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">&quot;siteUrl&quot;</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
  377. <tr><td><div align="right"><a name="95"></a><a href="#95">95</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;@codeCoverageIgnoreStart</span></td></tr>
  378. <tr><td><div align="right"><a name="96"></a><a href="#96">96</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;This&nbsp;code&nbsp;is&nbsp;tested&nbsp;under&nbsp;another&nbsp;process</span></td></tr>
  379. <tr><td><div align="right"><a name="97"></a><a href="#97">97</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">$siteUrl</span><span class="default">&nbsp;</span><span class="default">!=</span><span class="default">&nbsp;</span><span class="default">$server</span><span class="keyword">[</span><span class="default">&quot;HTTP_HOST&quot;</span><span class="keyword">]</span><span class="default">&nbsp;</span><span class="default">&amp;&amp;</span><span class="default">&nbsp;</span><span class="default">$siteUrl</span><span class="default">&nbsp;</span><span class="default">!==</span><span class="default">&nbsp;</span><span class="default">null</span><span class="keyword">)</span></td></tr>
  380. <tr><td><div align="right"><a name="98"></a><a href="#98">98</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
  381. <tr><td><div align="right"><a name="99"></a><a href="#99">99</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">header</span><span class="keyword">(</span><span class="string">&quot;</span><span class="string">location:&nbsp;http://</span><span class="string">{</span><span class="string">$siteUrl</span><span class="keyword">}</span><span class="string">{</span><span class="string">$server</span><span class="keyword">[</span><span class="string">'REQUEST_URI'</span><span class="keyword">]</span><span class="keyword">}</span><span class="string">&quot;</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
  382. <tr><td><div align="right"><a name="100"></a><a href="#100">100</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">die</span><span class="keyword">;</span></td></tr>
  383. <tr><td><div align="right"><a name="101"></a><a href="#101">101</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
  384. <tr><td><div align="right"><a name="102"></a><a href="#102">102</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;@codeCoverageIgnoreEnd</span></td></tr>
  385. <tr class="covered-by-large-tests popin" data-title="2 tests cover line 103" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;RouterTest::testBaseLinker&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="103"></a><a href="#103">103</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
  386. <tr><td><div align="right"><a name="104"></a><a href="#104">104</a></div></td><td class="codeLine"></td></tr>
  387. <tr><td><div align="right"><a name="105"></a><a href="#105">105</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
  388. <tr><td><div align="right"><a name="106"></a><a href="#106">106</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;\Controller\AController&nbsp;controller</span></td></tr>
  389. <tr><td><div align="right"><a name="107"></a><a href="#107">107</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;/core/controller/AController.php</span></td></tr>
  390. <tr><td><div align="right"><a name="108"></a><a href="#108">108</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Match&nbsp;request&nbsp;to&nbsp;a&nbsp;controller</span></td></tr>
  391. <tr><td><div align="right"><a name="109"></a><a href="#109">109</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;return&nbsp;FALSE&nbsp;on&nbsp;failure&nbsp;(eg.&nbsp;404)</span></td></tr>
  392. <tr><td><div align="right"><a name="110"></a><a href="#110">110</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;**/</span></td></tr>
  393. <tr><td><div align="right"><a name="111"></a><a href="#111">111</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">serveUrl</span><span class="keyword">(</span><span class="keyword">)</span></td></tr>
  394. <tr><td><div align="right"><a name="112"></a><a href="#112">112</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
  395. <tr><td><div align="right"><a name="113"></a><a href="#113">113</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//TODO&nbsp;trigger&nbsp;hook&nbsp;GET,&nbsp;POST</span></td></tr>
  396. <tr class="covered-by-large-tests popin" data-title="2 tests cover line 114" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;RouterTest::testBaseLinker&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="114"></a><a href="#114">114</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">prepareUrl</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
  397. <tr class="covered-by-large-tests popin" data-title="2 tests cover line 115" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;RouterTest::testBaseLinker&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="115"></a><a href="#115">115</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$requestParams</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">explode</span><span class="keyword">(</span><span class="default">&quot;/&quot;</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">requestUrl</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
  398. <tr class="covered-by-large-tests popin" data-title="2 tests cover line 116" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;RouterTest::testBaseLinker&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="116"></a><a href="#116">116</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">foreach</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">routes</span><span class="default">&nbsp;</span><span class="keyword">as</span><span class="default">&nbsp;</span><span class="default">$i</span><span class="keyword">)</span></td></tr>
  399. <tr><td><div align="right"><a name="117"></a><a href="#117">117</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
  400. <tr class="covered-by-large-tests popin" data-title="1 test covers line 118" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="118"></a><a href="#118">118</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$routeParams</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">explode</span><span class="keyword">(</span><span class="default">&quot;/&quot;</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">$i</span><span class="keyword">[</span><span class="default">0</span><span class="keyword">]</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
  401. <tr class="covered-by-large-tests popin" data-title="1 test covers line 119" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="119"></a><a href="#119">119</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$p</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">routeMatch</span><span class="keyword">(</span><span class="default">$requestParams</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">$routeParams</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
  402. <tr class="covered-by-large-tests popin" data-title="1 test covers line 120" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="120"></a><a href="#120">120</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">$p</span><span class="default">&nbsp;</span><span class="default">===</span><span class="default">&nbsp;</span><span class="default">false</span><span class="keyword">)</span></td></tr>
  403. <tr class="covered-by-large-tests popin" data-title="1 test covers line 121" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="121"></a><a href="#121">121</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">continue</span><span class="keyword">;</span></td></tr>
  404. <tr class="covered-by-large-tests popin" data-title="1 test covers line 122" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="122"></a><a href="#122">122</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$controller</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">createController</span><span class="keyword">(</span><span class="default">$i</span><span class="keyword">[</span><span class="default">1</span><span class="keyword">]</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">$p</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
  405. <tr><td><div align="right"><a name="123"></a><a href="#123">123</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">$controller</span><span class="keyword">)</span></td></tr>
  406. <tr class="covered-by-large-tests popin" data-title="1 test covers line 124" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="124"></a><a href="#124">124</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$controller</span><span class="keyword">;</span></td></tr>
  407. <tr class="covered-by-large-tests popin" data-title="2 tests cover line 125" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;RouterTest::testBaseLinker&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="125"></a><a href="#125">125</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
  408. <tr class="covered-by-large-tests popin" data-title="2 tests cover line 126" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;RouterTest::testBaseLinker&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="126"></a><a href="#126">126</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">false</span><span class="keyword">;</span></td></tr>
  409. <tr class="warning"><td><div align="right"><a name="127"></a><a href="#127">127</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
  410. <tr><td><div align="right"><a name="128"></a><a href="#128">128</a></div></td><td class="codeLine"></td></tr>
  411. <tr><td><div align="right"><a name="129"></a><a href="#129">129</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
  412. <tr><td><div align="right"><a name="130"></a><a href="#130">130</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Create&nbsp;and&nbsp;return&nbsp;Controller&nbsp;for&nbsp;the&nbsp;given&nbsp;route</span></td></tr>
  413. <tr><td><div align="right"><a name="131"></a><a href="#131">131</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;$className</span></td></tr>
  414. <tr><td><div align="right"><a name="132"></a><a href="#132">132</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;array&nbsp;$routeParameters</span></td></tr>
  415. <tr><td><div align="right"><a name="133"></a><a href="#133">133</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;\Tools\AController&nbsp;on&nbsp;succes,&nbsp;false&nbsp;otherwise</span></td></tr>
  416. <tr><td><div align="right"><a name="134"></a><a href="#134">134</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;**/</span></td></tr>
  417. <tr><td><div align="right"><a name="135"></a><a href="#135">135</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">createController</span><span class="keyword">(</span><span class="default">$className</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">$params</span><span class="keyword">)</span></td></tr>
  418. <tr><td><div align="right"><a name="136"></a><a href="#136">136</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
  419. <tr class="covered-by-large-tests popin" data-title="1 test covers line 137" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="137"></a><a href="#137">137</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="keyword">!</span><span class="default">class_exists</span><span class="keyword">(</span><span class="default">$className</span><span class="keyword">)</span><span class="keyword">)</span></td></tr>
  420. <tr class="covered-by-large-tests popin" data-title="1 test covers line 138" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="138"></a><a href="#138">138</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">false</span><span class="keyword">;</span></td></tr>
  421. <tr class="covered-by-large-tests popin" data-title="1 test covers line 139" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="139"></a><a href="#139">139</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">routeParams</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">$params</span><span class="keyword">;</span></td></tr>
  422. <tr class="covered-by-large-tests popin" data-title="1 test covers line 140" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="140"></a><a href="#140">140</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$result</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">null</span><span class="keyword">;</span></td></tr>
  423. <tr><td><div align="right"><a name="141"></a><a href="#141">141</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">try</span></td></tr>
  424. <tr><td><div align="right"><a name="142"></a><a href="#142">142</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
  425. <tr class="covered-by-large-tests popin" data-title="1 test covers line 143" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="143"></a><a href="#143">143</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$result</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="keyword">new</span><span class="default">&nbsp;</span><span class="default">$className</span><span class="keyword">(</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">context</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">$params</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
  426. <tr class="covered-by-large-tests popin" data-title="1 test covers line 144" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="144"></a><a href="#144">144</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="keyword">!</span><span class="keyword">(</span><span class="default">$result</span><span class="default">&nbsp;</span><span class="keyword">instanceof</span><span class="default">&nbsp;</span><span class="default">\</span><span class="default">Tools</span><span class="default">\</span><span class="default">AController</span><span class="keyword">)</span><span class="keyword">)</span></td></tr>
  427. <tr class="covered-by-large-tests popin" data-title="1 test covers line 145" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="145"></a><a href="#145">145</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">false</span><span class="keyword">;</span></td></tr>
  428. <tr><td><div align="right"><a name="146"></a><a href="#146">146</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
  429. <tr class="covered-by-large-tests popin" data-title="1 test covers line 147" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="147"></a><a href="#147">147</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">catch</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">\</span><span class="default">Exception</span><span class="default">\</span><span class="default">Error404</span><span class="default">&nbsp;</span><span class="default">$e</span><span class="keyword">)</span></td></tr>
  430. <tr><td><div align="right"><a name="148"></a><a href="#148">148</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
  431. <tr class="covered-by-large-tests popin" data-title="1 test covers line 149" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="149"></a><a href="#149">149</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">false</span><span class="keyword">;</span></td></tr>
  432. <tr><td><div align="right"><a name="150"></a><a href="#150">150</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
  433. <tr class="covered-by-large-tests popin" data-title="1 test covers line 151" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="151"></a><a href="#151">151</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$result</span><span class="keyword">;</span></td></tr>
  434. <tr class="warning"><td><div align="right"><a name="152"></a><a href="#152">152</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
  435. <tr><td><div align="right"><a name="153"></a><a href="#153">153</a></div></td><td class="codeLine"></td></tr>
  436. <tr><td><div align="right"><a name="154"></a><a href="#154">154</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
  437. <tr><td><div align="right"><a name="155"></a><a href="#155">155</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Check&nbsp;if&nbsp;the&nbsp;request&nbsp;match&nbsp;route</span></td></tr>
  438. <tr><td><div align="right"><a name="156"></a><a href="#156">156</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;array&nbsp;$request&nbsp;User&nbsp;request</span></td></tr>
  439. <tr><td><div align="right"><a name="157"></a><a href="#157">157</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;array&nbsp;$route&nbsp;Route&nbsp;to&nbsp;check</span></td></tr>
  440. <tr><td><div align="right"><a name="158"></a><a href="#158">158</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;array&nbsp;on&nbsp;success,&nbsp;false&nbsp;on&nbsp;failure</span></td></tr>
  441. <tr><td><div align="right"><a name="159"></a><a href="#159">159</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;**/</span></td></tr>
  442. <tr><td><div align="right"><a name="160"></a><a href="#160">160</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">routeMatch</span><span class="keyword">(</span><span class="default">$request</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">$route</span><span class="keyword">)</span></td></tr>
  443. <tr><td><div align="right"><a name="161"></a><a href="#161">161</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
  444. <tr class="covered-by-large-tests popin" data-title="1 test covers line 162" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="162"></a><a href="#162">162</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$i</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">count</span><span class="keyword">(</span><span class="default">$request</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
  445. <tr class="covered-by-large-tests popin" data-title="1 test covers line 163" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="163"></a><a href="#163">163</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$params</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="keyword">array</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
  446. <tr class="covered-by-large-tests popin" data-title="1 test covers line 164" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="164"></a><a href="#164">164</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">$i</span><span class="default">&nbsp;</span><span class="default">!=</span><span class="default">&nbsp;</span><span class="default">count</span><span class="keyword">(</span><span class="default">$route</span><span class="keyword">)</span><span class="keyword">)</span></td></tr>
  447. <tr class="covered-by-large-tests popin" data-title="1 test covers line 165" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="165"></a><a href="#165">165</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">false</span><span class="keyword">;</span></td></tr>
  448. <tr class="covered-by-large-tests popin" data-title="1 test covers line 166" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="166"></a><a href="#166">166</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">while</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">$i</span><span class="keyword">)</span></td></tr>
  449. <tr><td><div align="right"><a name="167"></a><a href="#167">167</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
  450. <tr class="covered-by-large-tests popin" data-title="1 test covers line 168" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="168"></a><a href="#168">168</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$i</span><span class="default">--</span><span class="keyword">;</span></td></tr>
  451. <tr class="covered-by-large-tests popin" data-title="1 test covers line 169" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="169"></a><a href="#169">169</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">$route</span><span class="keyword">[</span><span class="default">$i</span><span class="keyword">]</span><span class="default">&nbsp;</span><span class="default">==</span><span class="default">&nbsp;</span><span class="default">''</span><span class="default">&nbsp;</span><span class="default">&amp;&amp;</span><span class="default">&nbsp;</span><span class="default">$request</span><span class="keyword">[</span><span class="default">$i</span><span class="keyword">]</span><span class="default">&nbsp;</span><span class="default">==</span><span class="default">&nbsp;</span><span class="default">''</span><span class="keyword">)</span></td></tr>
  452. <tr class="covered-by-large-tests popin" data-title="1 test covers line 170" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="170"></a><a href="#170">170</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">continue</span><span class="keyword">;</span></td></tr>
  453. <tr class="covered-by-large-tests popin" data-title="1 test covers line 171" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="171"></a><a href="#171">171</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">$route</span><span class="keyword">[</span><span class="default">$i</span><span class="keyword">]</span><span class="default">&nbsp;</span><span class="default">==</span><span class="default">&nbsp;</span><span class="default">''</span><span class="default">&nbsp;</span><span class="default">||</span><span class="default">&nbsp;</span><span class="default">$request</span><span class="keyword">[</span><span class="default">$i</span><span class="keyword">]</span><span class="default">&nbsp;</span><span class="default">==</span><span class="default">&nbsp;</span><span class="default">''</span><span class="keyword">)</span></td></tr>
  454. <tr class="covered-by-large-tests popin" data-title="1 test covers line 172" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="172"></a><a href="#172">172</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">false</span><span class="keyword">;</span></td></tr>
  455. <tr class="covered-by-large-tests popin" data-title="1 test covers line 173" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="173"></a><a href="#173">173</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">$route</span><span class="keyword">[</span><span class="default">$i</span><span class="keyword">]</span><span class="keyword">[</span><span class="default">0</span><span class="keyword">]</span><span class="default">&nbsp;</span><span class="default">!=</span><span class="default">&nbsp;</span><span class="default">':'</span><span class="default">&nbsp;</span><span class="default">&amp;&amp;</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">$route</span><span class="keyword">[</span><span class="default">$i</span><span class="keyword">]</span><span class="default">&nbsp;</span><span class="default">!=</span><span class="default">&nbsp;</span><span class="default">$request</span><span class="keyword">[</span><span class="default">$i</span><span class="keyword">]</span><span class="keyword">)</span><span class="keyword">)</span></td></tr>
  456. <tr class="covered-by-large-tests popin" data-title="1 test covers line 174" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="174"></a><a href="#174">174</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">false</span><span class="keyword">;</span></td></tr>
  457. <tr class="covered-by-large-tests popin" data-title="1 test covers line 175" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="175"></a><a href="#175">175</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">$route</span><span class="keyword">[</span><span class="default">$i</span><span class="keyword">]</span><span class="keyword">[</span><span class="default">0</span><span class="keyword">]</span><span class="default">&nbsp;</span><span class="default">==</span><span class="default">&nbsp;</span><span class="default">':'</span><span class="keyword">)</span></td></tr>
  458. <tr class="covered-by-large-tests popin" data-title="1 test covers line 176" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="176"></a><a href="#176">176</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$params</span><span class="keyword">[</span><span class="default">$route</span><span class="keyword">[</span><span class="default">$i</span><span class="keyword">]</span><span class="keyword">]</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">$request</span><span class="keyword">[</span><span class="default">$i</span><span class="keyword">]</span><span class="keyword">;</span></td></tr>
  459. <tr class="covered-by-large-tests popin" data-title="1 test covers line 177" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="177"></a><a href="#177">177</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$params</span><span class="keyword">[</span><span class="default">$i</span><span class="default">&nbsp;</span><span class="keyword">-</span><span class="default">1</span><span class="keyword">]</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">$request</span><span class="keyword">[</span><span class="default">$i</span><span class="keyword">]</span><span class="keyword">;</span></td></tr>
  460. <tr class="covered-by-large-tests popin" data-title="1 test covers line 178" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="178"></a><a href="#178">178</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
  461. <tr class="covered-by-large-tests popin" data-title="1 test covers line 179" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="179"></a><a href="#179">179</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">array_reverse</span><span class="keyword">(</span><span class="default">$params</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
  462. <tr class="warning"><td><div align="right"><a name="180"></a><a href="#180">180</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
  463. <tr><td><div align="right"><a name="181"></a><a href="#181">181</a></div></td><td class="codeLine"></td></tr>
  464. <tr><td><div align="right"><a name="182"></a><a href="#182">182</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
  465. <tr><td><div align="right"><a name="183"></a><a href="#183">183</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Append&nbsp;local&nbsp;routes&nbsp;to&nbsp;router</span></td></tr>
  466. <tr><td><div align="right"><a name="184"></a><a href="#184">184</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Will&nbsp;load&nbsp;CMS&nbsp;pages,&nbsp;categories&nbsp;page,&nbsp;products&nbsp;page,&nbsp;cart&nbsp;pages,&nbsp;etc.</span></td></tr>
  467. <tr><td><div align="right"><a name="185"></a><a href="#185">185</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;**/</span></td></tr>
  468. <tr><td><div align="right"><a name="186"></a><a href="#186">186</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">prepareUrl</span><span class="keyword">(</span><span class="keyword">)</span></td></tr>
  469. <tr><td><div align="right"><a name="187"></a><a href="#187">187</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
  470. <tr class="covered-by-large-tests popin" data-title="2 tests cover line 188" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;RouterTest::testBaseLinker&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="188"></a><a href="#188">188</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$fetcher</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="keyword">new</span><span class="default">&nbsp;</span><span class="default">\</span><span class="default">Entity</span><span class="default">\</span><span class="default">Cms</span><span class="keyword">(</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
  471. <tr class="covered-by-large-tests popin" data-title="2 tests cover line 189" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;RouterTest::testBaseLinker&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="189"></a><a href="#189">189</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$pages</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="default">$fetcher</span><span class="default">-&gt;</span><span class="default">selects</span><span class="keyword">(</span><span class="default">null</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="keyword">array</span><span class="keyword">(</span><span class="default">&quot;order&quot;</span><span class="keyword">)</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
  472. <tr class="covered-by-large-tests popin" data-title="2 tests cover line 190" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;RouterTest::testBaseLinker&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="190"></a><a href="#190">190</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">foreach</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">$pages</span><span class="default">&nbsp;</span><span class="keyword">as</span><span class="default">&nbsp;</span><span class="default">$i</span><span class="keyword">)</span></td></tr>
  473. <tr class="covered-by-large-tests popin" data-title="2 tests cover line 191" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;RouterTest::testBaseLinker&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="191"></a><a href="#191">191</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">doRouteAdd</span><span class="keyword">(</span><span class="default">$i</span><span class="default">-&gt;</span><span class="default">shurl</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">$i</span><span class="default">-&gt;</span><span class="default">controller</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
  474. <tr class="covered-by-large-tests popin" data-title="2 tests cover line 192" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;RouterTest::testBaseLinker&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="192"></a><a href="#192">192</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
  475. <tr><td><div align="right"><a name="193"></a><a href="#193">193</a></div></td><td class="codeLine"></td></tr>
  476. <tr><td><div align="right"><a name="194"></a><a href="#194">194</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
  477. <tr><td><div align="right"><a name="195"></a><a href="#195">195</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Add&nbsp;a&nbsp;route&nbsp;to&nbsp;the&nbsp;internal&nbsp;route&nbsp;list</span></td></tr>
  478. <tr><td><div align="right"><a name="196"></a><a href="#196">196</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Internal&nbsp;procedure</span></td></tr>
  479. <tr><td><div align="right"><a name="197"></a><a href="#197">197</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;**/</span></td></tr>
  480. <tr><td><div align="right"><a name="198"></a><a href="#198">198</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">doRouteAdd</span><span class="keyword">(</span><span class="default">$route</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">$controller</span><span class="keyword">)</span></td></tr>
  481. <tr><td><div align="right"><a name="199"></a><a href="#199">199</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
  482. <tr class="covered-by-large-tests popin" data-title="1 test covers line 200" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="200"></a><a href="#200">200</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">routes</span><span class="keyword">[</span><span class="keyword">]</span><span class="default">&nbsp;</span><span class="keyword">=</span><span class="default">&nbsp;</span><span class="keyword">array</span><span class="keyword">(</span><span class="default">$route</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">$controller</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
  483. <tr class="covered-by-large-tests popin" data-title="1 test covers line 201" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="201"></a><a href="#201">201</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
  484. <tr><td><div align="right"><a name="202"></a><a href="#202">202</a></div></td><td class="codeLine"></td></tr>
  485. <tr><td><div align="right"><a name="203"></a><a href="#203">203</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
  486. <tr><td><div align="right"><a name="204"></a><a href="#204">204</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;string&nbsp;$route&nbsp;Uri&nbsp;to&nbsp;match&nbsp;the&nbsp;controller</span></td></tr>
  487. <tr><td><div align="right"><a name="205"></a><a href="#205">205</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Uri&nbsp;can&nbsp;be&nbsp;formatted&nbsp;as&nbsp;'/:param/static'.</span></td></tr>
  488. <tr><td><div align="right"><a name="206"></a><a href="#206">206</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;expl.&nbsp;'/product/:id/'</span></td></tr>
  489. <tr><td><div align="right"><a name="207"></a><a href="#207">207</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;string&nbsp;$controller&nbsp;Controller&nbsp;class&nbsp;name.</span></td></tr>
  490. <tr><td><div align="right"><a name="208"></a><a href="#208">208</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;new&nbsp;$controller()&nbsp;MUST&nbsp;return&nbsp;a&nbsp;\Tool\AController&nbsp;instance</span></td></tr>
  491. <tr><td><div align="right"><a name="209"></a><a href="#209">209</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></td></tr>
  492. <tr><td><div align="right"><a name="210"></a><a href="#210">210</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Add&nbsp;a&nbsp;route&nbsp;and&nbsp;a&nbsp;Controller&nbsp;to&nbsp;the&nbsp;list</span></td></tr>
  493. <tr><td><div align="right"><a name="211"></a><a href="#211">211</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Can&nbsp;only&nbsp;be&nbsp;called&nbsp;from&nbsp;`routerSetup'&nbsp;hook</span></td></tr>
  494. <tr><td><div align="right"><a name="212"></a><a href="#212">212</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;**/</span></td></tr>
  495. <tr><td><div align="right"><a name="213"></a><a href="#213">213</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">routeAdd</span><span class="keyword">(</span><span class="default">$route</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">$controller</span><span class="keyword">)</span></td></tr>
  496. <tr><td><div align="right"><a name="214"></a><a href="#214">214</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
  497. <tr class="danger"><td><div align="right"><a name="215"></a><a href="#215">215</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="keyword">!</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">context</span><span class="default">-&gt;</span><span class="default">hookManager</span><span class="default">-&gt;</span><span class="default">isInHook</span><span class="keyword">(</span><span class="default">&quot;routerSetup&quot;</span><span class="keyword">)</span><span class="keyword">)</span></td></tr>
  498. <tr class="danger"><td><div align="right"><a name="216"></a><a href="#216">216</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">throw</span><span class="default">&nbsp;</span><span class="keyword">new</span><span class="default">&nbsp;</span><span class="default">\</span><span class="default">Exception</span><span class="keyword">(</span><span class="default">&quot;You&nbsp;can&nbsp;only&nbsp;add&nbsp;routes&nbsp;from&nbsp;`routerSetup'&nbsp;hook&quot;</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
  499. <tr class="danger"><td><div align="right"><a name="217"></a><a href="#217">217</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">doRouteAdd</span><span class="keyword">(</span><span class="default">$route</span><span class="keyword">,</span><span class="default">&nbsp;</span><span class="default">$controller</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
  500. <tr class="danger"><td><div align="right"><a name="218"></a><a href="#218">218</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
  501. <tr><td><div align="right"><a name="219"></a><a href="#219">219</a></div></td><td class="codeLine"></td></tr>
  502. <tr><td><div align="right"><a name="220"></a><a href="#220">220</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span></td></tr>
  503. <tr><td><div align="right"><a name="221"></a><a href="#221">221</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Getter</span></td></tr>
  504. <tr><td><div align="right"><a name="222"></a><a href="#222">222</a></div></td><td class="codeLine"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;**/</span></td></tr>
  505. <tr><td><div align="right"><a name="223"></a><a href="#223">223</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span class="default">&nbsp;</span><span class="keyword">function</span><span class="default">&nbsp;</span><span class="default">__get</span><span class="keyword">(</span><span class="default">$key</span><span class="keyword">)</span></td></tr>
  506. <tr><td><div align="right"><a name="224"></a><a href="#224">224</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
  507. <tr><td><div align="right"><a name="225"></a><a href="#225">225</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="default">switch</span><span class="default">&nbsp;</span><span class="keyword">(</span><span class="default">$key</span><span class="keyword">)</span></td></tr>
  508. <tr><td><div align="right"><a name="226"></a><a href="#226">226</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">{</span></td></tr>
  509. <tr class="covered-by-large-tests popin" data-title="2 tests cover line 227" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;RouterTest::testBaseLinker&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="227"></a><a href="#227">227</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">case</span><span class="default">&nbsp;</span><span class="default">&quot;rootPath&quot;</span><span class="keyword">:</span><span class="default">&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">rootPath</span><span class="keyword">;</span><span class="default">&nbsp;</span><span class="keyword">break</span><span class="keyword">;</span></td></tr>
  510. <tr class="covered-by-large-tests popin" data-title="2 tests cover line 228" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;RouterTest::testBaseLinker&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="228"></a><a href="#228">228</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">case</span><span class="default">&nbsp;</span><span class="default">&quot;rootUrl&quot;</span><span class="keyword">:</span><span class="default">&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">rootUrl</span><span class="keyword">;</span><span class="default">&nbsp;</span><span class="keyword">break</span><span class="keyword">;</span></td></tr>
  511. <tr class="covered-by-large-tests popin" data-title="2 tests cover line 229" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;ContextTest::testContext&lt;/li&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;RouterTest::testBaseLinker&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="229"></a><a href="#229">229</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">case</span><span class="default">&nbsp;</span><span class="default">&quot;modulesPath&quot;</span><span class="keyword">:</span><span class="default">&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">rootPath</span><span class="keyword">.</span><span class="default">&quot;content/modules/&quot;</span><span class="keyword">;</span><span class="default">&nbsp;</span><span class="keyword">break</span><span class="keyword">;</span></td></tr>
  512. <tr class="covered-by-large-tests popin" data-title="1 test covers line 230" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;RouterTest::testBaseLinker&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="230"></a><a href="#230">230</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">case</span><span class="default">&nbsp;</span><span class="default">&quot;modulesUrl&quot;</span><span class="keyword">:</span><span class="default">&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">rootUrl</span><span class="keyword">.</span><span class="default">&quot;content/modules/&quot;</span><span class="keyword">;</span><span class="default">&nbsp;</span><span class="keyword">break</span><span class="keyword">;</span></td></tr>
  513. <tr class="covered-by-large-tests popin" data-title="1 test covers line 231" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;RouterTest::testBaseLinker&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="231"></a><a href="#231">231</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">case</span><span class="default">&nbsp;</span><span class="default">&quot;themesPath&quot;</span><span class="keyword">:</span><span class="default">&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">rootPath</span><span class="keyword">.</span><span class="default">&quot;content/theme/&quot;</span><span class="keyword">;</span><span class="default">&nbsp;</span><span class="keyword">break</span><span class="keyword">;</span></td></tr>
  514. <tr class="covered-by-large-tests popin" data-title="1 test covers line 232" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;RouterTest::testBaseLinker&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="232"></a><a href="#232">232</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">case</span><span class="default">&nbsp;</span><span class="default">&quot;themesUrl&quot;</span><span class="keyword">:</span><span class="default">&nbsp;</span><span class="keyword">return</span><span class="default">&nbsp;</span><span class="default">$this</span><span class="default">-&gt;</span><span class="default">rootUrl</span><span class="keyword">.</span><span class="default">&quot;content/theme/&quot;</span><span class="keyword">;</span><span class="default">&nbsp;</span><span class="keyword">break</span><span class="keyword">;</span></td></tr>
  515. <tr class="warning"><td><div align="right"><a name="233"></a><a href="#233">233</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
  516. <tr class="covered-by-large-tests popin" data-title="1 test covers line 234" data-content="&lt;ul&gt;&lt;li class=&quot;covered-by-large-tests&quot;&gt;RouterTest::testBaseLinker&lt;/li&gt;&lt;/ul&gt;" data-placement="bottom" data-html="true"><td><div align="right"><a name="234"></a><a href="#234">234</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">throw</span><span class="default">&nbsp;</span><span class="keyword">new</span><span class="default">&nbsp;</span><span class="default">\</span><span class="default">Exception</span><span class="keyword">(</span><span class="string">&quot;</span><span class="string">Cannot&nbsp;access&nbsp;attribute&nbsp;</span><span class="string">{</span><span class="string">$key</span><span class="keyword">}</span><span class="string">&quot;</span><span class="keyword">)</span><span class="keyword">;</span></td></tr>
  517. <tr class="warning"><td><div align="right"><a name="235"></a><a href="#235">235</a></div></td><td class="codeLine"><span class="default">&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">}</span></td></tr>
  518. <tr><td><div align="right"><a name="236"></a><a href="#236">236</a></div></td><td class="codeLine"><span class="keyword">}</span></td></tr>
  519. <tr><td><div align="right"><a name="237"></a><a href="#237">237</a></div></td><td class="codeLine"></td></tr>
  520. </tbody>
  521. </table>
  522. <footer>
  523. <hr/>
  524. <h4>Legend</h4>
  525. <p>
  526. <span class="success"><strong>Executed</strong></span>
  527. <span class="danger"><strong>Not Executed</strong></span>
  528. <span class="warning"><strong>Dead Code</strong></span>
  529. </p>
  530. <p>
  531. <small>Generated by <a href="http://github.com/sebastianbergmann/php-code-coverage" target="_top">PHP_CodeCoverage 2.1.8</a> using <a href="http://php.net/" target="_top">PHP 5.6.1</a> and <a href="http://phpunit.de/">PHPUnit 4.7.7</a> at Wed Aug 5 22:34:46 UTC 2015.</small>
  532. </p>
  533. <a title="Back to the top" id="toplink" href="#"><span class="glyphicon glyphicon-arrow-up"></span></a>
  534. </footer>
  535. </div>
  536. <script src="../js/jquery.min.js" type="text/javascript"></script>
  537. <script src="../js/bootstrap.min.js" type="text/javascript"></script>
  538. <script src="../js/holder.min.js" type="text/javascript"></script>
  539. <script type="text/javascript">
  540. $(function() {
  541. var $window = $(window)
  542. , $top_link = $('#toplink')
  543. , $body = $('body, html')
  544. , offset = $('#code').offset().top;
  545. $top_link.hide().click(function(event) {
  546. event.preventDefault();
  547. $body.animate({scrollTop:0}, 800);
  548. });
  549. $window.scroll(function() {
  550. if($window.scrollTop() > offset) {
  551. $top_link.fadeIn();
  552. } else {
  553. $top_link.fadeOut();
  554. }
  555. }).scroll();
  556. $('.popin').popover({trigger: 'hover'});
  557. });
  558. </script>
  559. </body>
  560. </html>