Got a PHP project? Heard of Grunt and Gulp but don't use NodeJS? Task is a pure PHP task runner.
- Leverage PHP as a scripting language, and as your platform of choice.
- Use loads of nice features inspired by Grunt and Gulp (and Phing).
- Employ Symfony components for effortless CLI goodness.
- Extend with plugins.
For more information and documentation goto taskphp.github.io, or tweet us at @taskphp.
<?php use Task\Plugin; require 'vendor/autoload.php'; $project = new Task\Project('wow'); $project->inject(function ($container) { $container['phpspec'] = new Plugin\PhpSpecPlugin; $container['fs'] = new Plugin\FilesystemPlugin; $container['sass'] = (new Plugin\Sass\ScssPlugin) ->setPrefix('sass'); $container['watch'] = new Plugin\WatchPlugin; }); $project->addTask('greet', function () { $this->getOutput()->writeln('Hello, World!'); }); $project->addTask('test', ['phpspec', function ($phpspec) { $phpspec->command('run') ->setFormat('pretty') ->setVerbose(true) ->pipe($this->getOutput()); }]); $project->addTask('css', ['fs', 'sass', function ($fs, $sass) { fs->open('my.scss') ->pipe($sass) ->pipe($fs->touch('my.css')); }]); $project->addTask('css.watch', ['watch', function ($watch) { $watch->init('my.scss') ->addListener('modify', function ($event) { $this->runTask('css', $this->getOutput()); }) ->start(); }]); return $project;$> task greet Hello, World! $> task test Task\Injector 17 ✔ is initializable 22 ✔ should call function with services Task\Project 10 ✔ is initializable 20 ✔ should have a container 26 ✔ should resolve no dependencies 32 ✔ should resolve one dependency 39 ✔ should resolve many dependencies 50 ✔ should normalize dependencies 58 ✔ should normalize complex dependencies 2 specs 9 examples (9 passed) 29ms




