Namespace Migration REDAXO 5 → 6
REDAXO 6 verwendet PSR-4 Namespaces unter dem Haupt-Namespace Redaxo\Core.
Namespace-Übersicht
| Namespace | Beschreibung | Enthält |
|---|---|---|
Redaxo\Core |
Hauptklassen | Core, Config, Cache, ErrorHandler, SystemReport |
Redaxo\Core\Addon |
Add-on Management | Add-on, AddonManager, AddonInterface |
Redaxo\Core\ApiFunction |
API-Funktionen | ApiFunction, Result, Exceptions |
Redaxo\Core\Backend |
Backend-System | Controller, Navigation, Page, Style |
Redaxo\Core\Backup |
Backup-System | Backup, FileCompressor, Tar |
Redaxo\Core\Base |
Basis-Traits | FactoryTrait, SingletonTrait, InstancePoolTrait |
Redaxo\Core\Console |
CLI-Befehle | Application, Command-Klassen |
Redaxo\Core\Content |
Struktur/Inhalt | Article, Category, Template, Module, Slice |
Redaxo\Core\Cronjob |
Cronjobs | CronjobManager, CronjobExecutor, Types |
Redaxo\Core\Database |
Datenbank | Sql, Table, Column, Index |
Redaxo\Core\Exception |
Exceptions | Exception, RuntimeException, UserMessageException |
Redaxo\Core\ExtensionPoint |
Extension Points | Extension, ExtensionPoint |
Redaxo\Core\Filesystem |
Dateisystem | Path, Url, File, Dir, Finder |
Redaxo\Core\Form |
Formulare | Form, ConfigForm, Field-Klassen |
Redaxo\Core\Http |
HTTP-Handling | Request, Response, Context |
Redaxo\Core\HttpClient |
HTTP-Client | Request, Response, ProxyRequest |
Redaxo\Core\Language |
Mehrsprachigkeit | Language, LanguagePermission |
Redaxo\Core\Log |
Logging | Logger, LogFile, LogEntry |
Redaxo\Core\Mailer |
Mailer | |
Redaxo\Core\MediaManager |
Bildbearbeitung | MediaManager, ManagedMedia, Effects |
Redaxo\Core\MediaPool |
Medienverwaltung | Media, MediaCategory, MediaPool |
Redaxo\Core\MetaInfo |
Meta-Informationen | Handler, Form-Klassen |
Redaxo\Core\RexVar |
REDAXO-Variablen | RexVar, ArticleVar, MediaVar etc. |
Redaxo\Core\Security |
Sicherheit | User, Login, Permission, CsrfToken |
Redaxo\Core\Setup |
Installation | Setup, Importer |
Redaxo\Core\Translation |
Übersetzungen | I18n |
Redaxo\Core\Util |
Hilfsfunktionen | Formatter, Str, Version, Timer |
Redaxo\Core\Validator |
Validierung | Validator, ValidationRule |
Redaxo\Core\View |
Ansichten | View, Fragment, DataList, Navigation |
Verwendungsbeispiele
Namespace-Import
<?php
// REDAXO 6.x - mit use Statements
use Redaxo\Core\Core;
use Redaxo\Core\Database\Sql;
use Redaxo\Core\Filesystem\Path;
use Redaxo\Core\Security\User;
use Redaxo\Core\View\Fragment;
// Hauptklasse
$version = Core::getVersion();
$isBackend = Core::isBackend();
// Datenbankabfragen
$sql = Sql::factory();
$sql->setTable(Core::getTable('article'));
$sql->select();
// Pfade
$mediaPath = Path::media('image.jpg');
$cachePath = Path::cache('myfile.cache');
// Benutzer
$user = Core::getUser();
if ($user instanceof User) {
$name = $user->getName();
}
// Fragmente
$fragment = new Fragment();
$fragment->setVar('title', 'Mein Titel');
echo $fragment->parse('core/page/section.php');
Vollqualifizierte Klassennamen
<?php
// Alternativ ohne use Statements
$sql = \Redaxo\Core\Database\Sql::factory();
$path = \Redaxo\Core\Filesystem\Path::core();
$version = \Redaxo\Core\Core::getVersion();
Sub-Namespaces im Detail
Redaxo\Core\Addon
use Redaxo\Core\Addon\Addon;
use Redaxo\Core\Addon\AddonManager;
use Redaxo\Core\Addon\AddonInterface;
use Redaxo\Core\Addon\NullAddon;
// Add-on abrufen
$addon = Addon::get('myaddon');
if ($addon->isAvailable()) {
$version = $addon->getVersion();
}
// Alle verfügbaren Add-ons
$addons = Addon::getAvailableAddons();
Redaxo\Core\Database
use Redaxo\Core\Database\Sql;
use Redaxo\Core\Database\Table;
use Redaxo\Core\Database\Column;
use Redaxo\Core\Database\Index;
use Redaxo\Core\Database\ForeignKey;
use Redaxo\Core\Database\Util;
use Redaxo\Core\Database\SchemaDumper;
use Redaxo\Core\Core;
// SQL-Abfragen
$sql = Sql::factory();
// Tabellenstruktur ändern
$table = Table::get(Core::getTable('mydata'))
->ensureColumn(new Column('id', 'int(11)', false, null, 'auto_increment'))
->ensureColumn(new Column('name', 'varchar(255)'))
->setPrimaryKey('id')
->ensure();
Redaxo\Core\Console
use Redaxo\Core\Console\Application;
use Redaxo\Core\Console\Command\AbstractCommand;
// Eigener Konsolenbefehl
class MyCommand extends AbstractCommand
{
protected function configure(): void
{
$this->setName('myaddon:mycommand');
}
protected function execute(): int
{
// Implementierung
return self::SUCCESS;
}
}
Redaxo\Core\Form
use Redaxo\Core\Form\Form;
use Redaxo\Core\Form\ConfigForm;
use Redaxo\Core\Form\Field\BaseField;
use Redaxo\Core\Form\Field\SelectField;
use Redaxo\Core\Form\Select\Select;
// Standard-Formular
$form = Form::factory(Core::getTable('mydata'), 'Daten bearbeiten');
$form->addTextField('name', 'Name');
$form->addTextareaField('description', 'Beschreibung');
// Config-Formular
$form = ConfigForm::factory('myaddon');
$form->addTextField('api_key', 'API-Schlüssel');
Redaxo\Core\Security
use Redaxo\Core\Security\User;
use Redaxo\Core\Security\Login;
use Redaxo\Core\Security\BackendLogin;
use Redaxo\Core\Security\CsrfToken;
use Redaxo\Core\Security\Permission;
use Redaxo\Core\Security\UserRole;
// CSRF-Token
$token = CsrfToken::factory('myform');
$hiddenField = $token->getHiddenField();
if ($token->isValid()) {
// Formular verarbeiten
}
// Benutzerprüfung
$user = Core::getUser();
if ($user && $user->hasPerm('myaddon[]')) {
// Berechtigt
}
Redaxo\Core\View
use Redaxo\Core\View\View;
use Redaxo\Core\View\Fragment;
use Redaxo\Core\View\DataList;
use Redaxo\Core\View\Message;
use Redaxo\Core\View\Asset;
use Redaxo\Core\View\Navigation;
// Nachrichten
echo Message::success('Erfolgreich gespeichert');
echo Message::error('Fehler aufgetreten');
echo Message::info('Information');
// Assets
Asset::addCssFile('/assets/myaddon/styles.css');
Asset::addJsFile('/assets/myaddon/script.js');
// Datenliste
$list = DataList::factory('SELECT * FROM rex_mydata');
$list->addColumn('name', 'Name');
Redaxo\Core\Content
use Redaxo\Core\Content\Article;
use Redaxo\Core\Content\Category;
use Redaxo\Core\Content\ArticleSlice;
use Redaxo\Core\Content\Template;
use Redaxo\Core\Content\Module;
// Artikel abrufen
$article = Article::get($articleId, $clangId);
if ($article) {
$name = $article->getName();
$url = $article->getUrl();
}
// Kategorie
$category = Category::get($categoryId);
$children = $category->getChildren();
PSR-4 Autoloading
Die composer.json definiert das Autoloading:
{
"autoload": {
"psr-4": {
"Redaxo\\Core\\": "src"
}
}
}
Dies bedeutet:
Redaxo\Core\Core→src/Core.phpRedaxo\Core\Database\Sql→src/Database/Sql.phpRedaxo\Core\Form\Field\SelectField→src/Form/Field/SelectField.php
IDE-Unterstützung
Für PhpStorm steht eine .phpstorm.meta.php Datei bereit, die:
- Autovervollständigung für Factory-Methoden bietet
- Typ-Inferenz für dynamische Methoden ermöglicht
- Navigation zu Klassendefinitionen verbessert