Package Home

Zend Framework 2 Documentation (Manual)

PHK Home

File: /_sources/modules/zend.console.prompts.txt

Size:5324
Storage flags:no_autoload,compress/gzip (33%)

.. _zend.console.prompts:

Console prompts
===============

In addition to :doc:`console abstraction layer <zend.console.adapter>` Zend Framework 2 provides numerous convenience
classes for interacting with the user in console environment. This chapter describes available ``Zend\Console\Prompt``
classes and their example usage.

All prompts can be instantiated as objects and provide ``show()`` method.

.. code-block:: php
    :linenos:

    use Zend\Console\Prompt;

    $confirm = new Prompt\Confirm('Are you sure you want to continue?');
    $result = $confirm->show();
    if ($result) {
        // the user chose to continue
    }

There is also a shorter method of displaying prompts, using static ``prompt()`` method:

.. code-block:: php
    :linenos:
    :emphasize-lines: 3

    use Zend\Console\Prompt;

    $result = Prompt\Confirm::prompt('Are you sure you want to continue?');
    if ($result) {
        // the user chose to continue
    }

Both of above examples will display something like this:

.. image:: ../images/zend.console.prompt.png
   :width: 608
   :align: center


.. seealso::

    Make sure to :doc:`read about console MVC integration first <zend.console.introduction>`, because it provides
    a convenient way for running modular console applications without directly writing to or reading from console
    window.


Confirm
-------

This prompt is best used for a **yes** / **no** type of choices.

.. code-block:: php

    Confirm( string $text, string $yesChar = 'y', string $noChar = 'n' )

**$text**
    (`string`) The text to show with the prompt

**$yesChar**
    (`string`) The char that corresponds with YES choice. Defaults to ``y``.

**$noChar**
    (`string`) The char that corresponds with NO choice. Defaults to ``n``.

Example usage:

.. code-block:: php

    use Zend\Console\Prompt\Confirm;

    if ( Confirm::prompt('Is this the correct answer? [y/n]', 'y', 'n') ) {
        $console->write("You chose YES");
    } else {
        $console->write("You chose NO");
    }

.. image:: ../images/zend.console.prompt2.png
   :width: 612
   :align: center


Line
----

This prompt asks for a line of text input.

.. code-block:: php

    Line(
        string $text = 'Please enter value',
        bool $allowEmpty = false,
        bool $maxLength = 2048
    )

**$text**
    (`string`) The text to show with the prompt

**$allowEmpty**
    (`boolean`) Can this prompt be skipped, by pressing [ENTER] ? (default fo false)

**$maxLength**
    (`integer`) Maximum length of the input. Anything above this limit will be truncated.

Example usage:

.. code-block:: php

    use Zend\Console\Prompt\Line;

    $name = Line::prompt(
        'What is your name?',
        false,
        100
    );

    $console->write("Good day to you $name!");

.. image:: ../images/zend.console.prompt3.png
   :width: 612
   :align: center


Char
----

This prompt reads a single keystroke and optionally validates it against a list o allowed characters.

.. code-block:: php

    Char(
        string $text = 'Please hit a key',
        string $allowedChars = 'abc',
        bool   $ignoreCase = true,
        bool   $allowEmpty = false,
        bool   $echo = true
    )

**$text**
    (`string`) The text to show with the prompt

**$allowedChars**
    (`string`) A list of allowed keys that can be pressed.

**$ignoreCase**
    (`boolean`) Ignore the case of chars pressed (default to true)

**$allowEmpty**
    (`boolean`) Can this prompt be skipped, by pressing [ENTER] ? (default fo false)

**$echo**
    (`boolean`) Should the selection be displayed on the screen ?

Example usage:

.. code-block:: php

    use Zend\Console\Prompt\Char;

    $answer = Char::prompt(
        'What is the correct answer? [a,b,c,d,e]',
        'abcde',
        true,
        false,
        true
    );

    if ($answer == 'b') {
        $console->write('Correct. This it the right answer');
    } else {
        $console->write('Wrong ! Try again.');
    }

.. image:: ../images/zend.console.prompt4.png
   :width: 612
   :align: center


Select
------

This prompt displays a number of choices and asks the user to pick one.

.. code-block:: php

    Select(
        string $text = 'Please select one option',
        array  $options = array(),
        bool   $allowEmpty = false,
        bool   $echo = false
    )

**$text**
    (`string`) The text to show with the prompt

**$options**
    (`array`) An associative array with keys strokes (chars) and their displayed values.

**$allowEmpty**
    (`boolean`) Can this prompt be skipped, by pressing [ENTER] ? (default fo false)

**$echo**
    (`boolean`) Should the selection be displayed on the screen ?

Example usage:

.. code-block:: php

    $options = array(
        'a' => 'Apples',
        'o' => 'Oranges',
        'p' => 'Pears',
        'b' => 'Bananas',
        'n' => 'none of the above...'
    );

    $answer = Select::prompt(
        'Which fruit do you like the best?',
        $options,
        false,
        false
    );

    $console->write("You told me that you like " . $options[$answer]);

.. image:: ../images/zend.console.prompt5.png
   :width: 614
   :align: center

.. seealso::

    To learn more about accessing console, writing to and reading from it, make sure to
    read the following chapter: :doc:`zend.console.adapter`.


For more information about the PHK package format: http://phk.tekwire.net