memio/spec-gen
最新稳定版本:v0.10.0
Composer 安装命令:
composer require memio/spec-gen
包简介
phpspec extension for better code generation
README 文档
README
This extension for phpspec provides a powerful code generator:
- method generation:
- it inserts method at the end of the class
- it typehints arguments (uses interface when possible)
- it names object arguments after their type (strips
Interfacesuffix from names) - it names scalar arguments after a generic name (
argument) - it adds number on names that could collide (e.g.
$argument1, $argument2)
- constructor generation, same as method except:
- it inserts constructor at the begining of the class
- it inserts properties with initialization for each constructor arguments
Note: Currently it is not possible to provide custom templates to SpecGen (it is not compatible with phpspec templates).
Installation
First install it using Composer:
$ composer require --dev memio/spec-gen:^0.10
Then enable it in phpspec.yml:
extensions: Memio\SpecGen\MemioSpecGenExtension: ~
Version guide:
- using phpspec 5? Then use spec-gen v0.9
- using phpspec 4? Then use spec-gen v0.8
- using phpspec 3 and PHP 7? Then use spec-gen v0.7
- using phpspec 3 and PHP 5.6? Then use spec-gen v0.6
- using phpspec 2? Then use spec-gen v0.4
Full example
Let's write the following specification:
<?php namespace spec\Vendor\Project; use Vendor\Project\Service\Filesystem; use Vendor\Project\File; use PhpSpec\ObjectBehavior; class TextEditorSpec extends ObjectBehavior { const FILENAME = '/tmp/file.txt'; const FORCE_FILE_CREATION = true; function let(Filesystem $filesystem) { $this->beConstructedWith($filesystem); } function it_creates_new_files(File $file, Filesystem $filesystem) { $filesystem->exists(self::FILENAME)->willReturn(false); $filesystem->create(self::FILENAME)->willReturn($file); $this->open(self::FILENAME, self::FORCE_FILE_CREATION)->shouldBe($file); } }
Executing the specifications (phpspec run) will generate the following class:
<?php namespace Vendor\Project; use Vendor\Project\Service\Filesystem; class TextEditor { private $filesystem; public function __construct(Filesytem $filesystem) { $this->filesystem = $filesystem; } public function open(string $argument1, bool $argument2) { } }
Now we can start naming those generic arguments and write the code.
Want to know more?
You can see the current and past versions using one of the following:
- the
git tagcommand - the releases page on Github
- the file listing the changes between versions
And finally some meta documentation:
Roadmap
- constructor property promotion
- return type hints
- method body (mirror of test method body)
- better scalar argument naming (based on names used in test)
统计信息
- 总下载量: 204.24k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 67
- 点击次数: 0
- 依赖项目数: 34
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2015-05-12