cryonighter / object-column
此包提供了 object_column() 函数,它的工作方式与标准库中的 array_column() 函数类似,但具有处理对象的能力
1.0.0
2021-05-10 21:36 UTC
Requires
- php: >=7.1.0
Requires (Dev)
- phpunit/phpunit: 7.5.*
This package is not auto-updated.
Last update: 2024-09-25 11:42:04 UTC
README
此包提供了 object_column() 函数,其工作方式类似于array_column() 标准库函数,但具有处理对象的能力。
要搜索对象中的列,可以使用这些对象的公共属性以及方法 getColumnName() / hasColumnName() / isColumnName() / columnName()(按此顺序),以及 ArrayAccess 接口的方法。
函数 object_column() 与 array_column() 完全向后兼容,并且可以与常规数组以相同的方式工作。
此外,object_column() 函数支持链式调用。
亮点
系统需求
你需要
- PHP >= 7.1.0,但建议使用最新的稳定版本
安装
通过Composer
$ composer require cryonighter/object-column
用法
该函数按以下方式工作
示例 #1:简单访问公共属性
use function Cryonighter\ObjectColumn\object_column; $objects = [ new class { public $foo = '123'; public $bar = '456'; public $baz = '789'; }, new class { public $foo = 'qwe'; public $bar = 'asd'; public $baz = 'zxc'; }, ]; $result = object_column($objects, 'foo', 'bar');
示例 #2:调用getter的链
use function Cryonighter\ObjectColumn\object_column; $objects = [ new class { public function getFoo() { return new class { public function baz(): string { return '123'; } }; } public function getBar() { return new class { public function buz(): string { return '456'; } }; } }, new class { public function getFoo() { return new class { public function baz(): string { return 'qwe'; } }; } public function getBar() { return new class { public function buz(): string { return 'asd'; } }; } }, ]; $result = object_column($data, 'foo.baz', 'bar.buz');
示例 #3:调用 ArrayAccess 对象的链
use function Cryonighter\ObjectColumn\object_column; $objects = [ new ArrayObject([ 'foo' => new ArrayObject(['baz' => '123']), 'bar' => new ArrayObject(['buz' => '456']), ]), new ArrayObject([ 'foo' => new ArrayObject(['baz' => 'qwe']), 'bar' => new ArrayObject(['buz' => 'asd']), ]), ]; $result = object_column($data, 'foo.baz', 'bar.buz');
结果
在所有情况下,结果将相同
[456 => '123', 'asd' => 'qwe']
数组索引
此外,该函数还可以用于索引数组,为此只需不传递第一个参数
示例 #4:数组索引
use function Cryonighter\ObjectColumn\object_column; $objects = [ [ 'foo' => ['baz' => '123'], 'bar' => ['buz' => '456'], ], [ 'foo' => ['baz' => 'qwe'], 'bar' => ['buz' => 'asd'], ], ]; $result = object_column($data, null, 'bar.buz');
结果
[ '456' => [ 'foo' => ['baz' => '123'], 'bar' => ['buz' => '456'], ], 'asd' => [ 'foo' => ['baz' => 'qwe'], 'bar' => ['buz' => 'asd'], ], ];
如果没有传递第二个或第三个参数给函数,将返回原始数组。此操作没有意义。
变更日志
有关最近更改的更多信息,请参阅CHANGELOG。
测试
$ php vendor/phpunit/phpunit/phpunit tests
贡献
有关详细信息,请参阅CONTRIBUTING和CODE_OF_CONDUCT。
安全
如果您发现任何与安全相关的问题,请通过电子邮件发送至cryonighter@yandex.ru
,而不是使用问题跟踪器。
致谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。