Часто ли нужно сделать програму для консоли? Не так часто, да? А вот я последнее время только этим и занимаюсь… Поэтому сделал класс (на самом деле сделал еще очень давно).
Этот класс позволяет выполнять такие простые операции, как подсветка текста, подсветка бэкграунда буквы или текста, установка курсора на нужную позицию, выбор консоли для вывода и ввод текста в консоль.
Долго трепать языком не стану. Тот, кто зашел под кат явно знает зачем он пришел. А поэтому…Вот код:
И посмотреть кросс-пост в моем блоге по адресу: http://alexsnet.ru/2008/11/how-to-work-with-ansi-console/
Спасибо за внимание.
Этот класс позволяет выполнять такие простые операции, как подсветка текста, подсветка бэкграунда буквы или текста, установка курсора на нужную позицию, выбор консоли для вывода и ввод текста в консоль.
Долго трепать языком не стану. Тот, кто зашел под кат явно знает зачем он пришел. А поэтому…Вот код:
- <?php
- class console
- {
- const TARGET_OUTPUT = "php://output";
- const TARGET_STDOUT = "php://stdout";
- const TARGET_STDERR = "php://stderr";
- const TARGET_STDIN = "php://stdin";
- protected static $color = array(
- 'gray' => 30,
- 'black' => 30,
- 'red' => 31,
- 'green' => 32,
- 'yellow' => 33,
- 'blue' => 34,
- 'magenta' => 35,
- 'cyan' => 36,
- 'white' => 37,
- 'default' => 39
- );
- protected static $bgcolor = array(
- 'gray' => 40,
- 'black' => 40,
- 'red' => 41,
- 'green' => 42,
- 'yellow' => 43,
- 'blue' => 44,
- 'magenta' => 45,
- 'cyan' => 46,
- 'white' => 47,
- 'default' => 49,
- );
- protected static $style = array(
- 'default' => '0',
- 'bold' => 1,
- 'faint' => 2,
- 'normal' => 22,
- 'italic' => 3,
- 'notitalic' => 23,
- 'underlined' => 4,
- 'doubleunderlined' => 21,
- 'notunderlined' => 24,
- 'blink' => 5,
- 'blinkfast' => 6,
- 'noblink' => 25,
- 'negative' => 7,
- 'positive' => 27,
- );
- private $text = "";
- // Outputing
- public function draw($text='')
- {
- echo $this->text.$text;
- $this->text = '';
- return $this;
- }
- // Input
- public function readNumeric()
- {
- $stdin = fopen('php://stdin', 'r');
- $line = trim(fgets($stdin));
- fscanf($stdin, "%d\n", $number);
- return $number;
- }
- public function readString()
- {
- $stdin = fopen('php://stdin', 'r');
- $line = trim(fgets($stdin));
- fscanf($stdin, "%s\n", $string);
- return $string;
- }
- // Sound
- public function beep() { echo "\007"; return $this; }
- public function setSoundHerz($herz=100) { echo "\033[10;{$herz}]"; return $this; }
- public function setSoundLong($milliseconds=500) { echo "'033[11;{$milliseconds}]"; return $this; }
- // Cursor position
- public function toPos( $row = 1, $column = 1 ) { echo "\033[{$row};{$column}H"; return $this; }
- public function cursorUp($lines=1) { echo "\033[{$lines}A"; return $this; }
- public function cursorDown($lines=1) { echo "\033[{$lines}B"; return $this; }
- public function cursorRight($columns=1) { echo "\033[{$columns}C"; return $this; }
- public function cursorLeft($columns=1) { echo "\033[{$columns}D"; return $this; }
- // Text colors
- public function setStyle($style='default') { $this->text .= "\033[".$this->style[$style]."m"; return $this; }
- public function setColor($color='default') { $this->text .= "\033[".$this->color[$style]; return $this; }
- public function setBgColor($color='default') { $this->text .= "\033[".$this->bgcolor[$style]; return $this; }
- // Application
- public function setAppName($name='') { echo "\033]0;{$name}\007"; return $this; }
- public function setTitle($name='') { echo "\033]2;{$name}\007"; return $this; }
- public function setIcon($name='') { echo "\033]1;{$name}\007"; return $this; }
- // Other
- public function clear() { echo "\033c"; return $this; }
- public function console($num=1) { echo "\033[12;{$num}]"; return $this; }
- }
- ?>
* This source code was highlighted with Source Code Highlighter.
Так же скачать это можно с phpclasses.org по этой ссылке: http://www.phpclasses.org/browse/package/4969.htmlИ посмотреть кросс-пост в моем блоге по адресу: http://alexsnet.ru/2008/11/how-to-work-with-ansi-console/
Спасибо за внимание.