ZF2: Konsolenanwendung Teil 2

Im zweiten Teil gehts es um Konsolenanwendungen mit Parametern. Wie man diese setzt und ausliest.

Im ersten Teil der Konsolenanwendung mit dem ZF2 hatten wir die allgemeine Einrichtung.

Dazu hatten wir uns folgende Testroute angelegt:

// module.config.php
 
return array(
    'router' => array(
    ),
    ....
 
    'console' => array(
        'router' => array(
            'routes' => array(
                 'testRoute' => array(
                    'options' => array(
                        'route' => 'testKommando',
                        'defaults' => array(
                            'controller' => 'Test\Crons\TestController',
                            'action' => 'index',
                        ),
                    ),
                 ),
            ),
        ),
    ),
 
    ....
    'navigation' => array(
    )

Optionale Parameter

Jetzt wollen wir unsere Route dahingehend anpassen, das Parameter gesetzt und ausgelesen werden können.

// module.config.php
 
return array(
    'router' => array(
    ),
    ....
 
    'console' => array(
        'router' => array(
            'routes' => array(
                 'testRoute' => array(
                    'options' => array(
                        'route' => 'testKommando [--verbose|-v]',
                        'defaults' => array(
                            'controller' => 'Test\Crons\TestController',
                            'action' => 'index',
                        ),
                    ),
                 ),
            ),
        ),
    ),
 
    ....
    'navigation' => array(
    )

Wir haben nun den optionalen Parameter verbose bzw v hinzugefügt. Beides steht für den gleichen Parameter ähnlich wie bei Linux Konsolenanwendungen. Die eckigen Klammern zeigen an, dass dieser Parameter optional ist. Durch die Pipe zeigen wir an das dieser Parameter ein weiteren Alias hat.

Um zu Prüfen ob der Parameter gesetzt ist gehen wir in unseren Controller und lesen die Anfragedaten aus:


...

class TestController extends AbstractActionController
{
    ...

    public function indexAction()
    {
        if($this->getRequest()->getParam('verbose') || $this->getRequest()->getParam('v'))
        {
            echo 'Parameter erfolgreich gesetzt!';
        }
    }


    ...
}

Nachdem alle Änderungen durchgeführt wurden rufen wir unsere Konsolenanwendung auf:

php public/index.php testKommando --verbose

Oder mit dem kurzen Parameter

php public/index.php testKommando -v

Bei beiden Varianten sollte nun die Ausgabe unseres TestControllers erscheinen.

Parameter mit Werten

Parameter mit Werten werden ähnlich deklariert wie die optionalen Parameter nur das bei diesen noch ein Wert erwartet wird, was über das =-Zeichen definiert wird.

// module.config.php
 
return array(
    'router' => array(
    ),
    ....
 
    'console' => array(
        'router' => array(
            'routes' => array(
                 'testRoute' => array(
                    'options' => array(
                        'route' => 'testKommando [--verbose|-v] [--name=]',
                        'defaults' => array(
                            'controller' => 'Test\Crons\TestController',
                            'action' => 'index',
                        ),
                    ),
                 ),
            ),
        ),
    ),
 
    ....
    'navigation' => array(
    )

Wir haben nun einen neuen optionalen Parameter hinzugefügt der einen Wert erwartet. Ausgelesen wird dieser genauso wie bereits bei den normalen optinalen Parametern


...

class TestController extends AbstractActionController
{
    ...

    public function indexAction()
    {
        if($this->getRequest()->getParam('name'))
        {
            echo $this->getRequest()->getParam('name').' erfolgreich gesetzt!';
        }
    }


    ...
}

Kommentar verfassen