<?xml version="1.0" encoding="UTF-8" ?>
<rss
    version="2.0"
    xmlns:atom="http://www.w3.org/2005/Atom"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:webfeeds="http://webfeeds.org/rss/1.0"
    xmlns:media="http://search.yahoo.com/mrss/"
    >
    <channel>
        <title>Doc-file-trong-php Tag - Viblo</title>
        <link>https://viblo.asia/rss</link>
        <description><![CDATA[Free service for technical knowledge sharing]]></description>
        <atom:link href="https://viblo.asia/rss/tags/doc-file-trong-php.rss" rel="self"></atom:link>
                <copyright>Sun* Inc.</copyright>
                                                <webfeeds:logo>https://viblo.asia/logo_full.svg</webfeeds:logo>
        <image>
            <url>https://viblo.asia/logo_full.svg</url>
            <title>Doc-file-trong-php Tag - Viblo</title>
            <link>https://viblo.asia/rss</link>
        </image>
                                <language>vi-vn</language>
        <lastBuildDate>2026-05-12T13:03:17+07:00</lastBuildDate>
                <item>
            <title><![CDATA[Đừng để code ngập ngụa trong IF-ELSE: Giải cứu Backend với Strategy Pattern]]></title>
                        <link>https://viblo.asia/p/dung-de-code-ngap-ngua-trong-if-else-giai-cuu-backend-voi-strategy-pattern-18J2ej2q4YK</link>
            <guid isPermaLink="true">https://viblo.asia/p/dung-de-code-ngap-ngua-trong-if-else-giai-cuu-backend-voi-strategy-pattern-18J2ej2q4YK</guid>
            <description><![CDATA[Chào anh em đồng âm Viblo!

Hôm nay chúng ta sẽ bàn về một chủ đề muôn thuở trong thiết kế phần mềm. Bạn đã bao giờ nhìn vào một function dài 500 dòng...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-05-10 08:50:52</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[Nghiệp vụ Checkout COD: Không chỉ là một nút bấm - Tư duy xử lý &quot;vạn đơn&quot; cho Backend]]></title>
                        <link>https://viblo.asia/p/nghiep-vu-checkout-cod-khong-chi-la-mot-nut-bam-tu-duy-xu-ly-van-don-cho-backend-pPLkN3WDJRZ</link>
            <guid isPermaLink="true">https://viblo.asia/p/nghiep-vu-checkout-cod-khong-chi-la-mot-nut-bam-tu-duy-xu-ly-van-don-cho-backend-pPLkN3WDJRZ</guid>
            <description><![CDATA[1. Mở đầu: "Cạm bẫy" của sự đơn giản

Trong thanh toán online, chúng ta dựa vào kết quả trả về từ Gateway (Paypal, VNPay...). Với COD, "hợp đồng" than...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-05-09 09:34:54</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[PHP Return Type Declaration: Bản hợp đồng cam kết cho dữ liệu đầu ra]]></title>
                        <link>https://viblo.asia/p/php-return-type-declaration-ban-hop-dong-cam-ket-cho-du-lieu-dau-ra-gjLN0MrA432</link>
            <guid isPermaLink="true">https://viblo.asia/p/php-return-type-declaration-ban-hop-dong-cam-ket-cho-du-lieu-dau-ra-gjLN0MrA432</guid>
            <description><![CDATA[Nếu Type Hinting là "cửa vào" thì Return Type chính là "cửa ra". Việc kiểm soát chặt chẽ đầu ra sẽ giúp code của bạn trở nên cực kỳ tiên đoán được (pr...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-05-08 10:04:05</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[PHP Class Type Hinting: Đừng để Code của bạn chạy bằng &quot;Hệ tâm linh&quot;]]></title>
                        <link>https://viblo.asia/p/php-class-type-hinting-dung-de-code-cua-ban-chay-bang-he-tam-linh-kY4gDY3eJAe</link>
            <guid isPermaLink="true">https://viblo.asia/p/php-class-type-hinting-dung-de-code-cua-ban-chay-bang-he-tam-linh-kY4gDY3eJAe</guid>
            <description><![CDATA[1. Mở đầu: Câu chuyện về những bug "trên trời rơi xuống"

Hẳn là ai trong chúng ta cũng từng trải qua cảm giác này: Nhận một dự án cũ (legacy code), m...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-05-07 10:46:20</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[[Laravel Masterclass] Làm chủ QR Code: Nghệ thuật &quot;Đúc&quot; mã vạch và Thảm họa I/O ổ cứng]]></title>
                        <link>https://viblo.asia/p/laravel-masterclass-lam-chu-qr-code-nghe-thuat-duc-ma-vach-va-tham-hoa-io-o-cung-oKLnqeOQJQO</link>
            <guid isPermaLink="true">https://viblo.asia/p/laravel-masterclass-lam-chu-qr-code-nghe-thuat-duc-ma-vach-va-tham-hoa-io-o-cung-oKLnqeOQJQO</guid>
            <description><![CDATA[Chào anh em! Sau chuỗi bài băm nát hệ thống từ Database, RAM cho đến Mật mã học, hôm nay chúng ta sẽ ngoi lên tầng Application một chút để giải quyết ...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-04-24 17:37:30</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[Output Buffering: Tuyệt kỹ trị tận gốc lỗi &quot;Headers already sent&quot; và nghệ thuật Render View]]></title>
                        <link>https://viblo.asia/p/output-buffering-tuyet-ky-tri-tan-goc-loi-headers-already-sent-va-nghe-thuat-render-view-oKLnqepaJQO</link>
            <guid isPermaLink="true">https://viblo.asia/p/output-buffering-tuyet-ky-tri-tan-goc-loi-headers-already-sent-va-nghe-thuat-render-view-oKLnqepaJQO</guid>
            <description><![CDATA[Chào anh em, nếu anh em đang dùng Laravel hay Symfony, anh em hiếm khi gặp lỗi Headers already sent vì Framework nó lo hết rồi. Nhưng nếu anh em code ...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-04-21 16:43:58</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[Xây Dựng Streaming API Bằng Laravel: Phá Vỡ Bộ Đệm PHP]]></title>
                        <link>https://viblo.asia/p/xay-dung-streaming-api-bang-laravel-pha-vo-bo-dem-php-XRJ8R0RZVGq</link>
            <guid isPermaLink="true">https://viblo.asia/p/xay-dung-streaming-api-bang-laravel-pha-vo-bo-dem-php-XRJ8R0RZVGq</guid>
            <description><![CDATA[Ở bài trước chúng ta đã hiểu lý thuyết về Streaming. Nhưng khi mang lý thuyết đó vào thế giới của PHP và Laravel, bạn sẽ đụng phải một "bức tường thàn...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-04-18 08:23:50</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[Khai Mở Sức Mạnh __construct Trong Laravel: Ma Thuật &quot;Tiêm Phụ Thuộc&quot; &amp; Những Cú Lừa]]></title>
                        <link>https://viblo.asia/p/khai-mo-suc-manh-construct-trong-laravel-ma-thuat-tiem-phu-thuoc-nhung-cu-lua-13VM9qrdVY7</link>
            <guid isPermaLink="true">https://viblo.asia/p/khai-mo-suc-manh-construct-trong-laravel-ma-thuat-tiem-phu-thuoc-nhung-cu-lua-13VM9qrdVY7</guid>
            <description><![CDATA[Chuyện kể rằng, có một bạn Junior dev được giao viết tính năng Đăng ký tài khoản. Bạn ấy viết một cái UserController, bên trong cần dùng UserService đ...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-04-15 18:01:31</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[json_decode Trong PHP: Vượt Qua &quot;Cú Lừa&quot; stdClass &amp; Bẫy Mất Dữ Liệu]]></title>
                        <link>https://viblo.asia/p/json-decode-trong-php-vuot-qua-cu-lua-stdclass-bay-mat-du-lieu-AWVpX1qXV05</link>
            <guid isPermaLink="true">https://viblo.asia/p/json-decode-trong-php-vuot-qua-cu-lua-stdclass-bay-mat-du-lieu-AWVpX1qXV05</guid>
            <description><![CDATA[Câu chuyện xảy ra khi bạn gọi API của Facebook để lấy thông tin User. API trả về một chuỗi JSON rất đẹp:

{"id": 1001, "name": "Hiếu", "role": "admin"...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-04-15 16:23:52</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[Mê Cung config/auth.php: Tại Sao Auth::user() Luôn Trả Về Null?]]></title>
                        <link>https://viblo.asia/p/me-cung-configauthphp-tai-sao-authuser-luon-tra-ve-null-1QLxnYAg4Aw</link>
            <guid isPermaLink="true">https://viblo.asia/p/me-cung-configauthphp-tai-sao-authuser-luon-tra-ve-null-1QLxnYAg4Aw</guid>
            <description><![CDATA[Nếu bạn mở file config/auth.php của Laravel ra, bạn sẽ thấy nó không chỉ có một biến duy nhất. Laravel thiết kế hệ thống Auth giống như một tòa nhà an...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-04-15 15:31:04</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[Khởi Tạo Kết Nối Database Chuẩn với PDO]]></title>
                        <link>https://viblo.asia/p/khoi-tao-ket-noi-database-chuan-voi-pdo-Nj4vg6vxJ6r</link>
            <guid isPermaLink="true">https://viblo.asia/p/khoi-tao-ket-noi-database-chuan-voi-pdo-Nj4vg6vxJ6r</guid>
            <description><![CDATA[Nếu bạn hỏi 10 lập trình viên PHP Senior rằng họ dùng gì để kết nối Database (khi không dùng Framework như Laravel), 9 người sẽ trả lời là PDO. Người ...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-04-14 17:58:14</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[array_slice Trong PHP: Nghệ Thuật &quot;Cắt Bánh&quot; Không Làm Vỡ Form]]></title>
                        <link>https://viblo.asia/p/array-slice-trong-php-nghe-thuat-cat-banh-khong-lam-vo-form-ymJXDEGxJkq</link>
            <guid isPermaLink="true">https://viblo.asia/p/array-slice-trong-php-nghe-thuat-cat-banh-khong-lam-vo-form-ymJXDEGxJkq</guid>
            <description><![CDATA[Câu chuyện thực tế: Bạn gọi API sang hệ thống của đối tác để lấy danh sách 100 bài báo mới nhất. Ngặt nỗi, API của họ "đời tống", không hề hỗ trợ phân...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-04-14 17:48:14</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[Composer hoạt động như thế nào? Đừng chỉ gõ lệnh mà không hiểu &quot;phép thuật&quot; đằng sau!]]></title>
                        <link>https://viblo.asia/p/composer-hoat-dong-nhu-the-nao-dung-chi-go-lenh-ma-khong-hieu-phep-thuat-dang-sau-RlL5e8AzLbB</link>
            <guid isPermaLink="true">https://viblo.asia/p/composer-hoat-dong-nhu-the-nao-dung-chi-go-lenh-ma-khong-hieu-phep-thuat-dang-sau-RlL5e8AzLbB</guid>
            <description><![CDATA[Chào các bạn,

Nếu bạn làm việc với PHP (đặc biệt là Laravel), composer install hay composer require chắc chắn là những câu lệnh "cửa miệng". Nhưng đã...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-04-11 06:39:57</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[[Programming 101] Return Void là gì? Khi &quot;không trả về gì&quot; lại mang lại giá trị lớn nhất]]></title>
                        <link>https://viblo.asia/p/programming-101-return-void-la-gi-khi-khong-tra-ve-gi-lai-mang-lai-gia-tri-lon-nhat-PoL7edzm4vk</link>
            <guid isPermaLink="true">https://viblo.asia/p/programming-101-return-void-la-gi-khi-khong-tra-ve-gi-lai-mang-lai-gia-tri-lon-nhat-PoL7edzm4vk</guid>
            <description><![CDATA[1. Bản chất của "Void"

Trong lập trình, void là một kiểu dữ liệu đặc biệt (hoặc một từ khóa) dùng để thông báo cho trình biên dịch hoặc người đọc cod...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-04-10 18:15:33</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[Làm chủ HTTP Client: Quy tắc &quot;Vàng&quot; khi kế thừa BasePendingRequest để xây dựng API Wrapper chuyên nghiệp]]></title>
                        <link>https://viblo.asia/p/lam-chu-http-client-quy-tac-vang-khi-ke-thua-basependingrequest-de-xay-dung-api-wrapper-chuyen-nghiep-gjLN0Nb1432</link>
            <guid isPermaLink="true">https://viblo.asia/p/lam-chu-http-client-quy-tac-vang-khi-ke-thua-basependingrequest-de-xay-dung-api-wrapper-chuyen-nghiep-gjLN0Nb1432</guid>
            <description><![CDATA[Trong quá trình phát triển các hệ thống microservices hoặc tích hợp dịch vụ thứ ba (như Telegram, Stripe, hay nội bộ Hasaki), chúng ta thường sử dụng ...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-04-10 07:08:17</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[[PHP Thực Chiến] Dẹp bỏ trò &quot;cộng chuỗi&quot; URL phèn với http_build_query]]></title>
                        <link>https://viblo.asia/p/php-thuc-chien-dep-bo-tro-cong-chuoi-url-phen-voi-http-build-query-QyJKzDYW4Me</link>
            <guid isPermaLink="true">https://viblo.asia/p/php-thuc-chien-dep-bo-tro-cong-chuoi-url-phen-voi-http-build-query-QyJKzDYW4Me</guid>
            <description><![CDATA[Chào anh em, lại là mình đây.

Làm Backend, chắc chắn anh em không thể né được cái cảnh phải gọi API sang một hệ thống khác (như tích hợp cổng thanh t...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-04-07 13:15:11</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[[PHP] Giải ngố PHP_INT_MAX: Khi những con số khổng lồ &quot;phản bội&quot; bạn]]></title>
                        <link>https://viblo.asia/p/php-giai-ngo-php-int-max-khi-nhung-con-so-khong-lo-phan-boi-ban-gdJzvmqEJz5</link>
            <guid isPermaLink="true">https://viblo.asia/p/php-giai-ngo-php-int-max-khi-nhung-con-so-khong-lo-phan-boi-ban-gdJzvmqEJz5</guid>
            <description><![CDATA[Chào các anh em dev hệ PHP,

Chắc hẳn lúc ngồi lướt doc hoặc tọc vạch mấy file config, anh em thỉnh thoảng sẽ thấy cái hằng số PHPINTMAX to đùng ngã n...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-04-05 23:09:07</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[[Laravel] Giải ngố Modular: Bí mật đằng sau việc Laravel &quot;đọc&quot; được Route trong các Modules tự chế]]></title>
                        <link>https://viblo.asia/p/laravel-giai-ngo-modular-bi-mat-dang-sau-viec-laravel-doc-duoc-route-trong-cac-modules-tu-che-1QLxnYqK4Aw</link>
            <guid isPermaLink="true">https://viblo.asia/p/laravel-giai-ngo-modular-bi-mat-dang-sau-viec-laravel-doc-duoc-route-trong-cac-modules-tu-che-1QLxnYqK4Aw</guid>
            <description><![CDATA[Chào anh em, lại là mình đây.

Nếu anh em đang làm một dự án Laravel quy mô vừa và lớn (như một hệ thống e-commerce chẳng hạn), chắc chắn kiến trúc Mo...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-04-05 22:48:35</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[[Clean Code] Docblock: Đừng chỉ viết Code, hãy viết &quot;Hướng dẫn sử dụng&quot; ngay trong Source Code]]></title>
                        <link>https://viblo.asia/p/clean-code-docblock-dung-chi-viet-code-hay-viet-huong-dan-su-dung-ngay-trong-source-code-ZjJYWoBgVOE</link>
            <guid isPermaLink="true">https://viblo.asia/p/clean-code-docblock-dung-chi-viet-code-hay-viet-huong-dan-su-dung-ngay-trong-source-code-ZjJYWoBgVOE</guid>
            <description><![CDATA[Bạn đã bao giờ mở một file code cũ của chính mình từ 6 tháng trước và tự hỏi: "Hàm này nhận vào cái gì và trả về cái gì ấy nhỉ?" chưa?

Nếu câu trả lờ...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-03-27 11:40:01</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[[OOP Tips] Từ khóa $this là gì? Hiểu rõ &quot;Cái tôi&quot; của Object trong lập trình]]></title>
                        <link>https://viblo.asia/p/oop-tips-tu-khoa-this-la-gi-hieu-ro-cai-toi-cua-object-trong-lap-trinh-G24B89ZBLz3</link>
            <guid isPermaLink="true">https://viblo.asia/p/oop-tips-tu-khoa-this-la-gi-hieu-ro-cai-toi-cua-object-trong-lap-trinh-G24B89ZBLz3</guid>
            <description><![CDATA[Trong thế giới thực, khi bạn nói "Tên của tôi là A", từ "tôi" đại diện cho chính bản thân bạn. Trong lập trình cũng vậy, khi một phương thức (method) ...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-03-27 11:21:20</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[[Series] Xây dựng RESTful API từ con số 0 với PHP Thuần &amp; MVC - Phần 25: API Theo dõi hành trình đơn hàng (Order Tracking Timeline)]]></title>
                        <link>https://viblo.asia/p/series-xay-dung-restful-api-tu-con-so-0-voi-php-thuan-mvc-phan-25-api-theo-doi-hanh-trinh-don-hang-order-tracking-timeline-Nj4vg6l8J6r</link>
            <guid isPermaLink="true">https://viblo.asia/p/series-xay-dung-restful-api-tu-con-so-0-voi-php-thuan-mvc-phan-25-api-theo-doi-hanh-trinh-don-hang-order-tracking-timeline-Nj4vg6l8J6r</guid>
            <description><![CDATA[Chào các bạn, mình đã quay trở lại!

Ở bài trước, chúng ta đã học cách ghi lại nhật ký mỗi khi đổi trạng thái. Nhưng ghi vào rồi thì phải lấy ra để hi...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-03-25 16:11:13</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[[Series] Xây dựng RESTful API từ con số 0 với PHP Thuần &amp; MVC - Phần 24: API Chi tiết Đơn hàng &amp; Bảo mật dữ liệu người dùng]]></title>
                        <link>https://viblo.asia/p/series-xay-dung-restful-api-tu-con-so-0-voi-php-thuan-mvc-phan-24-api-chi-tiet-don-hang-bao-mat-du-lieu-nguoi-dung-ymJXDE9EJkq</link>
            <guid isPermaLink="true">https://viblo.asia/p/series-xay-dung-restful-api-tu-con-so-0-voi-php-thuan-mvc-phan-24-api-chi-tiet-don-hang-bao-mat-du-lieu-nguoi-dung-ymJXDE9EJkq</guid>
            <description><![CDATA[Chào các bạn, mình đã trở lại!

Một sai lầm phổ biến của các bạn mới làm Backend là chỉ lọc đơn hàng theo id. Điều này dẫn đến lỗ hổng bảo mật nghiêm ...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-03-25 15:55:24</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[[Series] Xây dựng RESTful API từ con số 0 với PHP Thuần &amp; MVC - Phần 23: API Danh sách Đơn hàng cá nhân (My Orders)]]></title>
                        <link>https://viblo.asia/p/series-xay-dung-restful-api-tu-con-so-0-voi-php-thuan-mvc-phan-23-api-danh-sach-don-hang-ca-nhan-my-orders-1j4lQg7dJwl</link>
            <guid isPermaLink="true">https://viblo.asia/p/series-xay-dung-restful-api-tu-con-so-0-voi-php-thuan-mvc-phan-23-api-danh-sach-don-hang-ca-nhan-my-orders-1j4lQg7dJwl</guid>
            <description><![CDATA[Chào các bạn, mình đã quay trở lại!

Trong một hệ thống eCommerce, sau khi khách hàng bấm nút "Đặt hàng", tâm lý chung là họ muốn kiểm tra ngay xem đơ...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-03-25 15:48:55</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[[Series] Xây dựng RESTful API từ con số 0 với PHP Thuần &amp; MVC - Phần 22: Quản lý Trạng thái Đơn hàng &amp; Lịch sử Thay đổi]]></title>
                        <link>https://viblo.asia/p/series-xay-dung-restful-api-tu-con-so-0-voi-php-thuan-mvc-phan-22-quan-ly-trang-thai-don-hang-lich-su-thay-doi-1XVOWOrXVMz</link>
            <guid isPermaLink="true">https://viblo.asia/p/series-xay-dung-restful-api-tu-con-so-0-voi-php-thuan-mvc-phan-22-quan-ly-trang-thai-don-hang-lich-su-thay-doi-1XVOWOrXVMz</guid>
            <description><![CDATA[Chào các bạn, mình đã quay trở lại!

Trong các hệ thống thực tế (như tại Hasaki), việc thay đổi trạng thái đơn hàng là một hành động cực kỳ nhạy cảm. ...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-03-25 15:44:05</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[[Series] Xây dựng RESTful API từ con số 0 với PHP Thuần &amp; MVC - Phần 21: Checkout &amp; Xử lý Đơn hàng với Database Transaction]]></title>
                        <link>https://viblo.asia/p/series-xay-dung-restful-api-tu-con-so-0-voi-php-thuan-mvc-phan-21-checkout-xu-ly-don-hang-voi-database-transaction-R5JRQNzD4Gv</link>
            <guid isPermaLink="true">https://viblo.asia/p/series-xay-dung-restful-api-tu-con-so-0-voi-php-thuan-mvc-phan-21-checkout-xu-ly-don-hang-voi-database-transaction-R5JRQNzD4Gv</guid>
            <description><![CDATA[Chào các bạn, mình đã quay trở lại!

Năm 2026 rồi, việc xây dựng một hệ thống đặt hàng không chỉ đơn thuần là INSERT dữ liệu vào bảng. Hãy tưởng tượng...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-03-25 11:30:54</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[[Series] Xây dựng RESTful API từ con số 0 với PHP Thuần &amp; MVC - Phần 20: Quản lý Danh sách yêu thích (Wishlist)]]></title>
                        <link>https://viblo.asia/p/series-xay-dung-restful-api-tu-con-so-0-voi-php-thuan-mvc-phan-20-quan-ly-danh-sach-yeu-thich-wishlist-37LdeQ80Vov</link>
            <guid isPermaLink="true">https://viblo.asia/p/series-xay-dung-restful-api-tu-con-so-0-voi-php-thuan-mvc-phan-20-quan-ly-danh-sach-yeu-thich-wishlist-37LdeQ80Vov</guid>
            <description><![CDATA[Chào các bạn, mình đã quay trở lại!

Một website bán hàng hiện đại mà thiếu đi cái "nút thả tim" (Wishlist) thì quả là một thiếu sót lớn. Wishlist khô...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-03-25 11:26:25</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[[Series] Xây dựng RESTful API từ con số 0 với PHP Thuần &amp; MVC - Phần 19: Xây dựng hệ thống Giỏ hàng (Shopping Cart)]]></title>
                        <link>https://viblo.asia/p/series-xay-dung-restful-api-tu-con-so-0-voi-php-thuan-mvc-phan-19-xay-dung-he-thong-gio-hang-shopping-cart-kY4gD9QqJAe</link>
            <guid isPermaLink="true">https://viblo.asia/p/series-xay-dung-restful-api-tu-con-so-0-voi-php-thuan-mvc-phan-19-xay-dung-he-thong-gio-hang-shopping-cart-kY4gD9QqJAe</guid>
            <description><![CDATA[Chào các bạn, mình đã quay trở lại!

Giỏ hàng chính là "trạm trung chuyển" quan trọng nhất trước khi khách hàng tiến đến bước thanh toán. Khác với các...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-03-25 11:22:47</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[[Series] Xây dựng RESTful API từ con số 0 với PHP Thuần &amp; MVC - Phần 18: Quản lý Bộ sưu tập Ảnh Sản phẩm (Product Gallery)]]></title>
                        <link>https://viblo.asia/p/series-xay-dung-restful-api-tu-con-so-0-voi-php-thuan-mvc-phan-18-quan-ly-bo-suu-tap-anh-san-pham-product-gallery-gjLN0Nkj432</link>
            <guid isPermaLink="true">https://viblo.asia/p/series-xay-dung-restful-api-tu-con-so-0-voi-php-thuan-mvc-phan-18-quan-ly-bo-suu-tap-anh-san-pham-product-gallery-gjLN0Nkj432</guid>
            <description><![CDATA[Chào các bạn, mình đã trở lại!

Ở các phần trước, chúng ta đã có thông tin cơ bản của sản phẩm. Nhưng thực tế, một sản phẩm thường cần nhiều góc chụp:...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-03-25 11:18:31</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[[Series] Xây dựng RESTful API từ con số 0 với PHP Thuần &amp; MVC - Phần 17: Quản lý Danh mục (Category CRUD)]]></title>
                        <link>https://viblo.asia/p/series-xay-dung-restful-api-tu-con-so-0-voi-php-thuan-mvc-phan-17-quan-ly-danh-muc-category-crud-QyJKzDdQ4Me</link>
            <guid isPermaLink="true">https://viblo.asia/p/series-xay-dung-restful-api-tu-con-so-0-voi-php-thuan-mvc-phan-17-quan-ly-danh-muc-category-crud-QyJKzDdQ4Me</guid>
            <description><![CDATA[Chào các bạn, mình đã quay trở lại!

Sau khi đã làm chủ được module Sản phẩm ở Phần 16, việc xây dựng module Danh mục sẽ trở nên "dễ thở" hơn rất nhiề...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-03-25 11:11:51</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[[Series] Xây dựng RESTful API từ con số 0 với PHP Thuần &amp; MVC - Phần 16: Hoàn thiện bộ CRUD Sản phẩm (Create - Update - Delete)]]></title>
                        <link>https://viblo.asia/p/series-xay-dung-restful-api-tu-con-so-0-voi-php-thuan-mvc-phan-16-hoan-thien-bo-crud-san-pham-create-update-delete-2vJPdpAaJeK</link>
            <guid isPermaLink="true">https://viblo.asia/p/series-xay-dung-restful-api-tu-con-so-0-voi-php-thuan-mvc-phan-16-hoan-thien-bo-crud-san-pham-create-update-delete-2vJPdpAaJeK</guid>
            <description><![CDATA[Chào các bạn, mình đã quay trở lại!

Ở các phần trước, chúng ta đã làm rất tốt việc hiển thị danh sách và chi tiết sản phẩm. Nhưng một hệ thống không ...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-03-25 11:06:43</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[[Series] Xây dựng RESTful API từ con số 0 với PHP Thuần &amp; MVC - Phần 15: Chi tiết Sản phẩm &amp; Bộ sưu tập Hình ảnh (Product Gallery)]]></title>
                        <link>https://viblo.asia/p/series-xay-dung-restful-api-tu-con-so-0-voi-php-thuan-mvc-phan-15-chi-tiet-san-pham-bo-suu-tap-hinh-anh-product-gallery-ZjJYWoypVOE</link>
            <guid isPermaLink="true">https://viblo.asia/p/series-xay-dung-restful-api-tu-con-so-0-voi-php-thuan-mvc-phan-15-chi-tiet-san-pham-bo-suu-tap-hinh-anh-product-gallery-ZjJYWoypVOE</guid>
            <description><![CDATA[Chào các bạn, mình đã trở lại!

Khi người dùng click vào một sản phẩm từ danh sách, hệ thống cần trả về toàn bộ "nội thất" của sản phẩm đó. Một lỗi ph...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-03-25 11:01:27</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[[Series] Xây dựng RESTful API từ con số 0 với PHP Thuần &amp; MVC - Phần 14: Bộ lọc Sản phẩm Nâng cao (Category, Status &amp; Price Range)]]></title>
                        <link>https://viblo.asia/p/series-xay-dung-restful-api-tu-con-so-0-voi-php-thuan-mvc-phan-14-bo-loc-san-pham-nang-cao-category-status-price-range-G24B89xYLz3</link>
            <guid isPermaLink="true">https://viblo.asia/p/series-xay-dung-restful-api-tu-con-so-0-voi-php-thuan-mvc-phan-14-bo-loc-san-pham-nang-cao-category-status-price-range-G24B89xYLz3</guid>
            <description><![CDATA[Chào các bạn, mình đã quay trở lại!

Ở bài viết trước, chúng ta đã xử lý tìm kiếm theo tên và slug. Nhưng hãy tưởng tượng khách hàng vào website của b...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-03-25 10:11:12</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[[Series] Xây dựng RESTful API từ con số 0 với PHP Thuần &amp; MVC - Phần 13: Bộ lọc Sản phẩm chuyên sâu (Search by Name, Slug, Category)]]></title>
                        <link>https://viblo.asia/p/series-xay-dung-restful-api-tu-con-so-0-voi-php-thuan-mvc-phan-13-bo-loc-san-pham-chuyen-sau-search-by-name-slug-category-RlL5e812LbB</link>
            <guid isPermaLink="true">https://viblo.asia/p/series-xay-dung-restful-api-tu-con-so-0-voi-php-thuan-mvc-phan-13-bo-loc-san-pham-chuyen-sau-search-by-name-slug-category-RlL5e812LbB</guid>
            <description><![CDATA[Chào các bạn, mình đã trở lại!

Ở bài trước, chúng ta đã làm quen với việc lấy danh sách sản phẩm cơ bản. Nhưng thực tế, khách hàng thường tìm kiếm th...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-03-25 10:03:41</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[[Series] Xây dựng RESTful API từ con số 0 với PHP Thuần &amp; MVC - Phần 12: Danh sách Sản phẩm, Tìm kiếm và Phân trang]]></title>
                        <link>https://viblo.asia/p/series-xay-dung-restful-api-tu-con-so-0-voi-php-thuan-mvc-phan-12-danh-sach-san-pham-tim-kiem-va-phan-trang-OQJwzBMy4MP</link>
            <guid isPermaLink="true">https://viblo.asia/p/series-xay-dung-restful-api-tu-con-so-0-voi-php-thuan-mvc-phan-12-danh-sach-san-pham-tim-kiem-va-phan-trang-OQJwzBMy4MP</guid>
            <description><![CDATA[Chào các bạn, mình đã quay trở lại!

Khi làm việc tại các hệ thống lớn, danh sách sản phẩm không bao giờ chỉ đơn giản là SELECT * FROM products. Với h...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-03-25 09:59:12</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[[Series] Xây dựng RESTful API từ con số 0 với PHP Thuần &amp; MVC - Phần 11: Tích hợp Đăng nhập bằng Google (Google OAuth2)]]></title>
                        <link>https://viblo.asia/p/series-xay-dung-restful-api-tu-con-so-0-voi-php-thuan-mvc-phan-11-tich-hop-dang-nhap-bang-google-google-oauth2-oW4oelvzLml</link>
            <guid isPermaLink="true">https://viblo.asia/p/series-xay-dung-restful-api-tu-con-so-0-voi-php-thuan-mvc-phan-11-tich-hop-dang-nhap-bang-google-google-oauth2-oW4oelvzLml</guid>
            <description><![CDATA[Chào các bạn, mình đã trở lại!

Trong thời đại mà trải nghiệm người dùng (UX) là vua, việc bắt khách hàng điền form đăng ký dài dằng dặc là một "điểm ...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-03-25 09:50:14</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[[Series] Xây dựng RESTful API từ con số 0 với PHP Thuần &amp; MVC - Phần 10: Hoàn thiện Phân quyền - Gán Vai trò cho Người dùng]]></title>
                        <link>https://viblo.asia/p/series-xay-dung-restful-api-tu-con-so-0-voi-php-thuan-mvc-phan-10-hoan-thien-phan-quyen-gan-vai-tro-cho-nguoi-dung-18J2e8114YK</link>
            <guid isPermaLink="true">https://viblo.asia/p/series-xay-dung-restful-api-tu-con-so-0-voi-php-thuan-mvc-phan-10-hoan-thien-phan-quyen-gan-vai-tro-cho-nguoi-dung-18J2e8114YK</guid>
            <description><![CDATA[Chào các bạn, mình đã trở lại!

Sau khi đã có một hệ thống Roles và Permissions đồ sộ, bước cuối cùng là phải có một "vị vua" (Admin) có quyền ban phá...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-03-25 09:29:34</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[[Series] Xây dựng RESTful API từ con số 0 với PHP Thuần &amp; MVC - Phần 9: Hệ thống Phân quyền (Permissions) &amp; Middleware nâng cao]]></title>
                        <link>https://viblo.asia/p/series-xay-dung-restful-api-tu-con-so-0-voi-php-thuan-mvc-phan-9-he-thong-phan-quyen-permissions-middleware-nang-cao-K9Vy8YGaLQR</link>
            <guid isPermaLink="true">https://viblo.asia/p/series-xay-dung-restful-api-tu-con-so-0-voi-php-thuan-mvc-phan-9-he-thong-phan-quyen-permissions-middleware-nang-cao-K9Vy8YGaLQR</guid>
            <description><![CDATA[Chào các bạn, mình đã quay trở lại!

Trong các dự án thực tế (như hệ thống vận hành tại Hasaki), việc phân quyền không chỉ dừng lại ở Role. Chúng ta c...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-03-25 09:24:44</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[[Series] Xây dựng RESTful API từ con số 0 với PHP Thuần &amp; MVC - Phần 8: Quản lý Vai trò (Roles) &amp; Phân quyền cơ bản]]></title>
                        <link>https://viblo.asia/p/series-xay-dung-restful-api-tu-con-so-0-voi-php-thuan-mvc-phan-8-quan-ly-vai-tro-roles-phan-quyen-co-ban-AY4qQgmD4Pw</link>
            <guid isPermaLink="true">https://viblo.asia/p/series-xay-dung-restful-api-tu-con-so-0-voi-php-thuan-mvc-phan-8-quan-ly-vai-tro-roles-phan-quyen-co-ban-AY4qQgmD4Pw</guid>
            <description><![CDATA[Chào các bạn, mình đã trở lại!

Khi ứng dụng lớn dần, việc "ai cũng có quyền như ai" là một thảm họa bảo mật. Bạn không muốn một người dùng bình thườn...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-03-24 17:43:13</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[[Series] Xây dựng RESTful API từ con số 0 với PHP Thuần &amp; MVC - Phần 7: Cơ chế Đổi mật khẩu an toàn]]></title>
                        <link>https://viblo.asia/p/series-xay-dung-restful-api-tu-con-so-0-voi-php-thuan-mvc-phan-7-co-che-doi-mat-khau-an-toan-1XVOWOdXVMz</link>
            <guid isPermaLink="true">https://viblo.asia/p/series-xay-dung-restful-api-tu-con-so-0-voi-php-thuan-mvc-phan-7-co-che-doi-mat-khau-an-toan-1XVOWOdXVMz</guid>
            <description><![CDATA[Chào các bạn, mình đã quay trở lại!

Một trong những quy tắc vàng của bảo mật là khuyến khích người dùng đổi mật khẩu định kỳ. Tuy nhiên, lập trình vi...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-03-24 16:41:17</pubDate>
                                                                                                        </item>
                <item>
            <title><![CDATA[[Series] Xây dựng RESTful API từ con số 0 với PHP Thuần &amp; MVC - Phần 6: Quản lý Hồ sơ &amp; Cập nhật Thông tin Người dùng]]></title>
                        <link>https://viblo.asia/p/series-xay-dung-restful-api-tu-con-so-0-voi-php-thuan-mvc-phan-6-quan-ly-ho-so-cap-nhat-thong-tin-nguoi-dung-37LdeQm0Vov</link>
            <guid isPermaLink="true">https://viblo.asia/p/series-xay-dung-restful-api-tu-con-so-0-voi-php-thuan-mvc-phan-6-quan-ly-ho-so-cap-nhat-thong-tin-nguoi-dung-37LdeQm0Vov</guid>
            <description><![CDATA[Chào các bạn, mình đã quay trở lại!

Một hệ thống API "xịn" không chỉ dừng lại ở việc cho người dùng đăng nhập, mà còn phải cho phép họ làm chủ thông ...]]></description>
                        <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nguyễn Huy Hoàng</dc:creator>
            <pubDate>2026-03-24 14:47:42</pubDate>
                                                                                                        </item>
            </channel>
</rss>
