wid / native-object
保持您的数据为原生PHP类型!
dev-master
2014-01-17 16:52 UTC
Requires (Dev)
- phpunit/phpunit: 3.7.x
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开发