在JetBrains产品中使用File Watcher将PHP预处理到任何文本文档

时间:2016-06-19 22:56:00

标签: php phpstorm webstorm jetbrains-ide file-watcher

有很多预处理或编译语言, 每个都有自己的学习曲线,例如(scss,sass,jade,typescript)这个数字似乎没有减少。

如果开发人员可以执行PHP来生成任何文本文档,就像使用文件监视器将上述内容编译为本机(html,css,js)一样,那会不会很酷。

优点

  1. 没有额外的学习曲线。
  2. 一种语言。
  3. 减少重复编码。
  4. 用更少的错误在更短的时间内生成代码
  5. 制作符合您标准的一致代码。
  6. 更多时间专注于规划我们的应用程序。
  7. 我做了什么

    编辑Jade源代码并将扩展名从html更改为php。

    File:       jade.js
    
    Location:   npm\node_modules\jade\bin\
    
    Line:       249
    

    我已经能够将Jade文件执行到PHP

    enter image description here

    我如何认识到可以实现

    可能有多个这样的转发器。

    template-css - >编译成css

    template-php - >编译成php

    template-js - >编译为javascript。

    等等。

    中分析程序或文件监视器主要执行3个任务

    1. 将文件扩展名从template-filetye替换为php。

    2. 针对PHP可执行文件或解析器执行新的file.php,就像在浏览器中运行一样。

    3. 返回指定文本的文件监视器。

    4. 这是jade.cmd文件中的代码

      @IF EXIST "%~dp0\node.exe" (
        "%~dp0\node.exe"  "%~dp0\node_modules\jade\bin\jade.js" %*
      ) ELSE (
        @SETLOCAL
        @SET PATHEXT=%PATHEXT:;.JS;=;%
        node  "%~dp0\node_modules\jade\bin\jade.js" %*
      )
      

      注意:我不理解cmd文件。 我没有修改过这个文件但教导它可能对任何想要帮助的人都有帮助。

      启示

      http://www.codesmithtools.com/product/generator

      可能有用的链接

      http://php.net/manual/en/function.exec.php

      http://php.net/manual/it/install.windows.commandline.php

      建立filewatcher的任何帮助或任何合适的名称将不胜感激。

1 个答案:

答案 0 :(得分:1)

如果你只是在寻找一种方法来监视和执行来自IDE的php文件,那么你已经拥有了所有需要的东西。

看看这个file watcher in PhpStorm

此文件观察程序将运行$PhpExecutable$,每次/usr/lib/php中的文件发生更改时,Working directory会转换为STDOUT,并将.txt放入同一目录中的文件中使用新的附加信息$PhpExecutable$

IDE会自动group input and output file,因此更容易管理。

如果您需要更高级的东西,您总是可以编写自己的脚本而不是#!/usr/bin/env php <?php ob_start(); // ... preprocess? init some variables? include $argv[1]; $output = ob_get_clean(); // ... postprocess $output? echo $output; // echo to STDOUT, or to file with file_put_contents(preg_replace('/\.php$/', '.txt', $argv[1]), $output); 并使用php输出控件

例如:

<input id="form:checkEstrato" type="checkbox" name="form:checkEstrato" checked="checked" />

<input id="form:checkArea" type="checkbox" name="form:checkArea" checked="checked" />