wid/native-object

保持您的数据为原生PHP类型!

dev-master 2014-01-17 16:52 UTC

This package is not auto-updated.

Last update: 2024-09-24 02:34:06 UTC


README

PHP喜欢在从数据源拉取数据时以字符串形式发送数据。这个库将帮助您将所有内容转换为原生PHP格式。

示例

了解这个库的最简单方法就是查看一个示例。我们将假装我们在将数据库中的一行转换为数据。

属性映射是一个“属性名称”=>“映射名称”对的数组。有关更多信息,请参阅转换部分。

class UserObject extends Wid\Data\NativeObject
{
	protected function init()
	{
		$this->setPropertyMap(array(
			'id' => 'Integer',
			'active' => 'Boolean',
			'joined_at' => 'DateTime',
			'roles' => function($arg){
				return explode(',', $arg);
			}
		));

		parent::init();
	}
}

$databaseRow = array(
 	'id' => '1',
	'username' => 'dwidmer',
 	'active' => '0',
 	'joined_at' => '2014-01-15 12:00:00',
	'roles' => 'super,admin,user'
);

$user = new UserObject($databaseRow);
$user->toArray();

/* //// Output //// */

// 'id' => (int) 1
// 'username' => (string) 'dwidmer'
// 'active' => (boolean) false,
// 'joined_at' => \DateTime
// 'roles' => array('super', 'admin', 'user')

真的很简单!

转换

以下是库中可用的转换类型列表

您还可以将任何可以通过call_user_func调用的内容作为属性映射的第二个参数传递(例如示例中的roles),数据可以以此方式进行转换。在我们的示例中,它将字符串转换为数组,按逗号拆分。

属性访问

那么我如何获取数据呢?

以下每一行都将有效。

$id = $user['id']; // Array Access
$id = $user->id; // Object Notation
$id = $user->get('id'); // Getter

get()还有一个附加优势,即可以作为第二个参数添加默认值。如果没有显式设置,则为null

设置呢?

您可以使用数组访问、对象表示法或设置器来设置,就像获取数据时一样。以下所有方法都将有效。

$user['active'] = true;
$user->active = true;
$user->set('active', true);

为什么?

将我们的数据转换为原生PHP有很多优点,但我在开发这个库时的主要目的是为了API开发。当我们发送数据时,它应该以原生数据类型(即布尔值不应返回为'0')。顺便说一句 - 您可以对任何NativeObject调用toJSON()并获取它的JSON表示形式。

开发

看到一些可以改进的地方或想帮忙添加一些功能?

  • 克隆此存储库
  • 运行composer install
  • 编码吧(使用phpunit测试来支持您的更改!)
  • 向我发送拉取请求!

Dave Widmer开发