{"id":137,"date":"2024-03-25T06:56:27","date_gmt":"2024-03-25T06:56:27","guid":{"rendered":"http:\/\/localhost\/w643\/?p=137"},"modified":"2024-03-25T07:07:07","modified_gmt":"2024-03-25T07:07:07","slug":"bai-6-service-providers","status":"publish","type":"post","link":"https:\/\/blog.hnk90.com\/?p=137","title":{"rendered":"B\u00e0i 6. Service Providers"},"content":{"rendered":"\n<p>Service providers l\u00e0 m\u1ed9t th\u00e0nh ph\u1ea7n c\u1ed1t l\u00f5i, trung t\u00e2m c\u1ee7a vi\u1ec7c kh\u1edfi t\u1ea1o m\u1ecdi \u1ee9ng d\u1ee5ng trong Laravel. <\/p>\n\n\n\n<p>C\u00e1c b\u1ea1n c\u00f3 th\u1ec3 t\u00ecm th\u1ea5y m\u1ed9t s\u1ed1 default providers trong config\/app.php<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"506\" src=\"http:\/\/localhost\/w643\/wp-content\/uploads\/2024\/03\/image-18-1024x506.png\" alt=\"\" class=\"wp-image-138\" srcset=\"https:\/\/blog.hnk90.com\/wp-content\/uploads\/2024\/03\/image-18-1024x506.png 1024w, https:\/\/blog.hnk90.com\/wp-content\/uploads\/2024\/03\/image-18-300x148.png 300w, https:\/\/blog.hnk90.com\/wp-content\/uploads\/2024\/03\/image-18-768x380.png 768w, https:\/\/blog.hnk90.com\/wp-content\/uploads\/2024\/03\/image-18.png 1224w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>v\u00e0 trong vendor\/laravel\/framework\/src\/Illuminate\/Support\/DefaultProviders.php<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"761\" src=\"http:\/\/localhost\/w643\/wp-content\/uploads\/2024\/03\/image-20-1024x761.png\" alt=\"\" class=\"wp-image-140\" srcset=\"https:\/\/blog.hnk90.com\/wp-content\/uploads\/2024\/03\/image-20-1024x761.png 1024w, https:\/\/blog.hnk90.com\/wp-content\/uploads\/2024\/03\/image-20-300x223.png 300w, https:\/\/blog.hnk90.com\/wp-content\/uploads\/2024\/03\/image-20-768x571.png 768w, https:\/\/blog.hnk90.com\/wp-content\/uploads\/2024\/03\/image-20.png 1192w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>C\u00e1c b\u1ea1n c\u00f3 th\u1ec3 th\u1ea5y t\u00ean c\u00e1c classes \u0111\u01b0\u1ee3c truy\u1ec1n v\u00e0o m\u1ea3ng, h\u1ec7 th\u1ed1ng s\u1ebd t\u1ef1 hi\u1ec3u c\u1ea7n ph\u1ea3i bind ch\u00fang v\u00e0o Container (thay v\u00ec ph\u1ea3i s\u1eed dung c\u00e1c function nh\u01b0 bind, singleton, instance,&#8230; N\u1ebfu ch\u01b0a r\u00f5 ph\u1ea7n n\u00e0y th\u00ec xem l\u1ea1i b\u00e0i 5 nh\u00e9).<\/p>\n\n\n\n<p><strong>1. C\u00e1ch vi\u1ebft m\u1ed9t provider<\/strong><\/p>\n\n\n\n<p>T\u1ea5t c\u1ea3 c\u00e1c provider ph\u1ea3i extend t\u1eeb class \\Illuminate\\Support\\ServiceProvider. \u0110\u1ec3 cho ti\u1ec7n th\u00ec c\u00e1c b\u1ea1n c\u00f3 th\u1ec3 ch\u1ea1y l\u1ec7nh sau \u0111\u1ec3 t\u1ea1o m\u1ed9t provider<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"php artisan make:provider RiakServiceProvider\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9\">php<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">artisan<\/span><span style=\"color: #D8DEE9FF\"> make<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9\">provider<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">RiakServiceProvider<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p><\/p>\n\n\n\n<p>H\u1ea7u h\u1ebft th\u00ec b\u00ean trong m\u1ed9t provider s\u1ebd c\u00f3 2 methods l\u00e0: register v\u00e0 boot.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"&lt;?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Support\\ServiceProvider;\n\nclass AppServiceProvider extends ServiceProvider\n{\n    \/**\n     * Register any application services.\n     *\/\n    public function register(): void\n    {\n        \/\/\n    }\n\n    \/**\n     * Bootstrap any application services.\n     *\/\n    public function boot(): void\n    {\n        \/\/\n    }\n}\n\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #81A1C1\">&lt;?<\/span><span style=\"color: #D8DEE9\">php<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">namespace<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">App<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">Providers<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">use<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">Illuminate<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">Support<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">ServiceProvider<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">class<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">AppServiceProvider<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">extends<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB; font-weight: bold\">ServiceProvider<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #616E88\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">     * Register any application services.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">     *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">public<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">function<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">register<\/span><span style=\"color: #ECEFF4\">()<\/span><span style=\"color: #81A1C1\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">void<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">        <\/span><span style=\"color: #616E88\">\/\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #616E88\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">     * Bootstrap any application services.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">     *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">public<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">function<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">boot<\/span><span style=\"color: #ECEFF4\">()<\/span><span style=\"color: #81A1C1\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">void<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">        <\/span><span style=\"color: #616E88\">\/\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p>B\u00ean trong method register, c\u00e1c b\u1ea1n ch\u1ec9 n\u00ean th\u1ef1c hi\u1ec7n nhi\u1ec7m v\u1ee5 bind v\u00e0o Serivce Container (Ngo\u00e0i ra th\u00ec \u0111\u1eebng th\u1ef1c hi\u1ec7n vi\u1ec7c g\u00ec kh\u00e1c trong n\u00e0y). <\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"&lt;?php\n \nnamespace App\\Providers;\n \nuse App\\Services\\Riak\\Connection;\nuse Illuminate\\Contracts\\Foundation\\Application;\nuse Illuminate\\Support\\ServiceProvider;\n \nclass RiakServiceProvider extends ServiceProvider\n{\n    \/**\n     * Register any application services.\n     *\/\n    public function register(): void\n    {\n        $this-&gt;app-&gt;singleton(Connection::class, function (Application $app) {\n            return new Connection(config('riak'));\n        });\n    }\n}\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #81A1C1\">&lt;?<\/span><span style=\"color: #D8DEE9\">php<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">namespace<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">App<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">Providers<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">use<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">App<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">Services<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">Riak<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">Connection<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">use<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">Illuminate<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">Contracts<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">Foundation<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">Application<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">use<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">Illuminate<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">Support<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">ServiceProvider<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">class<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">RiakServiceProvider<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">extends<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB; font-weight: bold\">ServiceProvider<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #616E88\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">     * Register any application services.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">     *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">public<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">function<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">register<\/span><span style=\"color: #ECEFF4\">()<\/span><span style=\"color: #81A1C1\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">void<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">$this<\/span><span style=\"color: #81A1C1\">-&gt;<\/span><span style=\"color: #D8DEE9\">app<\/span><span style=\"color: #81A1C1\">-&gt;<\/span><span style=\"color: #88C0D0\">singleton<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #D8DEE9\">Connection<\/span><span style=\"color: #D8DEE9FF\">::<\/span><span style=\"color: #D8DEE9\">class<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">function<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">Application<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">$app<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #81A1C1\">return<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">new<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">Connection<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #88C0D0\">config<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">riak<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\">))<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #ECEFF4\">}<\/span><span style=\"color: #D8DEE9FF\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p><\/p>\n\n\n\n<p>\u0110\u1ec3 cho \u0111\u01a1n gi\u1ea3n h\u01a1n, khi mu\u1ed1n simple bind ho\u1eb7c singleton th\u00ec c\u00e1c b\u1ea1n ch\u1ec9 c\u1ea7n kh\u1ea3i b\u00e1o v\u00e0o 2 bi\u1ebfn: $bindings, $singletons<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"&lt;?php\n \nnamespace App\\Providers;\n \nuse App\\Contracts\\DowntimeNotifier;\nuse App\\Contracts\\ServerProvider;\nuse App\\Services\\DigitalOceanServerProvider;\nuse App\\Services\\PingdomDowntimeNotifier;\nuse App\\Services\\ServerToolsProvider;\nuse Illuminate\\Support\\ServiceProvider;\n \nclass AppServiceProvider extends ServiceProvider\n{\n    \/**\n     * All of the container bindings that should be registered.\n     *\n     * @var array\n     *\/\n    public $bindings = [\n        ServerProvider::class =&gt; DigitalOceanServerProvider::class,\n    ];\n \n    \/**\n     * All of the container singletons that should be registered.\n     *\n     * @var array\n     *\/\n    public $singletons = [\n        DowntimeNotifier::class =&gt; PingdomDowntimeNotifier::class,\n        ServerProvider::class =&gt; ServerToolsProvider::class,\n    ];\n}\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #81A1C1\">&lt;?<\/span><span style=\"color: #D8DEE9\">php<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">namespace<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">App<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">Providers<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">use<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">App<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">Contracts<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">DowntimeNotifier<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">use<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">App<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">Contracts<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">ServerProvider<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">use<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">App<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">Services<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">DigitalOceanServerProvider<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">use<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">App<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">Services<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">PingdomDowntimeNotifier<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">use<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">App<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">Services<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">ServerToolsProvider<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">use<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">Illuminate<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">Support<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">ServiceProvider<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">class<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">AppServiceProvider<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">extends<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB; font-weight: bold\">ServiceProvider<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #616E88\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">     * All of the container bindings that should be registered.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">     *<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">     * <\/span><span style=\"color: #ECEFF4\">@<\/span><span style=\"color: #8FBCBB\">var<\/span><span style=\"color: #616E88\"> <\/span><span style=\"color: #D8DEE9\">array<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">     *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">public<\/span><span style=\"color: #D8DEE9FF\"> $bindings <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> [<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">ServerProvider<\/span><span style=\"color: #D8DEE9FF\">::<\/span><span style=\"color: #81A1C1\">class<\/span><span style=\"color: #D8DEE9FF\"> =&gt; <\/span><span style=\"color: #8FBCBB\">DigitalOceanServerProvider<\/span><span style=\"color: #D8DEE9FF\">::<\/span><span style=\"color: #8FBCBB\">class<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    ];<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #616E88\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">     * All of the container singletons that should be registered.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">     *<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">     * <\/span><span style=\"color: #ECEFF4\">@<\/span><span style=\"color: #8FBCBB\">var<\/span><span style=\"color: #616E88\"> <\/span><span style=\"color: #D8DEE9\">array<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">     *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #8FBCBB\">public<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">$singletons<\/span><span style=\"color: #D8DEE9FF\"> = [<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #8FBCBB\">DowntimeNotifier<\/span><span style=\"color: #D8DEE9FF\">::<\/span><span style=\"color: #8FBCBB\">class<\/span><span style=\"color: #D8DEE9FF\"> =&gt; <\/span><span style=\"color: #8FBCBB\">PingdomDowntimeNotifier<\/span><span style=\"color: #D8DEE9FF\">::<\/span><span style=\"color: #8FBCBB\">class<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #8FBCBB\">ServerProvider<\/span><span style=\"color: #D8DEE9FF\">::<\/span><span style=\"color: #8FBCBB\">class<\/span><span style=\"color: #D8DEE9FF\"> =&gt; <\/span><span style=\"color: #8FBCBB\">ServerToolsProvider<\/span><span style=\"color: #D8DEE9FF\">::<\/span><span style=\"color: #8FBCBB\">class<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    ];<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p><\/p>\n\n\n\n<p>V\u1ec1 method boot. C\u01a1 b\u1ea3n th\u00ec method n\u00e0y \u0111\u01b0\u1ee3c g\u1ecdi sau khi to\u00e0n b\u1ed9 providers \u0111\u01b0\u1ee3c registered (\u0111i\u1ec1u n\u00e0y c\u00f3 ngh\u0129a l\u00e0 b\u1ea1n c\u00f3 th\u1ec3 truy xu\u1ea5t t\u1edbi to\u00e0n b\u1ed9 c\u00e1c service providers kh\u00e1c b\u00ean trong boot method). B\u00ean trong method n\u00e0y, c\u00e1c b\u1ea1n c\u00f3 th\u1ec3 register m\u1ed9t &#8220;view composer&#8221; (gi\u1edd hi\u1ec3u t\u1ea1m th\u1eddi th\u1ebf \u0111\u00e3, sau n\u00e0y ch\u00fang ta s\u1ebd t\u00ecm hi\u1ec3u view composer c\u1ee5 th\u1ec3 l\u00e0 g\u00ec)<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"&lt;?php\n \nnamespace App\\Providers;\n \nuse Illuminate\\Support\\Facades\\View;\nuse Illuminate\\Support\\ServiceProvider;\n \nclass ComposerServiceProvider extends ServiceProvider\n{\n    \/**\n     * Bootstrap any application services.\n     *\/\n    public function boot(): void\n    {\n        View::composer('view', function () {\n            \/\/ ...\n        });\n    }\n}\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #81A1C1\">&lt;?<\/span><span style=\"color: #D8DEE9\">php<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">namespace<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">App<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">Providers<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">use<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">Illuminate<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">Support<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">Facades<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">View<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">use<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">Illuminate<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">Support<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">ServiceProvider<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">class<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">ComposerServiceProvider<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">extends<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB; font-weight: bold\">ServiceProvider<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #616E88\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">     * Bootstrap any application services.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">     *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">public<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">function<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">boot<\/span><span style=\"color: #ECEFF4\">()<\/span><span style=\"color: #81A1C1\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">void<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        View<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\">:<\/span><span style=\"color: #88C0D0\">composer<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">view<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">function<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">()<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">            <\/span><span style=\"color: #616E88\">\/\/ ...<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #ECEFF4\">}<\/span><span style=\"color: #D8DEE9FF\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>2. \u0110\u0103ng k\u00fd m\u1ed9t provider (Register provider)<\/strong><\/p>\n\n\n\n<p>\u0110\u1ed1i v\u1edbi version 10.x th\u00ec c\u00e1c b\u1ea1n th\u00eam v\u00e0o m\u1ea3ng $providers trong file config\/app.php<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"'providers' =&gt; ServiceProvider::defaultProviders()-&gt;merge([\n    \/\/ Other Service Providers\n \n    App\\Providers\\ComposerServiceProvider::class,\n])-&gt;toArray(),\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">providers<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=&gt;<\/span><span style=\"color: #D8DEE9FF\"> ServiceProvider<\/span><span style=\"color: #ECEFF4\">:<\/span><span style=\"color: #D8DEE9FF\">:<\/span><span style=\"color: #88C0D0\">defaultProviders<\/span><span style=\"color: #D8DEE9FF\">()<\/span><span style=\"color: #81A1C1\">-&gt;<\/span><span style=\"color: #88C0D0\">merge<\/span><span style=\"color: #D8DEE9FF\">([<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">    <\/span><span style=\"color: #616E88\">\/\/ Other Service Providers<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #D8DEE9\">App<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">Providers<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">ComposerServiceProvider<\/span><span style=\"color: #D8DEE9FF\">::<\/span><span style=\"color: #D8DEE9\">class<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">])<\/span><span style=\"color: #81A1C1\">-&gt;<\/span><span style=\"color: #88C0D0\">toArray<\/span><span style=\"color: #D8DEE9FF\">()<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p><\/p>\n\n\n\n<p>\u0110\u1ed1i v\u1edbi b\u1ea3n 11.x, khi c\u00e1c b\u1ea1n ch\u1ea1y l\u1ec7nh &#8220;make:provider&#8221; th\u00ec h\u1ec7 th\u1ed1ng s\u1ebd t\u1ef1 \u0111\u1ed9ng register cho c\u00e1c b\u1ea1n b\u1eb1ng c\u00e1ch th\u00eam code v\u00e0o file bootstrap\/providers.php<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"&lt;?php\n \n\/\/ This file is automatically generated by Laravel...\n \nreturn [\n    App\\Providers\\AppServiceProvider::class,\n    App\\Providers\\ComposerServiceProvider::class, \n];\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #81A1C1\">&lt;?<\/span><span style=\"color: #D8DEE9\">php<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">\/\/ This file is automatically generated by Laravel...<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">return<\/span><span style=\"color: #D8DEE9FF\"> [<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #D8DEE9\">App<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">Providers<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">AppServiceProvider<\/span><span style=\"color: #D8DEE9FF\">::<\/span><span style=\"color: #D8DEE9\">class<\/span><span style=\"color: #ECEFF4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #D8DEE9\">App<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">Providers<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">ComposerServiceProvider<\/span><span style=\"color: #D8DEE9FF\">::<\/span><span style=\"color: #D8DEE9\">class<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">];<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>3. Deferred Providers<\/strong><\/p>\n\n\n\n<p>N\u1ebfu nh\u01b0 provider c\u1ee7a c\u00e1c b\u1ea1n \u0111\u01a1n thu\u1ea7n ch\u1ec9 l\u00e0 register binding v\u00e0o trong Container, \u0111\u1ec3 tr\u00e1nh vi\u1ec7c vi\u1ec7c &#8220;\u0111\u0103ng k\u00fd&#8221; (registration) n\u00e0y \u0111\u01b0\u1ee3c th\u1ef1c hi\u1ec7n khi &#8220;ch\u01b0a c\u1ea7n thi\u1ebft&#8221;, c\u00e1c b\u1ea1n c\u00f3 th\u1ec3 &#8220;ho\u00e3n l\u1ea1i&#8221; vi\u1ec7c registration n\u00e0y cho t\u1edbi khi c\u1ea7n thi\u1ebft. \u0110i\u1ec1u n\u00e0y s\u1ebd l\u00e0m t\u0103ng hi\u1ec7u su\u1ea5t c\u1ee7a h\u1ec7 th\u00f4ng<\/p>\n\n\n\n<p>\u0110\u1ec3 l\u00e0m \u0111i\u1ec1u n\u00e0y th\u00ec \u0111\u01a1n gi\u1ea3n l\u00e0 implement class \\Illuminate\\Contracts\\Support\\DeferrableProvider, khi b\u00e1o method provides. Method n\u00e0y l\u00e0m nhi\u1ec7m v\u1ee5 return v\u1ec1 Service Container \u0111\u01b0\u1ee3c registered b\u1edfi provider<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"&lt;?php\n \nnamespace App\\Providers;\n \nuse App\\Services\\Riak\\Connection;\nuse Illuminate\\Contracts\\Foundation\\Application;\nuse Illuminate\\Contracts\\Support\\DeferrableProvider;\nuse Illuminate\\Support\\ServiceProvider;\n \nclass RiakServiceProvider extends ServiceProvider implements DeferrableProvider\n{\n    \/**\n     * Register any application services.\n     *\/\n    public function register(): void\n    {\n        $this-&gt;app-&gt;singleton(Connection::class, function (Application $app) {\n            return new Connection($app['config']['riak']);\n        });\n    }\n \n    \/**\n     * Get the services provided by the provider.\n     *\n     * @return array&lt;int, string&gt;\n     *\/\n    public function provides(): array\n    {\n        return [Connection::class];\n    }\n}\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #81A1C1\">&lt;?<\/span><span style=\"color: #D8DEE9\">php<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">namespace<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">App<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">Providers<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">use<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">App<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">Services<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">Riak<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">Connection<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">use<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">Illuminate<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">Contracts<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">Foundation<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">Application<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">use<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">Illuminate<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">Contracts<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">Support<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">DeferrableProvider<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">use<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">Illuminate<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">Support<\/span><span style=\"color: #D8DEE9FF\">\\<\/span><span style=\"color: #D8DEE9\">ServiceProvider<\/span><span style=\"color: #D8DEE9FF\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">class<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB\">RiakServiceProvider<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">extends<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB; font-weight: bold\">ServiceProvider<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">implements<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #8FBCBB; font-weight: bold\">DeferrableProvider<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #616E88\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">     * Register any application services.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">     *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">public<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">function<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">register<\/span><span style=\"color: #ECEFF4\">()<\/span><span style=\"color: #81A1C1\">:<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">void<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">$this<\/span><span style=\"color: #81A1C1\">-&gt;<\/span><span style=\"color: #D8DEE9\">app<\/span><span style=\"color: #81A1C1\">-&gt;<\/span><span style=\"color: #88C0D0\">singleton<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #D8DEE9\">Connection<\/span><span style=\"color: #D8DEE9FF\">::<\/span><span style=\"color: #D8DEE9\">class<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">function<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9\">Application<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">$app<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            <\/span><span style=\"color: #81A1C1\">return<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">new<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">Connection<\/span><span style=\"color: #D8DEE9FF\">(<\/span><span style=\"color: #D8DEE9\">$app<\/span><span style=\"color: #D8DEE9FF\">[<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">config<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\">][<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">riak<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\">])<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #ECEFF4\">}<\/span><span style=\"color: #D8DEE9FF\">)<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #616E88\">\/**<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">     * Get the services provided by the provider.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">     *<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">     * <\/span><span style=\"color: #ECEFF4\">@<\/span><span style=\"color: #8FBCBB\">return<\/span><span style=\"color: #616E88\"> array&lt;int, string&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">     *\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">public<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">function<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">provides<\/span><span style=\"color: #ECEFF4\">()<\/span><span style=\"color: #81A1C1\">:<\/span><span style=\"color: #D8DEE9FF\"> array<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">return<\/span><span style=\"color: #D8DEE9FF\"> [<\/span><span style=\"color: #D8DEE9\">Connection<\/span><span style=\"color: #D8DEE9FF\">::<\/span><span style=\"color: #D8DEE9\">class<\/span><span style=\"color: #D8DEE9FF\">]<\/span><span style=\"color: #81A1C1\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p><\/p>\n\n\n\n<p>Oke, T\u1ea1m th\u1eddi nh\u01b0 v\u1eady. V\u1ec1 l\u00fd thuy\u1ebft th\u00ec \u0111\u1ec3 binding th\u00ec ch\u00fang ta s\u1ebd c\u1ea7n th\u00f4ng qua Providers. M\u1eb7c \u0111\u1ecbnh c\u00e1c Providers s\u1ebd \u0111\u01b0\u1ee3c Laravel load khi kh\u1edfi ch\u1ea1y h\u1ec7 th\u1ed1ng, tuy nhi\u00ean ch\u00fang ta s\u1ebd c\u00f3 th\u1ec3 defer (n\u1ebfu mu\u1ed1n) cho t\u1edbi khi th\u1ef1c s\u1ef1 c\u1ea7n load provider n\u00e0o \u0111\u00f3. <br>C\u00f3 th\u1ec3 ki\u1ebfn th\u1ee9c n\u00e0y h\u01a1i l\u1eb1ng nh\u1eb1ng l\u00fac n\u00e0y, nh\u01b0ng sau n\u00e0y khi ch\u00fang ta \u0111i v\u00e0o m\u1ed9t v\u00ed d\u1ee5 c\u1ee5 th\u1ec3, c\u00e1c b\u1ea1n s\u1ebd r\u00f5 h\u01a1n v\u1ec1 nh\u1eefng l\u00fd thuy\u1ebft n\u00e0y. <\/p>\n\n\n\n<p>Ch\u00fac c\u00e1c b\u1ea1n ch\u00e2n c\u1ee9ng \u0111\u00e1 m\u1ec1m trong qu\u00e1 tr\u00ecnh h\u1ecdc t\u1eadp \ud83d\ude42<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Service providers l\u00e0 m\u1ed9t th\u00e0nh ph\u1ea7n c\u1ed1t l\u00f5i, trung t\u00e2m c\u1ee7a vi\u1ec7c kh\u1edfi t\u1ea1o m\u1ecdi \u1ee9ng d\u1ee5ng trong Laravel. C\u00e1c b\u1ea1n c\u00f3 th\u1ec3 t\u00ecm th\u1ea5y m\u1ed9t s\u1ed1 default providers trong config\/app.php v\u00e0 trong vendor\/laravel\/framework\/src\/Illuminate\/Support\/DefaultProviders.php C\u00e1c b\u1ea1n c\u00f3 th\u1ec3 th\u1ea5y t\u00ean c\u00e1c classes \u0111\u01b0\u1ee3c truy\u1ec1n v\u00e0o m\u1ea3ng, h\u1ec7 th\u1ed1ng s\u1ebd t\u1ef1 hi\u1ec3u c\u1ea7n ph\u1ea3i bind ch\u00fang [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-137","post","type-post","status-publish","format-standard","hentry","category-laravel"],"_links":{"self":[{"href":"https:\/\/blog.hnk90.com\/index.php?rest_route=\/wp\/v2\/posts\/137","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.hnk90.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.hnk90.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.hnk90.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.hnk90.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=137"}],"version-history":[{"count":12,"href":"https:\/\/blog.hnk90.com\/index.php?rest_route=\/wp\/v2\/posts\/137\/revisions"}],"predecessor-version":[{"id":154,"href":"https:\/\/blog.hnk90.com\/index.php?rest_route=\/wp\/v2\/posts\/137\/revisions\/154"}],"wp:attachment":[{"href":"https:\/\/blog.hnk90.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=137"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.hnk90.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=137"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.hnk90.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=137"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}