Skip to content

Kiến trúc nanoCart

Tổng quan

nanoCart tách biệt hoàn toàn giữa core (engine) và registry (nội dung mở rộng).

nanoCart/
├── core/       Engine: routing, DB, session, cart, user...
├── registry/   Plugins, themes, languages — PSR-4
├── public/     Webroot duy nhất expose ra internet
└── storage/    Cache, logs, sessions — KHÔNG expose

Registry Loader

core/Registry/Loader.php — khởi động một lần qua Loader::boot().

Tự động discover:

  • registry/themes/<name>/theme.json
  • registry/plugins/<type>/<name>/plugin.json
  • registry/languages/<code>/manifest.json

Tạo Plugin mới

registry/plugins/payment/my_gateway/
├── plugin.json
├── pm_my_gateway.inc.php   # class pm_my_gateway
└── ...

plugin.json:

json
{
    "name": "pm_my_gateway",
    "type": "payment",
    "version": "1.0.0",
    "psr4": "NanoCart\\Plugins\\Payment\\MyGateway\\"
}

Tạo Theme mới

registry/themes/my-theme/
├── theme.json
├── catalog/    # templates catalog
└── admin/      # templates admin

Hooks

Dùng event::fire()event::listen() (kế thừa từ core).

Convert Tool

Chạy lại khi upstream có bản mới:

bash
php tools/convert-litecart.php --dry-run
php tools/convert-litecart.php

nanoCart — Thương mại điện tử dành cho Việt Nam