netherphp/object

自密封杆对象

v4.1.16 2023-03-02 02:42 UTC

README

Packagist Build Status codecov

此包提供了一些工具,以帮助进行一些底层工作。

注意:该库的所有内容已合并到 Nether\Common 中,不应再使用。

类概述

Nether\Object\Prototype

原型对象是一个自密封的杆对象,能够重新映射模式,并确保属性在需要时存在默认值。使用此类作为父类可以启用完全基于属性的功能。

扩展此类将自动授予一个构造函数,该函数旨在处理从类似数据库数据行之类的来源提供的数据堆。它将查看类期望的属性,并在分配之前确保数据类型转换,以帮助避免类型错误。

简单示例

class BaseObject
extends Nether\Object\Prototype {
	public int $ID;
	public string $Name;
}

$RowFromDB = [ 'ID'=> 1, 'Name'=> 'Bob' ];
$Obj = new BaseObject($RowFromDB);

Nether\Object\Datastore

提供类似数组的对象,以便可以将项存储为数组,但可以使用链式方法进行操作。它实现了 IterableArrayAccessCountable,并且还有许多用于处理单个集合数据的方法的集合。

简单示例

$Data = new Nether\Object\Datastore([
	1, 2, 3,
	4, 5, 6
]);

// strip out odd numbers
// then sort it big to small
// then show me what we got.

print_r(
	$Data
	->Filter(fn(int $Val)=> ($Val % 2) == 0)
	->Sort(fn(int $A, int $B)=> $B <=> $A)
	->Values()
);

// Array
// (
//    [0] => 6
//    [1] => 4
//    [2] => 2
// )

特质概述

类/方法/属性信息包。

这些特质被附加到任何类上时,为该类及其成员提供了静态辅助方法,用于读取有关该类及其成员的各种信息,包括 PHP 8 属性,以帮助进行元编程任务。扩展 Prototype 的类已经应用了这些特质。

Nether\Object\Package\ClassInfoPackage

简单示例

class MyClass {

	use
	Nether\Object\Package\ClassInfoPackage;

}

$ClassInfo = MyClass::GetClassInfo();

print_r($ClassInfo);
  • 文档:uri-to-wikipage

Nether\Object\Package\MethodInfoPackage

简单示例

class MyClass {

	use
	Nether\Object\Package\MethodInfoPackage;

	public function
	GetID():
	int {

		return 0;
	}

}

$Methods = MyClass::GetMethodIndex();

foreach($Methods as $Method) {
	print_r($Method);
}
  • 文档:uri-to-wikipage

Nether\Object\Package\PropertyInfoPackage

简单示例

class MyClass {

	use
	Nether\Object\Package\PropertyInfoPackage;

	public int
	$ID = 0;

}

$Props = MyClass::GetPropertyIndex();

foreach($Props as $Prop) {
	print_r($Prop);
}
  • 文档:uri-to-wikipage