console.xml
Mit der console.xml können Sie eigene Konsolen Tools QUIQQER hinzufügen. QUIQQER besitzt eine Konsolen-Schnittstelle, die über die bash aufgerufen werden kann.
Über diese Schnittstelle können Testfunktionen mit allen geladenen Modulen schnell und effektiv aufgerufen und getestet werden.
Mit folgendem Befehl gelangen Sie in die QUIQQER Konsole
./console
Möchten Sie nun die QUIQQER Konsole um ein weiteres Tool erweitern, legen Sie im Root Ordner Ihres Plugins eine console.xml an.
Aufbau
<?xml version="1.0" encoding="UTF-8"?>
<console>
<tool exec="CLASS"/>
<tool exec="CLASS" file="USR_DIR/project/lib/console/myConsoleTool.php"/>
</console>
- <console> beginnt das Console XML
- <tool> Legt ein Tool fest welches es gibt.
- <tool> Mit der "exec=" verweist man auf eine existierende Klasse innerhalb der gleichnamigen .php Klassen Datei.
- <tool> Innerhalb des Tools ist das "file=" Argument optional und kann komplett weggelassen werden. Dieses fungiert lediglich als Alternative für den Dateipfad.
<tool exec="">
Ein <tool> Node legt ein Konsolen-Tool fest, welches über die Konsole aufgerufen werden kann.
In dem exec Attribut muss die PHP Tool Klasse definiert werden. Diese Klasse muss von \QUI\System\Console\Tool erben.
Beispiel
<?xml version="1.0" encoding="UTF-8"?>
<console>
<tool exec="\Company\Namespace\MyTool" />
</console>
Im Folgenden sehen Sie ein Beispiel aus zwei Dateien, welche aus einer durch die Konsole aufrufbaren Klasse besteht und die dazugehörige console.xml:
<?php
/**
* QUIQQER Console Tool: MyTool
*/
namespace Company\Namespace;
use QUI;
class MyTool extends QUI\System\Console\Tool
{
public function __construct()
{
$this->setName('package:my-package') // Hier wird der Paket Name des Konsolen Tools übergeben
->setDescription('Mein Test Paket') // Dies ist eine Beschreibung für das Konsolen Tool
->addArgument('delete-tables', 'Beschreibung'); // Dies ist eine Beschreibung für die in der Konsole ausführbaren Befehle oder Argumente
}
public function execute()
{
$this->writeLn("this is a Test"); // Hier Wird eine Test Message in die Konsole ausgegeben
$this->writeLn("Hello World"); // Hier Wird eine Test Message in die Konsole ausgegeben
$this->writeLn(); // Hier wird eine Leerzeile in der Konsole ausgegeben
// execute bereich
$this->writeLn($this->getArgument('table')); // Hier wird das eingefügte '--table=""' Argument in der Konsole ausgegeben
$this->writeLn();
$this->writeLn();
}
}
<!-- console.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<console>
<tool exec="\Company\Namespace\MyTool"/>
</console>
Um nachher auf Ihr Konsolen Tool zuzugreifen, müssen Sie insofern Ihr Tool nicht als Systemtool deklariert ist, sich mit Ihrem Benutzernamen und Passwort in der Konsole einloggen. Hinter den Nutzerdaten müssen Sie noch auf das von Ihnen genutzte Paket verweisen:
Hier ein Beispiel wie Sie auf das Entwicklungspaket zuzugreifen:
./console --username=admin --password=********** --tool=package:my-package
Nun können Sie Ihre Konsolen Ausgabe testen mit folgendem Befehl:
./console --username=admin --password=********** --tool=package:my-package --table="Hallo Welt über das Table Argument"
Die folgende Konsolenausgabe sollte wie folgt aussehen:
this is a Test
Hello World
Hallo Welt über das Table Argument
System Konsolen Tool
Ein System Konsolen Tool ist ein Tool welches keinen Benutzernamen und Benutzerpasswort benötigt. Dieses kann in der Konsole direkt aufgerufen und ausgeführt werden.
Um ein Tool als System Konsolen Tool zu deklarieren, müssen Sie im constructor Ihrer Tool-Klasse $this->systemTool = true;
setzen.
<?php
/**
* QUIQQER Console Tool: MyTool
*/
namespace Company\Namespace;
use QUI;
class MyTool extends QUI\System\Console\Tool
{
public function __construct()
{
$this->systemTool = true;
// ...
}
public function execute()
{
// ...
}
}
Konsolen Tool Beispiele
Um den Benutzern das Ausführen Ihres Konsolen-Tools zu erleichtern, können Sie Beispiele in Ihrem Tool mitliefern.
<?php
/**
* QUIQQER Console Tool: MyTool
*/
namespace Company\Namespace;
use QUI;
class MyTool extends QUI\System\Console\Tool
{
public function __construct()
{
// ...
$this->addExample(
'./console package:my-package --param1'
);
$this->addExample(
'./console package:my-package --param2 --param2'
);
// ...
}
public function execute()
{
// ...
}
}