{"id":367,"date":"2020-01-20T15:34:12","date_gmt":"2020-01-20T07:34:12","guid":{"rendered":"http:\/\/dangnh.cf\/?p=367"},"modified":"2020-01-20T15:37:00","modified_gmt":"2020-01-20T07:37:00","slug":"service-container-di-sanh-dieu-voi-laravel","status":"publish","type":"post","link":"https:\/\/dangnh.cf\/vi\/2020\/01\/20\/service-container-di-sanh-dieu-voi-laravel\/","title":{"rendered":"Service Container &#038; DI &#8220;s\u00e0nh \u0111i\u1ec7u&#8221; v\u1edbi Laravel"},"content":{"rendered":"<p>Hi, long time no see \ud83d\ude00<\/p>\n<p>Laravel l\u00e0 m\u1ed9t framework n\u1ed5i ti\u1ebfng nh\u1ea5t trong c\u1ed9ng \u0111\u1ed3ng PHP, 1 ph\u1ea7n l\u00e0 v\u00ec c\u1ea5u tr\u00fac tuy\u1ec7t v\u1eddi c\u1ee7a n\u00f3. Khi n\u00f3i \u0111\u1ebfn architectural concepts c\u1ee7a Laravel, kh\u00f4ng th\u1ec3 kh\u00f4ng nh\u1eafc t\u1edbi Service Container. Khi b\u1ea1n \u0111\u1ee5ng \u0111\u1ebfn 1 b\u00e0i to\u00e1n l\u1edbn h\u01a1n, c\u1ea7n s\u1eed d\u1ee5ng nhi\u1ec1u services, dependencies&#8230; th\u00ec b\u1ea1n s\u1ebd c\u1ea7n hi\u1ec3u v\u00e0 s\u1eed d\u1ee5ng \u0111\u01b0\u1ee3c Service Container.<\/p>\n<p><!--more--><\/p>\n<p>V\u1ec1 Dependency Injection th\u00ec m\u00ecnh s\u1ebd c\u00f3 1 b\u00e0i post kh\u00e1c c\u1ee5 th\u1ec3 v\u1ec1 n\u00f3 h\u01a1n, nh\u01b0ng c\u0169ng kh\u00e1 \u0111\u01a1n gi\u1ea3n, t\u1ea1m hi\u1ec3u l\u00e0 thay v\u00ec new m\u1ed9t object, ta s\u1ebd kh\u1edfi t\u1ea1o n\u00f3 \u1edf h\u00e0m __construct() c\u1ee7a class s\u1eed d\u1ee5ng m\u00e0 kh\u00f4ng c\u1ea7n new object, v\u00ec th\u1ebf ta s\u1ebd kh\u00f4ng c\u1ea7n quan t\u00e2m \u0111\u1ebfn chuy\u1ec7n initiate object \u0111\u00f3 nh\u01b0 th\u1ebf n\u00e0o.<\/p>\n<p>Okay let&#8217;s go!<\/p>\n<p>X\u00e9t \u0111o\u1ea1n code th\u01b0\u1eddng xuy\u00ean g\u1eb7p sau:<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\nclass RedirectionController extends Core\r\n{\r\n    public function redirect(Request $request)\r\n    {\r\n        $params = $request-&gt;all();\r\n        $user = $request-&gt;user();\r\n        ...\r\n    }\r\n}\r\n\r\n<\/pre>\n<p>B\u1ea1n \u0111\u00e3 bao gi\u1edd th\u1eafc m\u1eafc t\u1ea1i sao Laravel c\u00f3 th\u1ec3 tr\u1ea3 v\u1ec1 <strong>\u0111\u00fang<\/strong> request, user data <strong>hi\u1ec7n t\u1ea1i<\/strong> m\u00e0 kh\u00f4ng c\u1ea7n b\u1ea5t c\u1ee9 1 input n\u00e0o ch\u01b0a? Ch\u1ec9 c\u1ea7n 1 thao t\u00e1c type hint \u0111\u01a1n gi\u1ea3n l\u00e0 \u0111\u1ee7?<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2020\/01\/mgc.gif\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"368\" data-permalink=\"https:\/\/dangnh.cf\/vi\/2020\/01\/20\/service-container-di-sanh-dieu-voi-laravel\/mgc\/\" data-orig-file=\"https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2020\/01\/mgc.gif?fit=275%2C252&amp;ssl=1\" data-orig-size=\"275,252\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"mgc\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2020\/01\/mgc.gif?fit=275%2C252&amp;ssl=1\" class=\"aligncenter size-full wp-image-368\" src=\"https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2020\/01\/mgc.gif?resize=275%2C252\" alt=\"\" width=\"275\" height=\"252\" \/><\/a><\/p>\n<p>Th\u1ef1c ra ph\u00e9p m\u00e0u \u1edf \u0111\u00e2y n\u1eb1m \u1edf Service Container c\u1ee7a Laravel. \u0110\u1ec3 hi\u1ec3u v\u1ec1 Service Container, ch\u00fang ta s\u1ebd ph\u1ea3i t\u00ecm hi\u1ec3u kh\u00e1i ni\u1ec7m v\u1ec1 <strong>Binding<\/strong>.<\/p>\n<p><strong>Binding<\/strong> t\u1ee9c l\u00e0 h\u00e0nh \u0111\u1ed9ng \u0111\u0103ng k\u00fd 1 Service v\u1edbi Service Providers. Sau khi \u0111\u00e3 \u0111\u0103ng k\u00fd xong, th\u00ec ta c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng Service \u0111\u00f3 under <strong>app<\/strong>\u00a0container scope. C\u00f3 nhi\u1ec1u c\u00e1ch \u0111\u1ec3 Bind, c\u00e1c <strong>\u0111\u01a1n gi\u1ea3n nh\u1ea5t<\/strong> nh\u01b0 sau:<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\n$this-&gt;bind('HelpSpotAPI', function ($app) {\r\n    return new HelpSpotAPI($app-&gt;make('HttpClient'));\r\n});\r\n<\/pre>\n<p>Nh\u01b0 ta th\u1ea5y, bind() nh\u1eadn 2 parameter ch\u00ednh \u0111\u00f3 l\u00e0: T\u00ean class interface m\u00e0 ta mu\u1ed1n bind, quan tr\u1ecdng h\u01a1n l\u00e0 closure function s\u1ebd init v\u00e0 return m\u1ed9t instance c\u1ee7a class m\u00e0 ta mu\u1ed1n tr\u1ea3 v\u1ec1. C\u00e1ch truy xu\u1ea5t &amp; s\u1eed d\u1ee5ng instance tr\u1ea3 v\u1ec1 n\u00e0y nh\u01b0 th\u1ebf n\u00e0o th\u00ec l\u00e1t n\u1eefa m\u00ecnh s\u1ebd b\u00e0n sau.<\/p>\n<h3>Singleton Binding<\/h3>\n<p>Khi s\u1eed d\u1ee5ng singleton binding, instance tr\u1ea3 v\u1ec1 s\u1ebd \u0111\u01b0\u1ee3c kh\u1edfi t\u1ea1o 1 l\u1ea7n duy nh\u1ea5t, sau \u0111\u00f3 c\u00f9ng m\u1ed9t instance \u0111\u00f3 s\u1ebd \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng l\u1ea1i \u1edf c\u00e1c l\u1ea7n g\u1ecdi ti\u1ebfp theo. T\u00f9y theo y\u00eau c\u1ea7u b\u00e0i to\u00e1n m\u00e0 ch\u00fang ta ch\u1ecdn 1 c\u00e1ch binding h\u1ee3p l\u00fd.<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\n$this-&gt;singleton('HelpSpotAPI', function ($app) {\r\n    return new HelpSpotAPI($app-&gt;make('HttpClient'));\r\n});\r\n<\/pre>\n<h2>Binding Interface v\u1edbi Class n\u00e0o implement n\u00f3<\/h2>\n<p>\u0110\u00e2y l\u00e0 m\u1ed9t ch\u1ee9c n\u0103ng l\u00e0m n\u00ean s\u1ee9c m\u1ea1nh c\u1ee7a Laravel. Example cho d\u1ec5 hi\u1ec3u l\u00e0 gi\u1ea3 s\u1eed ta c\u00f3 class <em>S3Storage<\/em> implement <em>Storage<\/em> interface, v\u00e0 \u0111\u00e3 th\u1ef1c hi\u1ec7n Binding:<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\n&lt;?php\r\nuse Illuminate\\Support\\ServiceProvider;\r\n\r\nclass StorageServiceProvider extends ServiceProvider { \r\n    public function register()\r\n    {\r\n        $this-&gt;bind('StorageInterface', 'S3Storage');\r\n    }\r\n}\r\n\r\n<\/pre>\n<h3>S\u1eed D\u1ee5ng (Automatic Injection):<\/h3>\n<p>Sau khi \u0111\u00e3 khai b\u00e1o v\u1edbi Service Provider, ta c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng nhi\u1ec1u c\u00e1ch kh\u00e1c nhau \u0111\u1ec3 resolve v\u00e0 call t\u1edbi instance mong mu\u1ed1n, nh\u01b0ng m\u1ed9t c\u00e1ch m\u00e0 ta s\u1ebd th\u01b0\u1eddng xuy\u00ean s\u1eed d\u1ee5ng \u0111\u00f3 l\u00e0 <strong>Automatic Injection<\/strong>.<\/p>\n<p>Quay l\u1ea1i v\u1edbi t\u00ecnh hu\u1ed1ng gi\u1ea3 s\u1eed b\u00ean tr\u00ean, sau khi \u0111\u00e3 Binding, \u1edf controller n\u1ebfu c\u1ea7n s\u1eed d\u1ee5ng <em>S3Storage<\/em> class, ta ch\u1ec9 c\u1ea7n type-hint <em>Storage<\/em> interface l\u00e0 \u0111\u01b0\u1ee3c:<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\n&lt;?php\r\nclass FileController extends Controller {\r\n    private $storage; \r\n\r\n    \/\/ Laravel will automatically resolve StorageInterface to the S3Storage class\r\n    public function __construct(StorageInterface $storage) \r\n    { \r\n        $this-&gt;storage = $storage;\r\n    }\r\n    \r\n    public function deleteFile()\r\n    {\r\n        $this-&gt;storage-&gt;delete();\r\n    }\r\n}\r\n\r\n<\/pre>\n<p>Laravel container s\u1ebd t\u1ef1 l\u1ef1a ch\u1ecdn \u0111\u00fang class m\u00e0 ta \u0111\u00e3 binded. L\u00e0m nh\u01b0 v\u1eady, c\u1ea5u tr\u00fac code s\u1ebd d\u1ec5 d\u00e0ng module ho\u00e1 h\u01a1n, n\u1ebfu thay storage class kh\u00e1c, ta ch\u1ec9 c\u1ea7n \u0111\u1ecbnh ngh\u0129a th\u00eam 1 class m\u1edbi, v\u00e0 thay n\u00f3 cho <em>S3Storage<\/em> \u1edf giai \u0111o\u1ea1n Binding l\u00e0 xong.<\/p>\n<h2>L\u1eddi cu\u1ed1i<\/h2>\n<p>V\u1eady l\u00e0 ch\u00fang ta \u0111\u00e3 hi\u1ec3u c\u01a1 b\u1ea3n v\u1ec1 Service Container c\u1ee7a Laravel, m\u1ed9t concept r\u1ea5t quan tr\u1ecdng \u0111\u1ec3 c\u00f3 th\u1ec3 c\u1ea5u tr\u00fac \u0111\u01b0\u1ee3c nh\u1eefng h\u1ec7 th\u1ed1ng ph\u1ee9c t\u1ea1p h\u01a1n. Vi\u1ec7c ti\u1ebfp theo l\u00e0 c\u00e1c b\u1ea1n h\u00e3y th\u1eed t\u1ef1 t\u00ecm hi\u1ec3u xem Laravel x\u1eed l\u00fd binding\u00a0<em>Request&#8230;.\u00a0<\/em>nh\u01b0 th\u1ebf n\u00e0o nh\u00e9 \ud83d\ude09<br \/>\nHave fun &amp; Thanks for reading!<\/p>\n<p>&nbsp;<\/p>\n<hr \/>\n<p>References:<\/p>\n<ul>\n<li><a href=\"https:\/\/laravel.com\/docs\/6.x\/container\">Service Container &#8211; Laravel<\/a><\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>Hi, long time no see \ud83d\ude00 Laravel l\u00e0 m\u1ed9t framework n\u1ed5i ti\u1ebfng nh\u1ea5t trong c\u1ed9ng \u0111\u1ed3ng PHP, 1 ph\u1ea7n l\u00e0 v\u00ec c\u1ea5u tr\u00fac tuy\u1ec7t v\u1eddi c\u1ee7a n\u00f3. Khi n\u00f3i \u0111\u1ebfn architectural concepts c\u1ee7a Laravel, kh\u00f4ng th\u1ec3 kh\u00f4ng nh\u1eafc t\u1edbi Service Container. Khi b\u1ea1n \u0111\u1ee5ng \u0111\u1ebfn 1 b\u00e0i to\u00e1n l\u1edbn h\u01a1n, c\u1ea7n s\u1eed d\u1ee5ng nhi\u1ec1u services, dependencies&#8230; th\u00ec b\u1ea1n s\u1ebd c\u1ea7n hi\u1ec3u v\u00e0 s\u1eed d\u1ee5ng \u0111\u01b0\u1ee3c Service Container.<\/p>","protected":false},"author":1,"featured_media":390,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"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","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[5],"tags":[],"class_list":["post-367","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Service Container &amp; DI &quot;s\u00e0nh \u0111i\u1ec7u&quot; v\u1edbi Laravel - Mark&#039;s Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/dangnh.cf\/vi\/2020\/01\/20\/service-container-di-sanh-dieu-voi-laravel\/\" \/>\n<meta property=\"og:locale\" content=\"vi_VN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Service Container &amp; DI &quot;s\u00e0nh \u0111i\u1ec7u&quot; v\u1edbi Laravel - Mark&#039;s Blog\" \/>\n<meta property=\"og:description\" content=\"Hi, long time no see \ud83d\ude00 Laravel l\u00e0 m\u1ed9t framework n\u1ed5i ti\u1ebfng nh\u1ea5t trong c\u1ed9ng \u0111\u1ed3ng PHP, 1 ph\u1ea7n l\u00e0 v\u00ec c\u1ea5u tr\u00fac tuy\u1ec7t v\u1eddi c\u1ee7a n\u00f3. Khi n\u00f3i \u0111\u1ebfn architectural concepts c\u1ee7a Laravel, kh\u00f4ng th\u1ec3 kh\u00f4ng nh\u1eafc t\u1edbi Service Container. Khi b\u1ea1n \u0111\u1ee5ng \u0111\u1ebfn 1 b\u00e0i to\u00e1n l\u1edbn h\u01a1n, c\u1ea7n s\u1eed d\u1ee5ng nhi\u1ec1u services, dependencies&#8230; th\u00ec b\u1ea1n s\u1ebd c\u1ea7n hi\u1ec3u v\u00e0 s\u1eed d\u1ee5ng \u0111\u01b0\u1ee3c Service Container.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/dangnh.cf\/vi\/2020\/01\/20\/service-container-di-sanh-dieu-voi-laravel\/\" \/>\n<meta property=\"og:site_name\" content=\"Mark&#039;s Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/dangtute\" \/>\n<meta property=\"article:published_time\" content=\"2020-01-20T07:34:12+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-01-20T07:37:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/dangnh.cf\/wp-content\/uploads\/2020\/01\/1_SstfI6yiEWj1mrnFrLTUdA-e1579505803935.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"900\" \/>\n\t<meta property=\"og:image:height\" content=\"600\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u0110\u01b0\u1ee3c vi\u1ebft b\u1edfi\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 ph\u00fat\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/dangnh.cf\\\/2020\\\/01\\\/20\\\/service-container-di-sanh-dieu-voi-laravel\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/dangnh.cf\\\/2020\\\/01\\\/20\\\/service-container-di-sanh-dieu-voi-laravel\\\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\\\/\\\/dangnh.cf\\\/#\\\/schema\\\/person\\\/8f3b9db3b250186af217fbeec88eda9c\"},\"headline\":\"Service Container &#038; DI &#8220;s\u00e0nh \u0111i\u1ec7u&#8221; v\u1edbi Laravel\",\"datePublished\":\"2020-01-20T07:34:12+00:00\",\"dateModified\":\"2020-01-20T07:37:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/dangnh.cf\\\/2020\\\/01\\\/20\\\/service-container-di-sanh-dieu-voi-laravel\\\/\"},\"wordCount\":872,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/dangnh.cf\\\/2020\\\/01\\\/20\\\/service-container-di-sanh-dieu-voi-laravel\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/dangnh.cf\\\/wp-content\\\/uploads\\\/2020\\\/01\\\/1_SstfI6yiEWj1mrnFrLTUdA-e1579505803935.jpeg?fit=900%2C600&ssl=1\",\"articleSection\":[\"PHP\"],\"inLanguage\":\"vi\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/dangnh.cf\\\/2020\\\/01\\\/20\\\/service-container-di-sanh-dieu-voi-laravel\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/dangnh.cf\\\/2020\\\/01\\\/20\\\/service-container-di-sanh-dieu-voi-laravel\\\/\",\"url\":\"https:\\\/\\\/dangnh.cf\\\/2020\\\/01\\\/20\\\/service-container-di-sanh-dieu-voi-laravel\\\/\",\"name\":\"Service Container & DI \\\"s\u00e0nh \u0111i\u1ec7u\\\" v\u1edbi Laravel - Mark's Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/dangnh.cf\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/dangnh.cf\\\/2020\\\/01\\\/20\\\/service-container-di-sanh-dieu-voi-laravel\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/dangnh.cf\\\/2020\\\/01\\\/20\\\/service-container-di-sanh-dieu-voi-laravel\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/dangnh.cf\\\/wp-content\\\/uploads\\\/2020\\\/01\\\/1_SstfI6yiEWj1mrnFrLTUdA-e1579505803935.jpeg?fit=900%2C600&ssl=1\",\"datePublished\":\"2020-01-20T07:34:12+00:00\",\"dateModified\":\"2020-01-20T07:37:00+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/dangnh.cf\\\/#\\\/schema\\\/person\\\/8f3b9db3b250186af217fbeec88eda9c\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/dangnh.cf\\\/2020\\\/01\\\/20\\\/service-container-di-sanh-dieu-voi-laravel\\\/#breadcrumb\"},\"inLanguage\":\"vi\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/dangnh.cf\\\/2020\\\/01\\\/20\\\/service-container-di-sanh-dieu-voi-laravel\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"vi\",\"@id\":\"https:\\\/\\\/dangnh.cf\\\/2020\\\/01\\\/20\\\/service-container-di-sanh-dieu-voi-laravel\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/dangnh.cf\\\/wp-content\\\/uploads\\\/2020\\\/01\\\/1_SstfI6yiEWj1mrnFrLTUdA-e1579505803935.jpeg?fit=900%2C600&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/dangnh.cf\\\/wp-content\\\/uploads\\\/2020\\\/01\\\/1_SstfI6yiEWj1mrnFrLTUdA-e1579505803935.jpeg?fit=900%2C600&ssl=1\",\"width\":900,\"height\":600},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/dangnh.cf\\\/2020\\\/01\\\/20\\\/service-container-di-sanh-dieu-voi-laravel\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/dangnh.cf\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Service Container &#038; DI &#8220;s\u00e0nh \u0111i\u1ec7u&#8221; v\u1edbi Laravel\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/dangnh.cf\\\/#website\",\"url\":\"https:\\\/\\\/dangnh.cf\\\/\",\"name\":\"Mark's Blog\",\"description\":\"A blog about Programming and Technical Stuffs\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/dangnh.cf\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"vi\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/dangnh.cf\\\/#\\\/schema\\\/person\\\/8f3b9db3b250186af217fbeec88eda9c\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"vi\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d838feab6bbd5e774c608b656a29ab0d54981b88fa4b563a83d7635108b6c76e?s=96&d=retro&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d838feab6bbd5e774c608b656a29ab0d54981b88fa4b563a83d7635108b6c76e?s=96&d=retro&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d838feab6bbd5e774c608b656a29ab0d54981b88fa4b563a83d7635108b6c76e?s=96&d=retro&r=g\",\"caption\":\"admin\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Service Container & DI \"s\u00e0nh \u0111i\u1ec7u\" v\u1edbi Laravel - Mark's Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/dangnh.cf\/vi\/2020\/01\/20\/service-container-di-sanh-dieu-voi-laravel\/","og_locale":"vi_VN","og_type":"article","og_title":"Service Container & DI \"s\u00e0nh \u0111i\u1ec7u\" v\u1edbi Laravel - Mark's Blog","og_description":"Hi, long time no see \ud83d\ude00 Laravel l\u00e0 m\u1ed9t framework n\u1ed5i ti\u1ebfng nh\u1ea5t trong c\u1ed9ng \u0111\u1ed3ng PHP, 1 ph\u1ea7n l\u00e0 v\u00ec c\u1ea5u tr\u00fac tuy\u1ec7t v\u1eddi c\u1ee7a n\u00f3. Khi n\u00f3i \u0111\u1ebfn architectural concepts c\u1ee7a Laravel, kh\u00f4ng th\u1ec3 kh\u00f4ng nh\u1eafc t\u1edbi Service Container. Khi b\u1ea1n \u0111\u1ee5ng \u0111\u1ebfn 1 b\u00e0i to\u00e1n l\u1edbn h\u01a1n, c\u1ea7n s\u1eed d\u1ee5ng nhi\u1ec1u services, dependencies&#8230; th\u00ec b\u1ea1n s\u1ebd c\u1ea7n hi\u1ec3u v\u00e0 s\u1eed d\u1ee5ng \u0111\u01b0\u1ee3c Service Container.","og_url":"https:\/\/dangnh.cf\/vi\/2020\/01\/20\/service-container-di-sanh-dieu-voi-laravel\/","og_site_name":"Mark's Blog","article_publisher":"https:\/\/www.facebook.com\/dangtute","article_published_time":"2020-01-20T07:34:12+00:00","article_modified_time":"2020-01-20T07:37:00+00:00","og_image":[{"width":900,"height":600,"url":"https:\/\/dangnh.cf\/wp-content\/uploads\/2020\/01\/1_SstfI6yiEWj1mrnFrLTUdA-e1579505803935.jpeg","type":"image\/jpeg"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"\u0110\u01b0\u1ee3c vi\u1ebft b\u1edfi":"admin","\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc":"4 ph\u00fat"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/dangnh.cf\/2020\/01\/20\/service-container-di-sanh-dieu-voi-laravel\/#article","isPartOf":{"@id":"https:\/\/dangnh.cf\/2020\/01\/20\/service-container-di-sanh-dieu-voi-laravel\/"},"author":{"name":"admin","@id":"https:\/\/dangnh.cf\/#\/schema\/person\/8f3b9db3b250186af217fbeec88eda9c"},"headline":"Service Container &#038; DI &#8220;s\u00e0nh \u0111i\u1ec7u&#8221; v\u1edbi Laravel","datePublished":"2020-01-20T07:34:12+00:00","dateModified":"2020-01-20T07:37:00+00:00","mainEntityOfPage":{"@id":"https:\/\/dangnh.cf\/2020\/01\/20\/service-container-di-sanh-dieu-voi-laravel\/"},"wordCount":872,"commentCount":0,"image":{"@id":"https:\/\/dangnh.cf\/2020\/01\/20\/service-container-di-sanh-dieu-voi-laravel\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2020\/01\/1_SstfI6yiEWj1mrnFrLTUdA-e1579505803935.jpeg?fit=900%2C600&ssl=1","articleSection":["PHP"],"inLanguage":"vi","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/dangnh.cf\/2020\/01\/20\/service-container-di-sanh-dieu-voi-laravel\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/dangnh.cf\/2020\/01\/20\/service-container-di-sanh-dieu-voi-laravel\/","url":"https:\/\/dangnh.cf\/2020\/01\/20\/service-container-di-sanh-dieu-voi-laravel\/","name":"Service Container & DI \"s\u00e0nh \u0111i\u1ec7u\" v\u1edbi Laravel - Mark's Blog","isPartOf":{"@id":"https:\/\/dangnh.cf\/#website"},"primaryImageOfPage":{"@id":"https:\/\/dangnh.cf\/2020\/01\/20\/service-container-di-sanh-dieu-voi-laravel\/#primaryimage"},"image":{"@id":"https:\/\/dangnh.cf\/2020\/01\/20\/service-container-di-sanh-dieu-voi-laravel\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2020\/01\/1_SstfI6yiEWj1mrnFrLTUdA-e1579505803935.jpeg?fit=900%2C600&ssl=1","datePublished":"2020-01-20T07:34:12+00:00","dateModified":"2020-01-20T07:37:00+00:00","author":{"@id":"https:\/\/dangnh.cf\/#\/schema\/person\/8f3b9db3b250186af217fbeec88eda9c"},"breadcrumb":{"@id":"https:\/\/dangnh.cf\/2020\/01\/20\/service-container-di-sanh-dieu-voi-laravel\/#breadcrumb"},"inLanguage":"vi","potentialAction":[{"@type":"ReadAction","target":["https:\/\/dangnh.cf\/2020\/01\/20\/service-container-di-sanh-dieu-voi-laravel\/"]}]},{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/dangnh.cf\/2020\/01\/20\/service-container-di-sanh-dieu-voi-laravel\/#primaryimage","url":"https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2020\/01\/1_SstfI6yiEWj1mrnFrLTUdA-e1579505803935.jpeg?fit=900%2C600&ssl=1","contentUrl":"https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2020\/01\/1_SstfI6yiEWj1mrnFrLTUdA-e1579505803935.jpeg?fit=900%2C600&ssl=1","width":900,"height":600},{"@type":"BreadcrumbList","@id":"https:\/\/dangnh.cf\/2020\/01\/20\/service-container-di-sanh-dieu-voi-laravel\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/dangnh.cf\/"},{"@type":"ListItem","position":2,"name":"Service Container &#038; DI &#8220;s\u00e0nh \u0111i\u1ec7u&#8221; v\u1edbi Laravel"}]},{"@type":"WebSite","@id":"https:\/\/dangnh.cf\/#website","url":"https:\/\/dangnh.cf\/","name":"Mark's Blog","description":"A blog about Programming and Technical Stuffs","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/dangnh.cf\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"vi"},{"@type":"Person","@id":"https:\/\/dangnh.cf\/#\/schema\/person\/8f3b9db3b250186af217fbeec88eda9c","name":"admin","image":{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/secure.gravatar.com\/avatar\/d838feab6bbd5e774c608b656a29ab0d54981b88fa4b563a83d7635108b6c76e?s=96&d=retro&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/d838feab6bbd5e774c608b656a29ab0d54981b88fa4b563a83d7635108b6c76e?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d838feab6bbd5e774c608b656a29ab0d54981b88fa4b563a83d7635108b6c76e?s=96&d=retro&r=g","caption":"admin"}}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2020\/01\/1_SstfI6yiEWj1mrnFrLTUdA-e1579505803935.jpeg?fit=900%2C600&ssl=1","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9w3NP-5V","jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":211,"url":"https:\/\/dangnh.cf\/vi\/2018\/06\/01\/trait-mixin-in-php\/","url_meta":{"origin":367,"position":0},"title":"Trait &#8211; Mixin in PHP?","author":"admin","date":"Th\u00e1ng 6 1, 2018","format":false,"excerpt":"Hi guys :) Nh\u01b0 c\u00e1c b\u1ea1n c\u00f3 l\u1ebd \u0111\u00e3 bi\u1ebft, PHP l\u00e0 1 ng\u00f4n ng\u1eef single inheritance, t\u1ee9c l\u00e0 n\u00f3 s\u1ebd c\u00f3 1 s\u1ed1 nh\u01b0\u1ee3c \u0111i\u1ec3m nh\u01b0: M\u1ea5t th\u1eddi gian & c\u00f4ng s\u1ee9c khi t\u00ecm hi\u1ec3u\/ch\u1ea1y h\u1ec7 th\u1ed1ng. V\u00ed d\u1ee5: 1 class c\u00f3 10 levels c\u00e1c class cha, th\u00ec v\u1ec1\u2026","rel":"","context":"Trong &quot;PHP&quot;","block_context":{"text":"PHP","link":"https:\/\/dangnh.cf\/vi\/category\/web-development\/php\/"},"img":{"alt_text":"Trait in PHP","src":"https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2018\/06\/retro-background-3101430_960_720.jpg?fit=960%2C540&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2018\/06\/retro-background-3101430_960_720.jpg?fit=960%2C540&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2018\/06\/retro-background-3101430_960_720.jpg?fit=960%2C540&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2018\/06\/retro-background-3101430_960_720.jpg?fit=960%2C540&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":124,"url":"https:\/\/dangnh.cf\/vi\/2017\/05\/25\/stdclass-la-gi-lam-the-nao-de-co-properties-dong-trong-php\/","url_meta":{"origin":367,"position":1},"title":"stdClass l\u00e0 g\u00ec? L\u00e0m th\u1ebf n\u00e0o \u0111\u1ec3 c\u00f3 Dynamic Properties trong PHP?","author":"admin","date":"Th\u00e1ng 5 25, 2017","format":false,"excerpt":"Ch\u00e0o c\u00e1c b\u1ea1n, m\u00ecnh l\u00e0 \u0110\u0103ng, v\u00e0 m\u00ecnh \u0111\u00e3 tr\u1edf l\u1ea1i r\u1ed3i \u0111\u00e2yy\u00a0 N\u1ebfu b\u1ea1n l\u00e0 1 ng\u01b0\u1eddi r\u1ea5t hay t\u00f2 m\u00f2 ngh\u1ecbch ng\u1ee3m, gi\u1ed1ng t\u00f4i, th\u00ec ch\u1eafc h\u1eb3n b\u1ea1n \u0111\u00e3 t\u1eebng lang thang trong core c\u1ee7a m\u1ea5y th\u1eb1ng PHP framework nh\u01b0 Laravel hay Yii, v\u00e0 ch\u1eafc cmn c\u00fa l\u00e0\u2026","rel":"","context":"Trong &quot;PHP&quot;","block_context":{"text":"PHP","link":"https:\/\/dangnh.cf\/vi\/category\/web-development\/php\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2017\/05\/stdclass-trong-php.png?fit=365%2C268&ssl=1&resize=350%2C200","width":350,"height":200},"classes":[]},{"id":473,"url":"https:\/\/dangnh.cf\/vi\/2025\/11\/05\/ban-dung-cho-developer\/","url_meta":{"origin":367,"position":2},"title":"Standing desk &#8211; V\u1eadt trang tr\u00ed \u0111\u1eaft ti\u1ec1n hay m\u1eb9o hack productivity?","author":"admin","date":"Th\u00e1ng m\u01b0\u1eddi m\u1ed9t 5, 2025","format":false,"excerpt":"Mua c\u00e1i b\u00e0n \u0111\u1ee9ng - standing desk, t\u00f4i t\u01b0\u1edfng m\u00ecnh s\u1ebd th\u00e0nh si\u00eau nh\u00e2n. Ng\u01b0\u1eddi ta qu\u1ea3ng c\u00e1o b\u1ea3o \u0111\u1ee9ng l\u00e0m vi\u1ec7c s\u1ebd t\u1eadp trung h\u01a1n, kh\u1ecfe l\u01b0ng h\u01a1n, code s\u01b0\u1edbng h\u01a1n. C\u00f2n th\u1ef1c t\u1ebf th\u00ec... N\u00f3 th\u00e0nh c\u00e1i c\u1edb ho\u00e0n h\u1ea3o \u0111\u1ec3... kh\u00f4ng ng\u1ed3i y\u00ean. L\u00fac code \u0111\u01b0\u1ee3c, t\u00f4i\u2026","rel":"","context":"Trong \"productivity hack\"","block_context":{"text":"productivity hack","link":"https:\/\/dangnh.cf\/vi\/tag\/productivity-hack\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2025\/11\/image-1.png?fit=800%2C1200&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2025\/11\/image-1.png?fit=800%2C1200&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2025\/11\/image-1.png?fit=800%2C1200&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2025\/11\/image-1.png?fit=800%2C1200&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":441,"url":"https:\/\/dangnh.cf\/vi\/2025\/06\/06\/rag-la-gi-va-tai-sao-may-ong-ai-cu-nhac-hoai\/","url_meta":{"origin":367,"position":3},"title":"RAG l\u00e0 g\u00ec? V\u00e0 t\u1ea1i sao m\u1ea5y \u00f4ng AI c\u1ee9 nh\u1eafc ho\u00e0i?","author":"admin","date":"Th\u00e1ng 6 6, 2025","format":false,"excerpt":"RAG \u2013 vi\u1ebft t\u1eaft c\u1ee7a \u201cRetrieval-Augmented Generation\u201d \u2013 nghe th\u00ec c\u00f3 v\u1ebb ng\u1ea7u, nh\u01b0ng th\u1ef1c ra hi\u1ec3u \u0111\u01a1n gi\u1ea3n th\u00ec n\u00f3 l\u00e0 m\u1ed9t c\u00e1ch gi\u00fap m\u1ea5y con AI\u2026 \u0111\u1ee1 ngu h\u01a1n khi tr\u1ea3 l\u1eddi c\u00e2u h\u1ecfi. N\u1ebfu b\u1ea1n \u0111\u00e3 s\u1eed d\u1ee5ng AI cho c\u00f4ng vi\u1ec7c chuy\u00ean m\u00f4n, ch\u1eafc ch\u1eafn c\u00f3\u2026","rel":"","context":"Trong &quot;AI&quot;","block_context":{"text":"AI","link":"https:\/\/dangnh.cf\/vi\/category\/ai\/"},"img":{"alt_text":"RAG trong AI","src":"https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2025\/06\/ai-rag.png?fit=1200%2C800&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2025\/06\/ai-rag.png?fit=1200%2C800&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2025\/06\/ai-rag.png?fit=1200%2C800&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2025\/06\/ai-rag.png?fit=1200%2C800&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2025\/06\/ai-rag.png?fit=1200%2C800&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":409,"url":"https:\/\/dangnh.cf\/vi\/2025\/05\/19\/huong-dan-setup-ai-blog-to-podcast-agent\/","url_meta":{"origin":367,"position":4},"title":"H\u01b0\u1edbng D\u1eabn Setup AI Blog to Podcast Agent","author":"admin","date":"Th\u00e1ng 5 19, 2025","format":false,"excerpt":"D\u01b0\u1edbi \u0111\u00e2y l\u00e0 b\u00e0i vi\u1ebft gi\u1edbi thi\u1ec7u nhanh v\u1ec1 repo Awesome LLM Apps v\u00e0 h\u01b0\u1edbng d\u1eabn ch\u1ea1y th\u1eed \u201cAI Blog to Podcast Agent\u201d tr\u00ean m\u00e1y Mac c\u1ee7a b\u1ea1n. M\u00ecnh s\u1ebd l\u1ea7n l\u01b0\u1ee3t \u0111i qua: Gi\u1edbi thi\u1ec7u chung v\u1ec1 repo T\u1ea1i sao n\u00ean kh\u00e1m ph\u00e1 \u0110i\u1ec3m nh\u1ea5n \u201cAI Blog to Podcast\u2026","rel":"","context":"Trong &quot;AI&quot;","block_context":{"text":"AI","link":"https:\/\/dangnh.cf\/vi\/category\/ai\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2025\/05\/ai-agent.png?fit=1024%2C1024&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2025\/05\/ai-agent.png?fit=1024%2C1024&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2025\/05\/ai-agent.png?fit=1024%2C1024&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2025\/05\/ai-agent.png?fit=1024%2C1024&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":66,"url":"https:\/\/dangnh.cf\/vi\/2017\/05\/19\/lam-toan-giai-tri-mot-ti-nhi\/","url_meta":{"origin":367,"position":5},"title":"L\u00e0m to\u00e1n gi\u1ea3i tr\u00ed m\u1ed9t t\u00ed nh\u1ec9?","author":"admin","date":"Th\u00e1ng 5 19, 2017","format":false,"excerpt":"Ok, ch\u00e0o t\u1ea5t c\u1ea3 anh em Ch\u1ea3 l\u00e0 cu\u1ed1i tu\u1ea7n, \u1edf nh\u00e0 r\u1ea3nh rang, tr\u1eddi th\u00ec se se l\u1ea1nh, m\u0169i h\u01a1i t\u1eafc, ch\u1ec9 mu\u1ed1n co ro qu\u1ea5n ch\u0103n \u00f4m laptop cho \u1ea5m. Lang thang thi c\u00e1i cu\u1ed9c thi l\u1eadp tr\u00ecnh c\u1ee7a b\u1ecdn Top Career g\u00ec \u0111\u00f3 :v v\u00f4 t\u00ecnh v\u1ea5p\u2026","rel":"","context":"Trong &quot;PHP&quot;","block_context":{"text":"PHP","link":"https:\/\/dangnh.cf\/vi\/category\/web-development\/php\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2017\/05\/learning_math-e1459355151809.jpg?fit=800%2C513&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2017\/05\/learning_math-e1459355151809.jpg?fit=800%2C513&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2017\/05\/learning_math-e1459355151809.jpg?fit=800%2C513&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2017\/05\/learning_math-e1459355151809.jpg?fit=800%2C513&ssl=1&resize=700%2C400 2x"},"classes":[]}],"_links":{"self":[{"href":"https:\/\/dangnh.cf\/vi\/wp-json\/wp\/v2\/posts\/367","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dangnh.cf\/vi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dangnh.cf\/vi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dangnh.cf\/vi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dangnh.cf\/vi\/wp-json\/wp\/v2\/comments?post=367"}],"version-history":[{"count":20,"href":"https:\/\/dangnh.cf\/vi\/wp-json\/wp\/v2\/posts\/367\/revisions"}],"predecessor-version":[{"id":389,"href":"https:\/\/dangnh.cf\/vi\/wp-json\/wp\/v2\/posts\/367\/revisions\/389"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dangnh.cf\/vi\/wp-json\/wp\/v2\/media\/390"}],"wp:attachment":[{"href":"https:\/\/dangnh.cf\/vi\/wp-json\/wp\/v2\/media?parent=367"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dangnh.cf\/vi\/wp-json\/wp\/v2\/categories?post=367"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dangnh.cf\/vi\/wp-json\/wp\/v2\/tags?post=367"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}