12 KiB
WEBSHOP SYSTEM - API DOKUMENTATION
ÜBERBLICK
Das Webshop-System bietet eine vollständig PrestaShop-kompatible API mit erweiterten Funktionen für moderne E-Commerce-Anwendungen.
Version: 1.0.0
Basis: PrestaShop 8.x kompatibel
Lizenz: GPL v3
Autor: Webshop System
🚀 SCHNELLSTART
Installation
# Repository klonen
git clone https://github.com/webshop-system/core.git
# Dependencies installieren
composer install
# Docker-Container starten
docker-compose up -d
# Datenbank initialisieren
php bin/console doctrine:database:create
php bin/console doctrine:migrations:migrate
Erste Schritte
// Context initialisieren
$context = Context::getContext();
// Produkt erstellen
$product = new Product();
$product->name = 'Mein Produkt';
$product->price = 29.99;
$product->add();
// Produkt abrufen
$product = new Product(1);
echo $product->name; // "Mein Produkt"
📚 CORE-KLASSEN
Product.php
Vollständige PrestaShop-kompatible Produktverwaltung
Konstruktor
$product = new Product($id = null, $id_lang = null, $id_shop = null);
Hauptmethoden
Produkt erstellen:
$product = new Product();
$product->name = 'Produktname';
$product->reference = 'REF-001';
$product->price = 29.99;
$product->active = true;
$result = $product->add();
Produkt abrufen:
$product = new Product(1);
echo $product->name;
echo $product->price;
Produkt aktualisieren:
$product = new Product(1);
$product->price = 39.99;
$result = $product->update();
Produkt löschen:
$product = new Product(1);
$result = $product->delete();
Produkt suchen:
$products = Product::searchByName('Suchbegriff');
$product = Product::getByReference('REF-001');
Preisberechnung:
$product = new Product(1);
$priceWithTax = $product->getPrice(true);
$priceWithoutTax = $product->getPrice(false);
Lagerbestand:
$product = new Product(1);
$available = $product->checkQty(5);
$stock = $product->quantity;
Webservice-API
// Alle Produkte abrufen
$products = $product->getWebserviceObjectList('', '', '', '');
// Produkt über Webservice erstellen
$wsProduct = [
'name' => 'Webservice Produkt',
'reference' => 'WS-001',
'price' => 19.99
];
Category.php
Kategorieverwaltung mit Hierarchie-Support
Hauptmethoden
// Kategorie erstellen
$category = new Category();
$category->name = 'Elektronik';
$category->active = true;
$category->add();
// Unterkategorie erstellen
$subCategory = new Category();
$subCategory->name = 'Smartphones';
$subCategory->id_parent = 1;
$subCategory->add();
// Kategoriehierarchie abrufen
$categories = Category::getCategories(1);
$children = $category->getChildren(1);
ObjectModel.php
Basis-Klasse für alle Modelle
Hauptmethoden
// Objekt erstellen
$object = new MyModel();
$object->add();
// Objekt abrufen
$object = new MyModel(1);
// Objekt aktualisieren
$object->update();
// Objekt löschen
$object->delete();
// Validierung
$isValid = $object->validateFields();
Db.php
Erweiterte Datenbankfunktionen
Hauptmethoden
// Query ausführen
$result = Db::getInstance()->executeS('SELECT * FROM product');
// Einzelnen Wert abrufen
$name = Db::getInstance()->getValue('SELECT name FROM product WHERE id = 1');
// Insert
$result = Db::getInstance()->insert('product', [
'name' => 'Test',
'price' => 29.99
]);
// Update
$result = Db::getInstance()->update('product', [
'price' => 39.99
], 'id = 1');
// Delete
$result = Db::getInstance()->delete('product', 'id = 1');
Context.php
Kontext-Management für Multi-Shop
Hauptmethoden
// Context abrufen
$context = Context::getContext();
// Shop-Informationen
$shop = $context->shop;
$language = $context->language;
$currency = $context->currency;
$customer = $context->customer;
$cart = $context->cart;
Order.php
Bestellverwaltung
Hauptmethoden
// Bestellung erstellen
$order = new Order();
$order->id_customer = 1;
$order->id_cart = 1;
$order->total_paid = 99.99;
$order->add();
// Bestellstatus aktualisieren
$order = new Order(1);
$order->setCurrentState(2); // 2 = Bezahlt
// Bestellhistorie
$history = $order->getHistory(1);
Customer.php
Kundenverwaltung
Hauptmethoden
// Kunde erstellen
$customer = new Customer();
$customer->firstname = 'Max';
$customer->lastname = 'Mustermann';
$customer->email = 'max@example.com';
$customer->add();
// Kunde abrufen
$customer = new Customer(1);
echo $customer->firstname;
// Kundenadressen
$addresses = $customer->getAddresses(1);
Cart.php
Warenkorb-Management
Hauptmethoden
// Warenkorb erstellen
$cart = new Cart();
$cart->id_customer = 1;
$cart->add();
// Produkt zum Warenkorb hinzufügen
$cart->updateQty(1, 2); // Produkt ID 1, Menge 2
// Warenkorb-Inhalt abrufen
$products = $cart->getProducts();
// Gesamtsumme
$total = $cart->getOrderTotal();
🔧 KONFIGURATION
Configuration.php
Zentrale Konfigurationsverwaltung
// Konfiguration setzen
Configuration::set('PS_SHOP_NAME', 'Mein Webshop');
Configuration::set('PS_SHOP_EMAIL', 'info@meinwebshop.de');
// Konfiguration abrufen
$shopName = Configuration::get('PS_SHOP_NAME');
$shopEmail = Configuration::get('PS_SHOP_EMAIL');
// Globale Konfiguration
Configuration::updateGlobalValue('PS_MAINTENANCE_MODE', false);
// Multi-Shop Konfiguration
Configuration::set('PS_SHOP_NAME', 'Shop Name', 1, 1);
Language.php
Sprachverwaltung
// Sprachen abrufen
$languages = Language::getLanguages();
$activeLanguages = Language::getLanguages(true);
// Sprache nach ISO-Code
$language = Language::getIdByIso('de');
$language = Language::getIdByLocale('de_DE');
// Sprache installieren
Language::checkAndAddLanguage('fr', true);
Shop.php
Multi-Shop Management
// Shops abrufen
$shops = Shop::getShops();
$activeShops = Shop::getShops(true);
// Context setzen
Shop::setContext(Shop::CONTEXT_SHOP, 1);
Shop::setContext(Shop::CONTEXT_GROUP, 1);
Shop::setContext(Shop::CONTEXT_ALL);
// Aktueller Shop
$currentShop = Shop::getContextShopID();
🌐 WEBSERVICE-API
REST-API Endpoints
Produkte:
GET /api/products
GET /api/products/{id}
POST /api/products
PUT /api/products/{id}
DELETE /api/products/{id}
Kategorien:
GET /api/categories
GET /api/categories/{id}
POST /api/categories
PUT /api/categories/{id}
DELETE /api/categories/{id}
Bestellungen:
GET /api/orders
GET /api/orders/{id}
POST /api/orders
PUT /api/orders/{id}
DELETE /api/orders/{id}
Kunden:
GET /api/customers
GET /api/customers/{id}
POST /api/customers
PUT /api/customers/{id}
DELETE /api/customers/{id}
API-Authentifizierung
// API-Key generieren
$apiKey = Tools::generateApiKey();
// API-Zugriff
$headers = [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json'
];
🐳 DOCKER-DEPLOYMENT
Docker-Compose Setup
version: '3.8'
services:
php:
build: ./docker/php
volumes:
- .:/var/www/html
depends_on:
- mysql
- redis
mysql:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: webshop
volumes:
- mysql_data:/var/lib/mysql
nginx:
image: nginx:alpine
ports:
- "80:80"
- "443:443"
volumes:
- .:/var/www/html
- ./docker/nginx:/etc/nginx/conf.d
depends_on:
- php
redis:
image: redis:alpine
ports:
- "6379:6379"
Deployment-Skript
#!/bin/bash
# deploy.sh
echo "🚀 Deploying Webshop System..."
# Docker-Container stoppen
docker-compose down
# Neueste Version pullen
git pull origin main
# Dependencies installieren
composer install --no-dev --optimize-autoloader
# Docker-Container starten
docker-compose up -d
# Datenbank-Migrationen
docker-compose exec php php bin/console doctrine:migrations:migrate
# Cache leeren
docker-compose exec php php bin/console cache:clear
echo "✅ Deployment abgeschlossen!"
📊 PERFORMANCE-OPTIMIERUNG
Caching-Strategien
// Redis-Cache konfigurieren
Cache::setRedisConnection([
'host' => 'redis',
'port' => 6379,
'database' => 0
]);
// Produkt-Cache
$product = Cache::retrieve('product_1');
if (!$product) {
$product = new Product(1);
Cache::store('product_1', $product, 3600);
}
Datenbank-Optimierung
-- Indizes für bessere Performance
CREATE INDEX idx_product_active ON product(active);
CREATE INDEX idx_product_category ON product(id_category_default);
CREATE INDEX idx_product_price ON product(price);
CREATE INDEX idx_order_customer ON `order`(id_customer);
CREATE INDEX idx_cart_customer ON cart(id_customer);
Monitoring
// Performance-Monitoring
$startTime = microtime(true);
$product = new Product(1);
$endTime = microtime(true);
$executionTime = $endTime - $startTime;
Logger::log('Product load time: ' . $executionTime . 's');
🔒 SICHERHEIT
Validierung
// Input-Validierung
$name = Tools::safeOutput($_POST['name']);
$email = Validate::isEmail($_POST['email']);
$price = Validate::isPrice($_POST['price']);
if (!$email) {
throw new Exception('Ungültige E-Mail-Adresse');
}
SQL-Injection-Schutz
// Sichere Queries
$sql = 'SELECT * FROM product WHERE id = ' . (int)$id;
$sql = 'SELECT * FROM product WHERE name = \'' . pSQL($name) . '\'';
XSS-Schutz
// Output-Escaping
echo Tools::safeOutput($userInput);
echo htmlspecialchars($userInput, ENT_QUOTES, 'UTF-8');
🧪 TESTING
Unit-Tests ausführen
# Alle Tests
vendor/bin/phpunit
# Spezifische Test-Klasse
vendor/bin/phpunit tests/Unit/ProductTest.php
# Mit Coverage-Report
vendor/bin/phpunit --coverage-html coverage/
Integration-Tests
// Beispiel Integration-Test
class OrderIntegrationTest extends TestCase
{
public function testCompleteOrderFlow()
{
// Kunde erstellen
$customer = new Customer();
$customer->firstname = 'Test';
$customer->lastname = 'Customer';
$customer->email = 'test@example.com';
$customer->add();
// Warenkorb erstellen
$cart = new Cart();
$cart->id_customer = $customer->id;
$cart->add();
// Produkt zum Warenkorb hinzufügen
$cart->updateQty(1, 2);
// Bestellung erstellen
$order = new Order();
$order->id_customer = $customer->id;
$order->id_cart = $cart->id;
$order->total_paid = 99.99;
$order->add();
$this->assertGreaterThan(0, $order->id);
}
}
📈 MONITORING & LOGGING
Logging-Konfiguration
// Logger konfigurieren
Logger::setLogLevel(Logger::INFO);
Logger::log('Application started', Logger::INFO);
Logger::log('Error occurred', Logger::ERROR);
Performance-Monitoring
// Response-Zeit messen
$startTime = microtime(true);
// ... Code ausführen ...
$endTime = microtime(true);
$responseTime = $endTime - $startTime;
if ($responseTime > 1.0) {
Logger::log('Slow response: ' . $responseTime . 's', Logger::WARNING);
}
🚀 DEPLOYMENT-CHECKLISTE
Vor dem Deployment
- Alle Tests erfolgreich
- Code-Review abgeschlossen
- Datenbank-Backup erstellt
- Umgebungsvariablen konfiguriert
- SSL-Zertifikate installiert
Nach dem Deployment
- Anwendung erreichbar
- Datenbank-Verbindung funktioniert
- Cache funktioniert
- Logs werden geschrieben
- Monitoring aktiviert
📞 SUPPORT
Kontakt
- E-Mail: support@webshop-system.de
- Dokumentation: https://docs.webshop-system.de
- GitHub: https://github.com/webshop-system/core
Häufige Probleme
Problem: Datenbank-Verbindung fehlschlägt
# Lösung: Docker-Container neu starten
docker-compose restart mysql
Problem: Cache-Probleme
# Lösung: Cache leeren
php bin/console cache:clear
Problem: Performance-Probleme
# Lösung: OpCache aktivieren
docker-compose exec php php -d opcache.enable=1
© 2024 Webshop System - Vollständig PrestaShop-kompatibel