Files
zurawik.pl/.paul/codebase/architecture.md
2026-05-20 13:30:10 +02:00

5.4 KiB

Architecture

Wygenerowano: 2026-05-20 ($paul-map-codebase)

Wzorzec

Klasyczne MVC bez frameworka. Wlasne jadro Core + FrontController + Router + Controller + warstwa *DAL (Data Access Layer) + szablony Smarty.

Wejscia (entry points)

  • index.php — strona publiczna. Sekwencja:
    1. include('./core/core.php')
    2. Core::Init(PageType::STRONA)
    3. Core::LoadSmarty()
    4. include('routes.php') — definicje tras publicznych.
    5. new FrontController() -> Dispatch().
  • Admin/index.php — panel PageType::ADMIN, definiuje wlasne Router::AddRoute(...) inline (m.in. Structure/Add, Structure/Edit/id/:id, customer/gallery/{lang}).
  • Pomocnicze skrypty stand-alone w roocie: pack.php, tar.php, zip.php, _unpack.php, makl.php, info.php — operacje archiwizacji/diagnostyki, nie korzystaja z FrontController.

Warstwy

1. Core (core/)

  • core/core.php — klasa Core (init, ladowanie configa, autoloader klas, Smarty boot, garbage) + enum PageType (STRONA, Package, ADMIN, SERVER).
  • core/ErrorHandler.php — globalna obsluga bledow.
  • core/class/ — infrastrukturalne klasy: Config, Registry, DB, SQL, DbCache, QueryCache, Router, FrontController, Controller, MainController, ModuleController, Request, RestRequest, Mailer, Profiler, UserValidator, Validator, Daemon, SessionProxy, TemplateMaster, Utils, UtilsUtf, MfCurl, MFLog, MfMemcache, MfXmlParser, Xml2Array, Enviroment, Exception, FileGenerator, HtmlButton, HtmlElement, DalData, DataObject, IDefaultDAL, Dictionary, DbSqlLite.
  • core/model/ — entity + DAL pary (np. MfProduct.class.php + MfProductDAL.class.php). Podkatalog core/model/SimpleArticle/ na artykuly.
  • core/config/{Strona,Admin,Server,Package}/ — pliki path.config.php, param.config.php, db.config.php, db.config.ini; Admin/ zawiera dodatkowo panel.config.php.
  • core/lib/ — wendorowane biblioteki (Smarty, log4php, PHPMailer, WideImage, Zend Search Lucene, SmartyValidate, mImage, MimeType).
  • core/temp/{Strona,Package}/Router.cache — cache routera.

2. Kontrolery publiczne (controller/)

  • IndexController, SearchController, MapsController, ProductController, ImageController, FileController, ModuleController, SharedController, SoapController, TranslateController, SimpleArticle/IndexController.php.

3. Kontrolery panelu (Admin/controller/)

  • Pelny CRUD admin: BoxController, CalcController, ConfigController, DemoController, DictionaryController, FileController, HomeController, HomeSiteController, ImageController, IndexController, LoginController, MailingController, MainSiteController, MapsController, ProductAttributeController, ProductCategoryController, ProductController, ProductSeriesController, ProductSpecController, SetupController, SharedController, SimpleArticle/IndexController.php, StructureController, UploaderController, UserController, UtilsController.

4. Moduly (module/, Admin/module/)

  • Publiczne: module/AuthDAL.mod.php, module/CacheParam.mod.php.
  • Admin: Admin/module/Admin.mod.php, Admin/module/AdminDAL.mod.php, Admin/module/AuthDAL.mod.php, Admin/module/CacheParam.mod.php, Admin/module/LightBBCodeParser.mod.php.

5. Szablony (template/, Admin/template/)

  • template/index.tpl — szablon glowny strony publicznej.
  • template/partial/ — podzielony na sekcje domeny: File/, Image/, Index/, Module/, Product/, Search/, Shared/, SimpleArticle/Index/, Translate/.
  • template/index.tpl.bak, template/index_good.tpl, template/clean.tpl, template/szablon.html — dodatkowe pliki (kandydat do uporzadkowania).
  • Admin: Admin/template/partial/ z folderami Structure/, Product/, SimpleArticle/Index/ itd. (do potwierdzenia po $paul-map-codebase z agentami).

Routing

  • Statyczna rejestracja w routes.php (publiczne) oraz inline w Admin/index.php (admin).
  • Router::$parseLang = true na stronie publicznej — obsluga sufiksu jezykowego.
  • Router::$reverseRoute = true w obu trybach.
  • Dispatching: FrontController::Dispatch() -> kontroler -> metoda -> Smarty render.

Rejestr i konfiguracja

  • Registry::Set/Get (core/class/Registry.class.php) — globalny kontener stanu (db, smarty, javascript, title).
  • Config::Get/Set (core/class/Config.class.php) — wartosci z plikow PHP/INI.
  • SetupDAL::GetAllVariables() — dynamiczna konfiguracja z bazy, wczytywana w Core::PageConfig() (core/core.php:73).

Sesja / lokalizacja

  • SessionProxy (core/class/SessionProxy.class.php) — abstrakcja sesji PHP.
  • setlocale(LC_TIME, 'pl_PL', ...) ustawiana w Core::PageConfig() (core/core.php:97).

Bezpieczny tryb aplikacji

  • Flaga Core::$appSafeMode (core/core.php:21, Core::SetAppSafeMode()) — aktywowana, gdy SetupDAL::GetAllVariables() rzuca MysqlException.

Statyczne zasoby

  • Static/ — uploady (Static/upload/Article/...), miniatury (Static/thumbs/).
  • Server/ — zasoby serwerowe (do zweryfikowania).

Diagram glownych zaleznosci (uproszczony)

HTTP request
  -> index.php / Admin/index.php
     -> Core::Init() + LoadSmarty()
     -> Router (routes.php / inline)
     -> FrontController::Dispatch()
        -> *Controller (controller/ lub Admin/controller/)
           -> Model entity + *DAL (core/model/)
           -> Smarty render (template/*.tpl)