Im Produktionsumfeld
Echte Nibiru-Anwendungen bringen echtes Einkommen. Maschinen Stockert verkauft industrielle Maschinen in 12 Ländern auf diesem Framework.
Ein Framework, das sich lohnt zu verwenden, bringt Dinge mit. Der Flaggschiff-Nibiru-Bereitstellung ist die Maschinen Stockert-Gruppe – eine Paar von Repositorys, die einen der größten industriellen-Geräte-E-Commerce-Plattformen Österreichs betreiben.
Die beiden Repositories teilen Module und eine Datenbank; sie teilen die Verantwortung nach Publikum.
maschinen-stockert.de — öffentlicher Katalog
Die Verkaufsseite. Durchsuchen und suchen Sie gebrauchte industrielle Maschinen, zeigen Sie reiche Detailseiten mit SEO-freundlichen Slug an, melden Sie sich für das jährliche Hausmesse-Messeveranstaltung an, fordern Sie Angebote an.
maschinen-stockert.de — öffentlicher Katalog
Abschnitt betitelt „maschinen-stockert.de — öffentlicher Katalog“Die öffentliche Seite: Dies ist der Ort, an dem industrielle Käufer landen, suchen und umwandeln.
Was darauf enthalten ist
Abschnitt betitelt „Was darauf enthalten ist“- Multilingual content, bei dem jeder sichtbare String aus der
cms_template_textsDatenbank abgerufen wird, die durch<controller>/<action>+ Sprache indiziert ist. Redakteure aktualisieren den Text im Admin-Bereich ohne einen Deployment. - Elasticsearch-gestützte maschinelles Suchen, mit typbewusster Filterung — Abmessungen werden aus
"2500 × 1200 mm"Zeichenketten in numerische Bereiche analysiert, sodass Käufer nach Größe suchen können. - SEO-freundliche URLs —
/maschine/drehmaschine-2500/42— generiert aus dem Maschinenname mit Normalisierung der deutschen Umlaute (ä → ae,ß → ss). Die numerische ID steht immer am Ende, sodass der Router einen veralteten Slug auflösen kann. - Yumpu PDF Flipbooks für herunterladbare Kataloge.
- Hausmesse Modul für die Anmeldung auf Messestandsmitte mit rollenbasiertem Zugriff.
Eine repräsentative Aktion
Abschnitt betitelt „Eine repräsentative Aktion“public function detailAction(){ $machineId = $this->getRequest('id', true); if (!$machineId) { http_response_code(404); return; }
$controllerPath = $this->getController() . '/detail'; $cmsTemplateTexts = Cms::init($this->getController()) ->loadCmsTemplateTextsByControllerPath($controllerPath, $this->language);
foreach ($cmsTemplateTexts as $t) { View::assign([ $t['cms_template_texts_text_identifier'] => $t['cms_template_texts_text_content'] ]); }
try { $machine = Machine::init()->getMachine((int) $machineId); } catch (\Throwable $e) { $machine = null; / DB blip → page still renders with fallback. }
$machineName = $machine['ms_machines_name'] ?? "Maschine #$machineId"; $protocol = (($_SERVER['HTTPS'] ?? '') === 'on') ? 'https' : 'http';
View::assign([ 'machine' => $machine, 'pageTitle' => "$machineName - Maschinen Stockert", 'metaDescription'=> "Details und Spezifikationen für $machineName", 'canonicalUrl' => $protocol . '://' . $_SERVER['HTTP_HOST'] . self::generateMachineSeoUrl($machineId, $machineName), ]);}50 Zeilen, kein Dependency Injection Container, kein Validierungs-Pipeline, kein Middleware Stack. Lädt zuerst die von der CMS verwaltete Kopie (damit eine Datenbankausfall auf den Maschinen die Seite nicht zerstört), zieht die Maschine mit einem sanften Fallback, generiert SEO-Metadaten immer. Die gesamte Detailseite wird in zwei Datenbank-Round-Trips gerendert.
data.maschinen-stockert.de — Admin & API
Das interne Cockpit. Vertriebsmitarbeiter verwalten den Bestand, Inhalte, Aufträge, Teamseiten und Messeanmeldungen. Entwickler und Integrationen rufen REST-APIs auf, um Maschinen zu suchen, Hersteller zu synchronisieren, PDFs zu generieren und Ollama für künstliche Intelligenz-basierte Maschinendescriptions abzurufen.
data.maschinen-stockert.de — Admin und API
Abschnitt betitelt „data.maschinen-stockert.de — Admin und API“Die gleichen Module, dreimal so viele Controller und Templates – weil Admin-Benutzeroberflächen und APIs viele Einstiegspunkte benötigen.
Was es macht
Abschnitt betitelt „Was es macht“- Page-tree CMS: Redakteure erstellen Seiten aus einer Smarty-Vorlage; das
Parser-Plugin durchsucht die Platzhalter{$identifier}in der Vorlage und generiert automatisch die Bearbeitungsformularschnittstelle für den Admin-Bereich. Die Vorlage ist die Formulierungsspezifikation. - Rollenbasierte ACL: jeder Konstruktor des Admin-Controllers ruft
$this->user = new User(); $this->acl = new Acl(); $this->acl->init(); $this->user->validate();– drei Zeilen, fertig. Vertrieb hat nur Lesezugriff auf den Bestand; Administratoren können bearbeiten; Partner sehen nur ihre zugewiesenen Einträge. - Public-API-Zulassungsliste:
apiControllererlaubt maschinenbasierte Suchen, Kategorieabrufe, Teaminformationen und Ollama-AI-Aufrufe ohne Authentifizierung, erfordert dann jedoch Authentifizierung für alles andere. Die Zulassungsliste befindet sich direkt im Konstruktor – keine Probleme mit der Reihenfolge des Middlewares. - Machineryscout Indexer: das schwerste Modul. Ein 2.200-Zeilen-Trait, das Maschinen + Attribute + Bilder + Dokumente aus MySQL über
JSON_ARRAYAGGzieht, normalisiert die Typen ("2500 x 1200"→dimension_width: 2500.0, dimension_height: 1200.0), ersetzt Platzhalter für fehlende Bilder und schreibt Zeilen in Elasticsearch.
Der Parser-Muster — automatische Generierung von Editor-Benutzeroberflächen aus einer Vorlage
Abschnitt betitelt „Der Parser-Muster — automatische Generierung von Editor-Benutzeroberflächen aus einer Vorlage“$parser = Parser::init();$cmsEditable = $parser->parseSmartyTemplateByTemplateId($templateId);View::assign([ 'cmsEditable' => $cmsEditable, 'cmsTemplateTextForm'=> Cms::textsEditingForm('/admin/texts/create/text/new'),]);Fügen Sie eine neue Smarty-Vorlage ins System ein, der Editor weiß sofort, welche Platzhalter bearbeitet werden können. Es gibt keinen Schritt zur “Registrierung der Formularfelder”.
Was ist tatsächlich besonderes, zusammengefasst
Abschnitt betitelt „Was ist tatsächlich besonderes, zusammengefasst“Die fünf Unterschiedsmaker unten stammen aus den darüberliegenden Codebasen. Jeder verweist auf seine Beweise auf der Seite Warum Nibiru.
| Was Nibiru macht | Was Laravel/Symfony macht | |
|---|---|---|
| Seitenkopie | Aus der Datenbank per Anfrage durch <controller>/<action> geladen, von einem Editor verwaltet. | Hardschrieben in Blade / Übersetzungs-JSON; für Änderungen bereitstellen. |
| Modulkomposition | 13 Traits pro Modul, keine DI. | Dienstanbieter + IoC-Container. |
| ORM | Direkte SQL, MySQL JSON_ARRAYAGG, Pdo::fetchAll. | Eloquent / Doctrine-Entitäten + Lazy-Loading-Proxys. |
| Authentifizierung | 3 Zeilen im Controller-Konstruktor. | Middleware-Stack + Policy-Klassen + Gates. |
| Ereignisse | SplSubject + SplObserver aus der PHP Standardbibliothek. | Benutzerdefinierter Event-Dispatcher + Listener-Registry + Warteschlange. |
Lesen Sie die vollständige Ausbreakdown mit Codeverweisen →
Was dazu notwendig war
Abschnitt betitelt „Was dazu notwendig war“Maschinen Stockert ist eine echte, einkommensgenerierende Website, die Maschinen in 12 Ländern verkauft. Sie hat 161 timestamped SQL-Migrationen ohne Migrationsframework in die Produktion übertragen, 74.000 Zeilen PHP über zwei Repositories ohne Dienstcontainer und 18 Module, die mit Traits anstelle von Vererbung zusammengesetzt werden. Das Team, das es erstellt und betreut, ist klein.
Das ist die Beweisnachweisung.
Wenn Sie mit einer kleinen Team und einem engen Budget in die Produktion gehen, bei der Abstimmungen und Ausfallzeiten echtes Geld kosten — das ist der Nibiru-Sweet Spot. Lesen Sie den Schnellstart, dann kommen Sie zurück.