{"id":281,"date":"2015-03-01T12:35:57","date_gmt":"2015-03-01T05:35:57","guid":{"rendered":"http:\/\/ethaizone.com\/blog\/?p=281"},"modified":"2016-01-04T10:49:53","modified_gmt":"2016-01-04T03:49:53","slug":"framework-argostic","status":"publish","type":"post","link":"https:\/\/ethaizone.me\/blog\/2015\/03\/framework-argostic\/","title":{"rendered":"\u0e2d\u0e22\u0e48\u0e32\u0e17\u0e33\u0e15\u0e31\u0e27\u0e40\u0e1b\u0e47\u0e19\u0e17\u0e32\u0e2a\u0e40\u0e1f\u0e23\u0e21\u0e40\u0e27\u0e34\u0e23\u0e4c\u0e04 Framework-Argostic"},"content":{"rendered":"<p>\u0e43\u0e19\u0e22\u0e38\u0e04\u0e2a\u0e21\u0e31\u0e22\u0e19\u0e35\u0e49\u0e17\u0e38\u0e01\u0e04\u0e19\u0e04\u0e07\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e01\u0e31\u0e19\u0e27\u0e48\u0e32\u0e21\u0e31\u0e19\u0e44\u0e21\u0e48\u0e21\u0e35\u0e43\u0e04\u0e23\u0e41\u0e25\u0e49\u0e27\u0e17\u0e35\u0e48\u0e08\u0e30\u0e40\u0e02\u0e35\u0e22\u0e19\u0e42\u0e04\u0e49\u0e14\u0e40\u0e23\u0e34\u0e48\u0e21\u0e08\u0e32\u0e01\u0e28\u0e39\u0e19\u0e22\u0e4c\u0e40\u0e25\u0e22 (Make it from scratch.) \u0e08\u0e30\u0e2b\u0e31\u0e19\u0e0b\u0e49\u0e32\u0e22\u0e2b\u0e31\u0e19\u0e02\u0e27\u0e32 \u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e08\u0e30\u0e40\u0e1b\u0e47\u0e19\u00a0developer \u0e43\u0e19\u0e20\u0e32\u0e29\u0e32\u0e43\u0e14\u0e46 \u0e01\u0e47\u0e21\u0e31\u0e01\u0e08\u0e30\u0e40\u0e02\u0e35\u0e22\u0e19\u0e2d\u0e34\u0e07 framework \u0e2d\u0e22\u0e48\u0e32\u0e07\u0e19\u0e49\u0e2d\u0e22\u0e15\u0e31\u0e27\u0e2b\u0e19\u0e36\u0e48\u0e07 \u0e2b\u0e23\u0e37\u0e2d\u0e1a\u0e32\u0e07\u0e17\u0e35\u0e2d\u0e32\u0e08\u0e16\u0e36\u0e07\u0e02\u0e31\u0e49\u0e19\u0e1b\u0e27\u0e32\u0e23\u0e13\u0e32\u0e23\u0e30\u0e15\u0e31\u0e27\u0e40\u0e2d\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e2a\u0e32\u0e27\u0e01\u0e01\u0e31\u0e19\u0e40\u0e25\u0e22\u0e17\u0e35\u0e40\u0e14\u0e35\u0e22\u0e27 \u0e1c\u0e21\u0e40\u0e2d\u0e07\u0e01\u0e47\u0e14\u0e49\u0e27\u0e22\u0e04\u0e19\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e40\u0e0a\u0e48\u0e19\u0e01\u0e31\u0e19 \u0e0b\u0e36\u0e48\u0e07\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e1c\u0e21\u0e04\u0e37\u0e2d Laravel \u0e19\u0e31\u0e49\u0e19\u0e40\u0e2d\u0e07<\/p>\n<p>\u0e41\u0e25\u0e49\u0e27\u0e1b\u0e31\u0e0d\u0e2b\u0e32\u0e17\u0e35\u0e48\u0e21\u0e31\u0e19\u0e40\u0e01\u0e34\u0e14\u0e02\u0e36\u0e49\u0e19\u0e15\u0e32\u0e21\u0e21\u0e32\u0e04\u0e37\u0e2d \u0e04\u0e38\u0e13\u0e01\u0e25\u0e32\u0e22\u0e40\u0e1b\u0e47\u0e19\u0e17\u0e32\u0e2a\u0e02\u0e2d\u0e07\u00a0framework \u0e19\u0e31\u0e49\u0e19\u0e46 \u0e44\u0e1b\u0e0b\u0e30\u0e41\u0e25\u0e49\u0e27 \u0e17\u0e33\u0e44\u0e21? \u0e04\u0e38\u0e13\u0e25\u0e2d\u0e07\u0e04\u0e34\u0e14\u0e14\u0e39\u0e27\u0e48\u0e32\u0e21\u0e31\u0e19\u0e43\u0e2b\u0e49\u0e2d\u0e30\u0e44\u0e23\u0e01\u0e31\u0e1a\u0e04\u0e38\u0e13\u0e1a\u0e49\u0e32\u0e07 \u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e07\u0e48\u0e32\u0e22\u0e02\u0e36\u0e49\u0e19 \/ helpers \u0e17\u0e35\u0e48\u0e21\u0e35\u0e21\u0e32\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e43\u0e0a\u0e49 \/ \u0e23\u0e30\u0e1a\u0e1a security \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e1b\u0e49\u0e2d\u0e07\u0e01\u0e31\u0e19 logic code \/ \u0e04\u0e38\u0e13\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e44\u0e14\u0e49\u0e40\u0e01\u0e37\u0e2d\u0e1a\u0e08\u0e30\u0e17\u0e31\u0e19\u0e17\u0e35\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e25\u0e07\u0e41\u0e23\u0e07\u0e2d\u0e30\u0e44\u0e23 \u0e41\u0e25\u0e30\u0e21\u0e31\u0e19\u0e01\u0e47\u0e17\u0e33\u0e07\u0e32\u0e19\u0e44\u0e14\u0e49\u0e14\u0e35\u0e40\u0e25\u0e22\u0e17\u0e35\u0e40\u0e14\u0e35\u0e22\u0e27!<\/p>\n<p><!--more--><\/p>\n<h2>\u0e41\u0e25\u0e49\u0e27\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48 framework \u0e17\u0e35\u0e48\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e30\u0e14\u0e27\u0e01\u0e2a\u0e1a\u0e32\u0e22\u0e02\u0e19\u0e32\u0e14\u0e19\u0e35\u0e49\u0e21\u0e31\u0e19\u0e40\u0e1b\u0e47\u0e19\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e14\u0e35\u0e40\u0e2b\u0e23\u0e2d?<\/h2>\n<p>\u0e08\u0e23\u0e34\u0e07\u0e46 \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e27\u0e48\u0e32\u0e21\u0e31\u0e19\u0e08\u0e30\u0e44\u0e21\u0e48\u0e14\u0e35\u0e19\u0e30\u0e04\u0e23\u0e31\u0e1a \u0e04\u0e38\u0e13\u0e04\u0e27\u0e23\u0e43\u0e0a\u0e49\u0e21\u0e31\u0e19\u0e0b\u0e30\u0e14\u0e49\u0e27\u0e22\u0e0b\u0e49\u0e33 \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e21\u0e31\u0e19\u0e16\u0e39\u0e01\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e21\u0e32\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e14\u0e35 \u0e0a\u0e38\u0e14\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e21\u0e31\u0e19\u0e01\u0e47\u0e21\u0e35\u0e1b\u0e23\u0e30\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e20\u0e32\u0e1e\u0e41\u0e25\u0e30\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e04\u0e27\u0e32\u0e21\u0e40\u0e23\u0e47\u0e27\u0e43\u0e19\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e14\u0e49\u0e27\u0e22 \u0e40\u0e1e\u0e35\u0e22\u0e07\u0e41\u0e15\u0e48\u0e27\u0e48\u0e32&#8230; \u0e21\u0e31\u0e19\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e04\u0e38\u0e13\u0e02\u0e35\u0e49\u0e40\u0e01\u0e35\u0e22\u0e08\u0e02\u0e36\u0e49\u0e19\u0e21\u0e32 \u0e41\u0e25\u0e49\u0e27\u0e44\u0e2d\u0e49\u0e04\u0e27\u0e32\u0e21 \u0e02\u0e35\u0e49\u0e40\u0e01\u0e35\u0e22\u0e08 \u0e19\u0e35\u0e49\u0e41\u0e2b\u0e25\u0e30\u0e17\u0e35\u0e48\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e42\u0e04\u0e49\u0e14\u0e17\u0e35\u0e48\u0e04\u0e38\u0e13\u0e40\u0e02\u0e35\u0e22\u0e19\u0e40\u0e2d\u0e07\u0e21\u0e31\u0e19\u0e17\u0e33\u0e07\u0e32\u0e19\u0e40\u0e08\u0e32\u0e30\u0e08\u0e07\u0e01\u0e31\u0e1a framework \u0e19\u0e31\u0e49\u0e19\u0e46 \u0e21\u0e32\u0e01\u0e40\u0e01\u0e34\u0e19\u0e44\u0e1b<\/p>\n<p>\u0e40\u0e23\u0e32\u0e25\u0e2d\u0e07\u0e21\u0e32\u0e14\u0e39\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e42\u0e04\u0e49\u0e14\u0e2a\u0e31\u0e01\u0e2d\u0e31\u0e19\u0e01\u0e31\u0e19 (\u0e41\u0e19\u0e48\u0e19\u0e2d\u0e19\u0e27\u0e48\u0e32\u0e21\u0e31\u0e19\u0e40\u0e1b\u0e47\u0e19 PHP \u0e41\u0e25\u0e30\u0e1c\u0e21\u0e2d\u0e34\u0e07 Laravel 4 \u0e43\u0e2b\u0e49\u0e40\u0e1b\u0e47\u0e19\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07)<\/p>\n<pre class=\"brush:php\">class NewsController extends Controller {\r\n  \r\n  public function getRecentNews() {\r\n    return View::make('news.recent', array(\r\n      'news' =&gt; News::orderBy('id', 'desc')-&gt;paginate(10)\r\n    ));\r\n  }\r\n  \r\n}<\/pre>\n<p>\u0e25\u0e2d\u0e07\u0e21\u0e32\u0e04\u0e34\u0e14\u0e27\u0e48\u0e32\u0e16\u0e49\u0e32\u0e25\u0e39\u0e01\u0e04\u0e49\u0e32\u0e04\u0e38\u0e13\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e41\u0e2a\u0e14\u0e07\u0e02\u0e48\u0e32\u0e27\u0e1a\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e27\u0e47\u0e1a\u0e2b\u0e25\u0e32\u0e22\u0e46 \u0e2b\u0e19\u0e49\u0e32 \u0e04\u0e38\u0e13\u0e01\u0e47\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e44\u0e1b\u0e27\u0e32\u0e07\u0e17\u0e35\u0e48 controller \u0e15\u0e48\u0e32\u0e07\u0e46 \u0e44\u0e14\u0e49\u0e40\u0e25\u0e22 \u0e21\u0e31\u0e19\u0e40\u0e23\u0e47\u0e27\u0e41\u0e25\u0e30\u0e07\u0e48\u0e32\u0e22 \u0e41\u0e15\u0e48\u0e41\u0e25\u0e49\u0e27\u0e25\u0e39\u0e01\u0e04\u0e49\u0e32\u0e04\u0e38\u0e13\u0e40\u0e01\u0e34\u0e14\u0e2d\u0e22\u0e32\u0e01\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e01\u0e32\u0e23\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e02\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e41\u0e2a\u0e14\u0e07\u0e02\u0e48\u0e32\u0e27\u0e02\u0e36\u0e49\u0e19\u0e21\u0e32 \u0e19\u0e31\u0e49\u0e19\u0e41\u0e2b\u0e25\u0e30 \u0e1b\u0e31\u0e0d\u0e2b\u0e32\u0e17\u0e35\u0e48\u0e40\u0e01\u0e34\u0e14\u0e02\u0e36\u0e49\u0e19 \u0e40\u0e1b\u0e47\u0e19\u0e2b\u0e19\u0e35\u0e49\u0e17\u0e32\u0e07\u0e40\u0e17\u0e04\u0e19\u0e34\u0e04\u0e17\u0e35\u0e48\u0e04\u0e38\u0e13\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e1b\u0e0a\u0e14\u0e43\u0e0a\u0e49\u0e14\u0e49\u0e27\u0e22\u0e01\u0e32\u0e23 search-replace \u0e40\u0e2d\u0e07\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14 \u0e1b\u0e31\u0e0d\u0e2b\u0e32\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e40\u0e01\u0e34\u0e14\u0e08\u0e32\u0e01\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e25\u0e39\u0e01\u0e04\u0e49\u0e32\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e1a\u0e2d\u0e01\u0e15\u0e31\u0e49\u0e07\u0e41\u0e15\u0e48\u0e41\u0e23\u0e01 \u0e41\u0e15\u0e48\u0e21\u0e31\u0e19\u0e40\u0e01\u0e34\u0e14\u0e08\u0e32\u0e01\u0e44\u0e2d\u0e49 &#8220;\u0e17\u0e32\u0e07\u0e25\u0e31\u0e14&#8221; \u0e07\u0e48\u0e32\u0e22\u0e46 \u0e17\u0e35\u0e48\u0e04\u0e38\u0e13\u0e17\u0e33\u0e21\u0e31\u0e19\u0e44\u0e27\u0e49<\/p>\n<h2>\u0e41\u0e25\u0e49\u0e27\u0e08\u0e30\u0e41\u0e01\u0e49\u0e44\u0e02\u0e01\u0e31\u0e19\u0e22\u0e31\u0e07\u0e44\u0e07\u0e14\u0e35?<\/h2>\n<p>\u0e40\u0e23\u0e32\u0e25\u0e2d\u0e07\u0e21\u0e32\u0e14\u0e39\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e43\u0e2b\u0e21\u0e48\u0e17\u0e35\u0e48\u0e1c\u0e21\u0e40\u0e02\u0e35\u0e22\u0e19\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e41\u0e17\u0e19\u0e02\u0e49\u0e32\u0e07\u0e1a\u0e19\u0e1a\u0e19\u0e01\u0e31\u0e19\u0e14\u0e39<\/p>\n<pre class=\"brush:php\">class NewsController extends AppController {\r\n  \r\n  protected $viewFactory;\r\n  protected $newsRepository;\r\n  \r\n  public function __construct($viewFactory, $newsRepository) {\r\n    $this-&gt;viewFactory = $viewFactory;\r\n    $this-&gt;newsRepository = $newsRepository;\r\n  }\r\n  \r\n  public function getRecentNews() {\r\n    return $this-&gt;viewFactory-&gt;make('news.recent', array(\r\n      'news' =&gt; $this-&gt;newsRepository-&gt;getRecent()\r\n    ));\r\n  }\r\n  \r\n}\r\n\r\nclass AppController extends Controller {\r\n  \r\n  \/\/ ...\r\n  \r\n}<\/pre>\n<p>\u0e04\u0e38\u0e13\u0e08\u0e30\u0e40\u0e2b\u0e47\u0e19\u0e27\u0e48\u0e32\u0e21\u0e31\u0e19\u0e43\u0e2b\u0e49\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e01\u0e31\u0e1a\u0e42\u0e04\u0e49\u0e14\u0e01\u0e48\u0e2d\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e19\u0e35\u0e49 \u0e41\u0e25\u0e30\u0e22\u0e31\u0e07\u0e21\u0e35\u0e2a\u0e34\u0e48\u0e07\u0e2d\u0e37\u0e48\u0e19\u0e46 \u0e40\u0e1e\u0e34\u0e48\u0e21\u0e02\u0e36\u0e49\u0e19\u0e21\u0e32 \u0e44\u0e14\u0e49\u0e41\u0e01\u0e48<\/p>\n<ul>\n<li>\u0e21\u0e31\u0e19\u0e44\u0e21\u0e44\u0e48\u0e14\u0e49\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e1e\u0e36\u0e48\u0e07\u0e1e\u0e32 framework \u0e43\u0e14\u0e46 \u0e2d\u0e35\u0e01\u0e41\u0e25\u0e49\u0e27<\/li>\n<li>\u0e21\u0e31\u0e19\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e17\u0e33 Dependency Injection \u0e44\u0e14\u0e49 \u0e02\u0e49\u0e2d\u0e14\u0e35\u0e40\u0e2a\u0e23\u0e34\u0e21\u0e04\u0e37\u0e2d \u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e02\u0e2d\u0e07\u0e40\u0e23\u0e32\u0e21\u0e31\u0e19\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e44\u0e14\u0e49 (testable) \u0e41\u0e25\u0e30\u0e21\u0e31\u0e19\u0e22\u0e31\u0e07\u0e17\u0e33\u0e41\u0e1a\u0e1a\u0e08\u0e33\u0e25\u0e2d\u0e07\u0e44\u0e14\u0e49 (mockable) \u0e0b\u0e36\u0e48\u0e07\u0e21\u0e31\u0e19 win \u0e40\u0e2d\u0e32\u0e21\u0e32\u0e01\u0e46<\/li>\n<li>\u0e1e\u0e24\u0e15\u0e34\u0e01\u0e23\u0e23\u0e21\u0e43\u0e19\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e23\u0e30\u0e14\u0e31\u0e1a method \u0e19\u0e31\u0e49\u0e19\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e41\u0e01\u0e49\u0e44\u0e02\u0e44\u0e14\u0e49\u0e07\u0e48\u0e32\u0e22\u0e46 \u0e41\u0e25\u0e49\u0e27 \u0e25\u0e37\u0e21\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e44\u0e1b search-replace \u0e2b\u0e25\u0e32\u0e22\u0e46 \u0e08\u0e38\u0e14\u0e44\u0e14\u0e49\u0e40\u0e25\u0e22<\/li>\n<\/ul>\n<p>\u0e40\u0e23\u0e32\u0e25\u0e2d\u0e07\u0e21\u0e32\u0e27\u0e34\u0e40\u0e04\u0e23\u0e32\u0e30\u0e2b\u0e4c\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e15\u0e34\u0e21\u0e01\u0e31\u0e19\u0e14\u0e39\u0e41\u0e1a\u0e1a\u0e17\u0e35\u0e25\u0e48\u0e30\u0e02\u0e31\u0e49\u0e19\u0e01\u0e31\u0e19<\/p>\n<p>1. \u0e17\u0e35\u0e48\u0e23\u0e30\u0e14\u0e31\u0e1a controller \u0e40\u0e23\u0e32\u0e43\u0e0a\u0e49 <code>AppController<\/code> \u0e41\u0e17\u0e19 <code>Controller<\/code> \u0e17\u0e35\u0e48\u0e40\u0e1b\u0e47\u0e19\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e2b\u0e25\u0e31\u0e01\u0e08\u0e32\u0e01 Laravel 4 \u0e0b\u0e36\u0e48\u0e07\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e0a\u0e31\u0e49\u0e19 (Layer) \u0e40\u0e1e\u0e34\u0e48\u0e21\u0e02\u0e36\u0e49\u0e19\u0e21\u0e32\u0e2d\u0e35\u0e01 \u0e17\u0e33\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e02\u0e2d\u0e07\u0e40\u0e23\u0e32\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e1c\u0e39\u0e01\u0e01\u0e31\u0e1a framework \u0e43\u0e14\u0e46 \u0e08\u0e36\u0e07\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e42\u0e04\u0e49\u0e14\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e04\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e22\u0e49\u0e32\u0e22\u0e07\u0e48\u0e32\u0e22\u0e46 \u0e14\u0e49\u0e27\u0e22\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e44\u0e1b\u0e41\u0e01\u0e49\u0e44\u0e02\u0e43\u0e19 <code>AppController<\/code> \u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e15\u0e49\u0e2d\u0e07\u0e21\u0e32\u0e41\u0e01\u0e49\u0e17\u0e38\u0e01 controller \u0e43\u0e19\u0e23\u0e30\u0e1a\u0e1a\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14 \u0e23\u0e27\u0e21\u0e16\u0e36\u0e07\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e1e\u0e34\u0e40\u0e28\u0e29\u0e17\u0e35\u0e48\u0e04\u0e38\u0e13\u0e15\u0e49\u0e2d\u0e07\u0e43\u0e0a\u0e49\u0e1a\u0e48\u0e2d\u0e22\u0e46 \u0e04\u0e38\u0e13\u0e22\u0e31\u0e07\u0e19\u0e33\u0e21\u0e31\u0e19\u0e44\u0e1b\u0e40\u0e02\u0e35\u0e22\u0e19\u0e44\u0e27\u0e49\u0e43\u0e19 <code>AppController<\/code> \u0e44\u0e14\u0e49\u0e2d\u0e35\u0e01\u0e14\u0e49\u0e27\u0e22<\/p>\n<p>2. \u0e43\u0e19\u0e2a\u0e48\u0e27\u0e19 <code>NewsRepository<\/code> \u0e01\u0e31\u0e1a <code>ViewFactory<\/code> \u0e19\u0e31\u0e49\u0e19\u0e40\u0e1b\u0e47\u0e19\u0e01\u0e32\u0e23\u0e17\u0e33 class \u0e02\u0e2d\u0e07 model\u00a0\u0e01\u0e31\u0e1a framework\u00a0\u0e44\u0e1b\u0e22\u0e31\u0e14\u0e43\u0e2a\u0e48\u0e43\u0e19\u0e01\u0e25\u0e38\u0e48\u0e21\u0e17\u0e35\u0e48\u0e40\u0e23\u0e35\u0e22\u0e01\u0e27\u0e48\u0e32\u00a0repository \u0e01\u0e31\u0e1a factory \u0e0b\u0e36\u0e48\u0e07\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e19\u0e35\u0e49\u0e0a\u0e48\u0e27\u0e22\u0e44\u0e14\u0e49\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\u0e1e\u0e24\u0e15\u0e34\u0e01\u0e23\u0e23\u0e21\u0e02\u0e2d\u0e07\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e40\u0e09\u0e1e\u0e32\u0e30 \u0e40\u0e0a\u0e48\u0e19 <code>$newRepository-&gt;getRecent()<\/code> \u0e19\u0e31\u0e49\u0e19\u0e21\u0e31\u0e19\u0e07\u0e48\u0e32\u0e22\u0e02\u0e36\u0e49\u0e19 \u0e04\u0e38\u0e13\u0e41\u0e04\u0e48\u0e40\u0e02\u0e49\u0e32\u0e44\u0e1b\u0e41\u0e01\u0e49\u0e43\u0e19 <code>getRecent()<\/code> \u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19 \u0e23\u0e27\u0e21\u0e16\u0e36\u0e07\u0e42\u0e04\u0e49\u0e14\u0e19\u0e35\u0e49\u0e22\u0e31\u0e07\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e44\u0e14\u0e49 \u0e41\u0e25\u0e30\u0e22\u0e31\u0e07\u0e1b\u0e31\u0e49\u0e19 mock class instance\u00a0\u0e40\u0e02\u0e32\u0e44\u0e1b\u0e44\u0e14\u0e49\u0e14\u0e49\u0e27\u0e22 \u0e41\u0e15\u0e48\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e19\u0e35\u0e49\u0e40\u0e2d\u0e32\u0e44\u0e27\u0e49\u0e40\u0e1b\u0e47\u0e19\u0e1a\u0e17\u0e04\u0e27\u0e32\u0e21\u0e04\u0e23\u0e32\u0e27\u0e2b\u0e19\u0e49\u0e32\u0e41\u0e17\u0e19\u0e25\u0e48\u0e30\u0e01\u0e31\u0e19 (\u0e44\u0e21\u0e48\u0e2a\u0e31\u0e0d\u0e0d\u0e32\u0e27\u0e48\u0e32\u0e08\u0e30\u0e40\u0e02\u0e35\u0e22\u0e19\u0e19\u0e30\u0e04\u0e23\u0e31\u0e1a XD )<\/p>\n<h2>\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e2d\u0e35\u0e01\u0e19\u0e34\u0e14\u0e43\u0e2b\u0e49\u0e21\u0e31\u0e19\u0e40\u0e02\u0e49\u0e32\u0e17\u0e48\u0e32\u0e14\u0e49\u0e27\u0e22 type hinting<\/h2>\n<p>\u0e43\u0e19\u0e15\u0e2d\u0e19\u0e19\u0e35\u0e49\u0e04\u0e38\u0e13\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e04\u0e33 class instance \u0e43\u0e14\u0e46 \u0e40\u0e02\u0e49\u0e32\u0e44\u0e1b\u0e22\u0e31\u0e07\u0e42\u0e04\u0e49\u0e14\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e44\u0e14\u0e49\u0e41\u0e25\u0e49\u0e27 \u0e41\u0e15\u0e48\u0e40\u0e23\u0e32\u0e21\u0e32\u0e40\u0e1e\u0e34\u0e48\u0e21 type hint \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e08\u0e33\u0e01\u0e31\u0e14 class \u0e17\u0e35\u0e48\u0e08\u0e30\u0e40\u0e02\u0e49\u0e32\u0e44\u0e1b\u0e44\u0e14\u0e49\u0e01\u0e31\u0e19\u0e14\u0e35\u0e01\u0e27\u0e48\u0e32<\/p>\n<p>\u0e22\u0e01\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07<\/p>\n<pre class=\"brush:php\">public function __construct($viewFactory, $newsRepository)<\/pre>\n<p>\u0e04\u0e38\u0e13\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e02\u0e35\u0e22\u0e19\u0e40\u0e1b\u0e47\u0e19\u0e41\u0e1a\u0e1a\u0e19\u0e35\u0e49\u0e44\u0e14\u0e49 (\u0e0b\u0e36\u0e48\u0e07\u0e43\u0e19\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e1c\u0e21\u0e44\u0e21\u0e44\u0e48\u0e14\u0e49\u0e40\u0e02\u0e35\u0e22\u0e19 grouping namespace \u0e43\u0e2b\u0e49\u0e16\u0e39\u0e01\u0e2b\u0e25\u0e31\u0e01 \u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e19\u0e35\u0e49\u0e44\u0e27\u0e49\u0e04\u0e23\u0e32\u0e27\u0e2d\u0e37\u0e48\u0e19\u0e19\u0e30\u0e04\u0e23\u0e31\u0e1a)<\/p>\n<pre class=\"brush:php\">public function __construct(\\ViewFactory $viewFactory, \r\n                            \\NewsRepository $newsRepository)<\/pre>\n<p>\u0e0b\u0e36\u0e48\u0e07\u0e08\u0e32\u0e01\u0e2d\u0e31\u0e19\u0e19\u0e35\u0e49\u0e41\u0e1b\u0e25\u0e27\u0e48\u0e32\u0e15\u0e31\u0e27\u0e41\u0e1b\u0e25 <code>$viewFactory<\/code> \u0e19\u0e31\u0e49\u0e19\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e1b\u0e47\u0e19 class \u0e0a\u0e37\u0e48\u0e2d\u0e27\u0e48\u0e32 <code>ViewFactory<\/code> \u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19 \u0e0b\u0e36\u0e48\u0e07\u0e41\u0e1a\u0e1a\u0e19\u0e35\u0e49\u0e40\u0e23\u0e32\u0e08\u0e30\u0e21\u0e31\u0e48\u0e19\u0e43\u0e08\u0e44\u0e14\u0e49\u0e41\u0e19\u0e48\u0e19\u0e2d\u0e19\u0e27\u0e48\u0e32 class instance \u0e17\u0e35\u0e48\u0e40\u0e02\u0e32\u0e21\u0e32\u0e19\u0e31\u0e49\u0e19\u0e21\u0e35\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e2b\u0e23\u0e37\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e17\u0e35\u0e48\u0e40\u0e23\u0e32\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e08\u0e23\u0e34\u0e07\u0e46<\/p>\n<p>\u0e41\u0e15\u0e48\u0e41\u0e25\u0e49\u0e27\u0e40\u0e23\u0e32\u0e25\u0e2d\u0e07\u0e21\u0e32\u0e14\u0e39\u0e43\u0e19\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e2d\u0e37\u0e48\u0e19\u0e01\u0e31\u0e19<\/p>\n<pre class=\"brush:php\">protected function fetchLog(\\VCS\\Driver\\Svn $log)<\/pre>\n<p>\u0e22\u0e01\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e27\u0e48\u0e32\u0e04\u0e38\u0e13\u0e44\u0e14\u0e49\u0e40\u0e02\u0e35\u0e22\u0e19\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e14\u0e36\u0e07 log \u0e08\u0e32\u0e01 S\u0e4cVN \u0e40\u0e2d\u0e32\u0e44\u0e27\u0e49 \u0e41\u0e15\u0e48\u0e41\u0e25\u0e49\u0e27\u0e43\u0e19\u0e1b\u0e31\u0e08\u0e08\u0e38\u0e1a\u0e31\u0e19\u0e04\u0e38\u0e13\u0e2d\u0e22\u0e32\u0e01\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e21\u0e32\u0e43\u0e0a\u0e49 GIT \u0e41\u0e19\u0e48\u0e19\u0e2d\u0e19\u0e27\u0e48\u0e32\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e01\u0e47\u0e15\u0e49\u0e2d\u0e07\u0e23\u0e2d\u0e07\u0e23\u0e31\u0e1a GIT \u0e14\u0e49\u0e27\u0e22\u0e40\u0e0a\u0e48\u0e19\u0e01\u0e31\u0e19 \u0e41\u0e15\u0e48\u0e41\u0e25\u0e49\u0e27\u0e1b\u0e31\u0e0d\u0e2b\u0e32\u0e01\u0e47\u0e40\u0e01\u0e34\u0e14\u0e02\u0e36\u0e49\u0e19\u0e27\u0e48\u0e32 <code>fetchLog()<\/code> \u0e19\u0e31\u0e49\u0e19\u0e23\u0e2d\u0e07\u0e23\u0e31\u0e1a\u0e41\u0e15\u0e48 instance \u0e02\u0e2d\u0e07 SVN \u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19 \u0e1e\u0e2d\u0e04\u0e38\u0e13\u0e41\u0e01\u0e49\u0e43\u0e2b\u0e49\u0e21\u0e31\u0e19\u0e23\u0e2d\u0e07\u0e23\u0e31\u0e1a GIT \u0e21\u0e31\u0e19\u0e01\u0e47\u0e08\u0e30\u0e44\u0e21\u0e48\u0e23\u0e2d\u0e07\u0e23\u0e31\u0e1a SVN \u0e2d\u0e35\u0e01 (\u0e14\u0e35\u0e07\u0e32\u0e21&#8230;.)<\/p>\n<p>\u0e04\u0e33\u0e15\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e14\u0e35\u0e17\u0e35\u0e48\u0e2a\u0e38\u0e14\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e19\u0e35\u0e49\u0e04\u0e37\u0e2d interface type hinting \u0e40\u0e23\u0e32\u0e25\u0e2d\u0e07\u0e21\u0e32\u0e14\u0e39\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e40\u0e2b\u0e25\u0e48\u0e32\u0e19\u0e35\u0e49\u0e01\u0e31\u0e19<\/p>\n<pre class=\"brush:php\">\\\\file: log.php\r\n\r\nprotected function fetchLog(\\VCS\\Driver\\DriverInterface $log)\r\n\r\n\r\n\\\\file: VCS\/Driver\/Svn.php\r\n\r\nnamespace VCS\\Driver;\r\nclass Svn implements DriverInterface {}\r\n\r\n\r\n\\\\file: VCS\/Driver\/Git.php\r\n\r\nnamespace VCS\\Driver;\r\nclass Git implements DriverInterface {}<\/pre>\n<p>\u0e08\u0e32\u0e01\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e19\u0e35\u0e49\u0e08\u0e30\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e40\u0e2b\u0e47\u0e19\u0e27\u0e48\u0e32 <code>fetchLog()<\/code> \u0e19\u0e31\u0e49\u0e19\u0e21\u0e35 type hint \u0e40\u0e1b\u0e47\u0e19\u0e0a\u0e37\u0e48\u0e2d interface \u0e27\u0e48\u0e32 <code>DriverInterface<\/code> \u0e0b\u0e36\u0e48\u0e07\u0e01\u0e32\u0e23\u0e40\u0e02\u0e35\u0e22\u0e19 interface type hinting \u0e41\u0e1a\u0e1a\u0e19\u0e35\u0e49\u0e21\u0e31\u0e19\u0e08\u0e30\u0e44\u0e21\u0e48\u0e40\u0e1b\u0e47\u0e19\u0e01\u0e32\u0e23\u0e1a\u0e31\u0e07\u0e04\u0e31\u0e1a\u0e27\u0e48\u0e32\u0e04\u0e38\u0e13\u0e15\u0e49\u0e2d\u0e07\u0e2a\u0e48\u0e07 class \u0e2d\u0e30\u0e44\u0e23\u0e40\u0e02\u0e49\u0e32\u0e21\u0e32 \u0e41\u0e15\u0e48\u0e21\u0e31\u0e19\u0e08\u0e30\u0e1a\u0e2d\u0e01\u0e27\u0e48\u0e32\u0e2a\u0e48\u0e07\u0e2d\u0e30\u0e44\u0e23\u0e21\u0e32\u0e01\u0e47\u0e44\u0e14\u0e49\u0e15\u0e23\u0e32\u0e1a\u0e43\u0e14\u0e17\u0e35\u0e48 class instance \u0e19\u0e31\u0e49\u0e19\u0e46 \u0e44\u0e14\u0e49\u0e17\u0e33\u0e01\u0e32\u0e23 implement interface \u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e02\u0e49\u0e32\u0e21\u0e32<\/p>\n<p><strong>\u0e40\u0e01\u0e23\u0e47\u0e14\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e21\u0e37\u0e2d\u0e42\u0e1b\u0e23:<\/strong> \u0e04\u0e38\u0e13\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16 mock class \u00a0\u0e14\u0e49\u0e27\u0e22\u0e01\u0e32\u0e23 implement interface \u0e19\u0e31\u0e49\u0e19\u0e46 \u0e0b\u0e36\u0e48\u0e07\u0e21\u0e31\u0e19\u0e08\u0e30\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e19\u0e31\u0e49\u0e19\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e44\u0e14\u0e49\u0e07\u0e48\u0e32\u0e22!<\/p>\n<p><strong>\u0e1a\u0e17\u0e2a\u0e23\u0e38\u0e1b<\/strong><\/p>\n<p>\u0e14\u0e49\u0e27\u0e22\u0e01\u0e32\u0e23\u0e40\u0e02\u0e35\u0e22\u0e19\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e43\u0e19\u0e04\u0e23\u0e31\u0e49\u0e07\u0e16\u0e31\u0e14\u0e44\u0e1b\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e42\u0e14\u0e22\u0e01\u0e32\u0e23\u0e04\u0e34\u0e14\u0e44\u0e27\u0e49\u0e40\u0e2a\u0e21\u0e2d\u0e27\u0e48\u0e32\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e19\u0e31\u0e49\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e04\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e22\u0e49\u0e32\u0e22\u0e44\u0e14\u0e49 \u0e41\u0e25\u0e30\u0e44\u0e21\u0e48\u0e1c\u0e39\u0e01\u0e15\u0e34\u0e14\u0e01\u0e31\u0e1a framework \u0e43\u0e14\u0e46 (\u0e17\u0e33\u0e15\u0e31\u0e27\u0e43\u0e2b\u0e49\u0e42\u0e04\u0e49\u0e14\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e27\u0e48\u0e32 framework \u0e44\u0e21\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48\u0e08\u0e23\u0e34\u0e07) \u0e42\u0e04\u0e49\u0e14\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e08\u0e30\u0e1e\u0e34\u0e40\u0e28\u0e29 \u0e1b\u0e23\u0e31\u0e1a\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e44\u0e14\u0e49 \u0e41\u0e25\u0e30\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e44\u0e14\u0e49\u0e07\u0e48\u0e32\u0e22 \u0e21\u0e31\u0e19\u0e08\u0e30\u0e21\u0e35\u0e1b\u0e23\u0e30\u0e42\u0e22\u0e0a\u0e19\u0e4c\u0e21\u0e32\u0e01\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e17\u0e33\u0e07\u0e32\u0e19\u0e43\u0e19\u0e23\u0e30\u0e22\u0e30\u0e22\u0e32\u0e27\u0e04\u0e23\u0e31\u0e1a<\/p>\n<p>Thanks this article as original content.\u00a0<a title=\"Don\u2019t Hard-Code Yourself. Make Your Code Framework-Agnostic\" href=\"http:\/\/desmart.com\/blog\/dont-hard-code-yourself\" target=\"_blank\">Don\u2019t Hard-Code Yourself. Make Your Code Framework-Agnostic<\/a><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0e43\u0e19\u0e22\u0e38\u0e04\u0e2a\u0e21\u0e31\u0e22\u0e19\u0e35\u0e49\u0e17\u0e38\u0e01\u0e04\u0e19\u0e04\u0e07\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e01\u0e31\u0e19\u0e27\u0e48\u0e32\u0e21\u0e31\u0e19\u0e44\u0e21\u0e48\u0e21\u0e35\u0e43 &hellip; <a href=\"https:\/\/ethaizone.me\/blog\/2015\/03\/framework-argostic\/\">\u0e2d\u0e48\u0e32\u0e19\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e15\u0e34\u0e21 <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[3,9,15],"tags":[],"class_list":["post-281","post","type-post","status-publish","format-standard","hentry","category-coding","category-laravel","category-php"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p2Iqnv-4x","_links":{"self":[{"href":"https:\/\/ethaizone.me\/blog\/wp-json\/wp\/v2\/posts\/281"}],"collection":[{"href":"https:\/\/ethaizone.me\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ethaizone.me\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ethaizone.me\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ethaizone.me\/blog\/wp-json\/wp\/v2\/comments?post=281"}],"version-history":[{"count":3,"href":"https:\/\/ethaizone.me\/blog\/wp-json\/wp\/v2\/posts\/281\/revisions"}],"predecessor-version":[{"id":302,"href":"https:\/\/ethaizone.me\/blog\/wp-json\/wp\/v2\/posts\/281\/revisions\/302"}],"wp:attachment":[{"href":"https:\/\/ethaizone.me\/blog\/wp-json\/wp\/v2\/media?parent=281"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ethaizone.me\/blog\/wp-json\/wp\/v2\/categories?post=281"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ethaizone.me\/blog\/wp-json\/wp\/v2\/tags?post=281"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}