一个简单的PHP fixtures库

dev-master 2013-03-04 11:51 UTC

This package is auto-updated.

Last update: 2020-01-10 14:49:05 UTC


README

一个简单的PHP fixtures库。(这主要是我练习编写TDD的练习,但我认为这很有用)

Build Status

示例

声明一个fixture应该是什么样子

Stem::fixture('User', array(
	'id' => ':int'
	'name' => '2:words',
	'email' => ':email',
	'bio' => ':string',
));

然后使用它

$fixture = Stem::attributes('User');

// array(
//   'id' => 29,
//   'name' => 'foo banana',
//   'email' => 'mascot28384@bread.example.com',
//   'bio' => 'dawn chat grandpa ballplayer cell Jill wing brainstorm chill Jills hunk ache'
// )

或者直接从它创建一个真实对象

$obj = Stem::make('User');

// this calls:
// new User(array( ... ))

在更简单的情况下,你可能只需要几个随机单词

Stem::run('3:words');

安装

Laravel

  • "danharper/stem": "dev-master"添加到你的composer.json中,并更新/安装
  • 'danharper\Stem\Facades\Laravel\StemServiceProvider'添加到app/config/app.php中的providers数组
  • 'Stem' => 'danharper\Stem\Facades\Laravel\Stem'添加到app/config/app.php中的aliases数组

使用它

Stem::run('3:words');

本地

使用"danharper\stem": "dev-master"从Composer获取。

然后你有两种方法可以使用它

use danharper\Stem\Facades\Native\Stem as Stem;

Stem::run('3:words');
use danharper\Stem\Stem as Stem;

$stem = new Stem;
$stem->run('3:words');

提供的处理程序

  • :string:words -- 使用数字前缀表示单词数量,例如3:words
  • :word -- 对于单个单词,为了在代码中清晰,你可以甚至写1:word (1:words也行)
  • :int:number -- 使用数字前缀表示从0到给定数字的数字
  • :email

注册自己的处理程序

使用一个类

Stem::register()提供一个对象,该对象响应register并返回其希望被识别的名称,当被告诉run(可选修饰符)时返回要显示的内容。为了清晰,实现danharper\Stem\Handlers\HandlerInterface

class CustomHandler {
	public function register() {
		return 'custom';
	}

	public function run($modifier) {
		if ($modifier)
			return "something $modifier";
		else
			return "something else";
	}
}

Stem::register(new CustomHandler);

Stem::run('lorem:custom'); // something lorem
Stem::run(':custom'); // something else

使用一个闭包

Stem::register()提供一个与上面类中的run方法行为一致的闭包,以及第二个参数表示其希望被识别的名称。

Stem::register(function($modifier) {
	if ($modifier)
		return "something $modifier";
	else
		return "something else";
}, 'foobar');

Stem::run('baz:foobar'); // something baz
Stem::run(':foobar'); // something else