Командная строка в PhpStorm
23 сентября 2011 PHP 16761 просмотр
PhpStorm — IDE от хорошо зарекомендовавшей себя компании по производству ПО для разработчиков. Цель любой IDE — создать комфортные условия для быстрой и качественной разработки. И в создании этих условий вам может помочь Command Line Tool, позволяющий делать быстро шаблонные действия. К сожалению, сейчас доступны команды только для Zend Framework и Symfony. В этой статье я помогу вам настроить командную строку на свой лад (Custom Framework).

File -> Settings -> Command Line Tool Support -> Add -> Custom Framework. Должно появиться окно с основными настройками.
Tool path — путь к bat-файлу, отвечающему за вызов обработчика введенных команд. Для начала создайте пустой bat-файл. Alias — это префикс, который нужно будет ввести перед именем команды. Далее жмем Apply и открываем xml-файл описания нашего «Custom Framework» (для этого нужно нажать «Open definition in editor»).

Пока у нас будет всего одна команда — создание файла с классом (с конструктором или без). XML будет выглядеть так.
<?xml version="1.0" encoding="UTF-8" ?>
<framework xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schemas/frameworkDescriptionVersion1.1.xsd" name="custom" invoke="d:/dev/custom.bat" alias="custom" enabled="true" version="1">
    <command>
        <name>createclass</name>
        <help><![CDATA[createclass name constructor-exist[=1]]]></help>
        <params>name constructor-exist[=1]</params>
    </command>
</framework>
По аналогии с bat-файлом для Zend Framework можно написать свой.
REM Test to see if this was installed via pear
SET ZTMPZTMPZTMPZ=@ph
SET TMPZTMPZTMP=%ZTMPZTMPZTMPZ%p_bin@
REM below @php_bin@
FOR %%x IN ("@php_bin@") DO (if %%x=="%TMPZTMPZTMP%" GOTO :NON_PEAR_INSTALLED)

GOTO PEAR_INSTALLED

:NON_PEAR_INSTALLED
REM Assume php.exe is executable, and that custom.php will reside in the
REM same file as this one
SET PHP_BIN=z:/usr/local/php5/php.exe
SET PHP_DIR=z:/usr/local/php5
GOTO RUN

:PEAR_INSTALLED
REM Assume this was installed via PEAR and use replacements php_bin & php_dir
SET PHP_BIN=@php_bin@
SET PHP_DIR=@php_dir@
GOTO RUN

:RUN
SET CUSTOM_SCRIPT=d:/dev/custom.php
"%PHP_BIN%" -d safe_mode=Off -f "%CUSTOM_SCRIPT%" -- %*
И простой PHP-код для создания этого класса.
class Custom
{
    const ROOT_PATH = 'z:/home/test/';
    private $_arguments = array();
    private $_isConstructorIncluded = true;

    public function __construct()
    {
        $this->_arguments = $_SERVER['argv'];
        switch ($this->_arguments[1]) {
            case 'createclass':
                $this->_createClass();
                break;
        }
    }

    private function _createClass()
    {
        $className = ucfirst($this->_arguments[2]);
        if (array_key_exists(3, $this->_arguments) && !$this->_arguments[3]) {
            $this->_isConstructorIncluded = false;
        }
        $filename = self::ROOT_PATH . $className . '.php';
        $content = "_isConstructorIncluded) {
            $content .= "\tpublic function __construct() {\n\t}\n";
        }
        $content .= "}\n?>";
        $handle = fopen($filename, 'x+');
        fwrite($handle, $content);
    }
}
$instance = new Custom();
Здесь ROOT_PATH — это папка, в которой будет создан файл с классом. По нажатию Ctrl + Shift + X в нашем редакторе появляется Command Line. Начинаем вводить "cus…".
Вводим название класса, указываем, нужен конструктор или нет и получаем то, что хотели (файл, с шаблоном класса).