ФорумПрограммированиеПыхнуть хотите?Готовые решения → Windows CLI Extended Class - удобная работа с php в командной строке

Windows CLI Extended Class - удобная работа с php в командной строке

  • fgets

    Сообщения: 1099 Репутация: N Группа: Кто попало

    Spritz 3 января 2011 г. 11:31

    Установка: ставим в php.ini
    auto_prepend_file = "путь к классу.php"

    Запускаем скрипты из командной строки >php test.php (к примеру)

    Содержимое класса версии 1.0.2
    <?php
    /**
    * Windows CLI Extended Class
    *
    * @version 1.0.2
    * @author Mars
    */

    date_default_timezone_set('Europe/Moscow');
    ini_set('display_errors', 'stderr');

    class cmd
    {
    /**
    * статическая переменная кодировки по умолчанию
    * @access private
    * @static
    */
    private static $charset = 'Windows-1251';

    /**
    * функция вывода текста на экран командной строки
    * @param string $string текст для вывода на экран
    */
    public static function write($string)
    {
    echo self::strtodos($string, self::$charset);
    }

    /**
    * функция ввода текста с экрана командной строки
    * @param string $arguments текст, выводимый перед запросом строки (prompt)
    * @param bool $in отключает декодирование в рабочую кодировку
    * @return string
    */
    public static function readln($arguments, $in=false)
    {
    fwrite(STDOUT, self::strtodos($arguments.chr(32), self::$charset));
    return (!$in) ? self::strfromdos(trim(fgets(STDIN)), self::$charset) : trim(fgets(STDIN));
    }

    /**
    * функция ввода ответа Y или N с экрана командной строки
    * @param string $arguments текст, выводимый перед запросом ответа (prompt)
    * @return bool
    */
    public static function readlnq($arguments)
    {
    $answers = array('y', 'Y', 'n', 'N', ''); $verity = array('y', 'Y', '');
    do {$query = self::readln($arguments.' Y/N');} while (!in_array($query, $answers));
    return (in_array($query, $verity));
    }

    /**
    * функция конвертирования текста из рабочей кодировки в кодировку dos
    * @param string $string строка в рабочей кодировке
    * @param string $charset название рабочей кодировки
    * @return string
    */
    public static function strtodos($string, $charset='')
    {
    if (empty($charset)) $charset = self::$charset;
    return iconv($charset, 'cp866', $string);
    }

    /**
    * функция конвертирования текста из кодировки dos в рабочую кодировку
    * @param string $string строка в кодировке dos
    * @param string $charset название рабочей кодировки
    * @return string
    */
    public static function strfromdos($string, $charset='')
    {
    if (empty($charset)) $charset = self::$charset;
    return iconv('cp866', $charset, $string);
    }

    /**
    * функция смены текущей рабочей кодировки
    * @param string $charset название рабочей кодировки
    */
    public static function output($charset)
    {
    self::$charset = $charset;
    }

    /**
    * функция исполнения команды и возврата результата в виде строки
    * @param string $cmd текст команды
    * @return string
    */
    public static function shell($cmd)
    {
    return `$cmd`;
    }
    }


    примеры решений



    <?php
    $name = cmd::readln('Введите ваше имя:');
    cmd::write("Ваше имя - $name");
  • Sinkler

    Сообщения: 7956 Репутация: N Группа: в ухо

    Spritz 3 января 2011 г. 13:56, спустя 2 часа 25 минут 33 секунды

    марс, зачем новый ак тебе?
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 3 января 2011 г. 14:35, спустя 38 минут 29 секунд

    так его вроде забанили со старого
  • fgets

    Сообщения: 1099 Репутация: N Группа: Кто попало

    Spritz 3 января 2011 г. 14:37, спустя 2 минуты 43 секунды


    так его вроде забанили со старого


    я просто бухой был, хуету нес вот и забанили

Пожалуйста, авторизуйтесь, чтобы написать комментарий!