offhand/蜂窝

与框架/库无关的杂项实用类和对象

3.0.3 2022-04-05 01:57 UTC

README

蜂窝是一个包含有用实用对象的集合,不依赖于框架/库。每个类都旨在完成一件事情,并且做到最好。

方法排序

MethodSort 类是一个具有状态的对象,它实现了 __invoke,使得该对象的实例可以用作标准排序的预配置比较函数。方法排序允许通过调用方法的返回结果来对对象进行排序。

例如。假设你有一个 Person

class Person {
	public function __construct($firstname, $lastname) {
		$this->firstname = $firstname;
		$this->lastname  = $lastname;
	}

	public function getFirstName()
	{
		return $this->firstname;
	}

	public function getLastName()
	{
		return $this->lastname;
	}
}

现在假设你有一个人的数组

$objects     = [
	'ms' => new Person('Matthew', 'Sahagian'),
	'mj' => new Person('Matthew', 'Jones'),
	'bt' => new Person('Brian', 'Tam')
];

你可以使用 MethodSort 按照名字顺序,然后按姓氏顺序进行排序

$method_sort = new Honeycomb\MethodSort();

$method_sort->setOrder([
	'getFirstName' => 'asc',
	'getLastName'  => 'asc'
]);

uasort($objects, $method_sort);

对象现在包含

array (
  'bt' =>
  Person::__set_state(array(
     'firstname' => 'Brian',
     'lastname' => 'Tam',
  )),
  'mj' =>
  Person::__set_state(array(
     'firstname' => 'Matthew',
     'lastname' => 'Jones',
  )),
  'ms' =>
  Person::__set_state(array(
     'firstname' => 'Matthew',
     'lastname' => 'Sahagian',
  )),
)