GitHunt
NE

netherphp/object

Core object for self buliding objects

Nether Object (netherphp/object)

Packagist
Build Status
codecov

This package provides some utilities to aid with some low level work.


NOTE: ALL OF THIS LIBRARY HAS BEEN MERGED INTO Nether\Common and should no
longer be used.

Class Overview

Nether\Object\Prototype

The Prototype Object is a self-sealing stem object capable of remapping schemas
and ensuring that properties exist with default values if needed. Using this
class as the parent enables the attribute based functionality all the way down.

Extending this class automatically grants a constructor designed to handle
being given a pile of data, generally from something like a row of data from
the database. It will look at what the class is expecting for the properties
and make sure the data gets typecast prior to assignment to help avoid typing
errors.

Simple Example:

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

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

Nether\Object\Datastore

Provides an array-like object so that items can be stored like arrays but
manipulated with chainable methods. It implements Iterable, ArrayAccess,
and Countable as well as having a bunch of methods for working on the data
as a single collection.

Simple Example:

$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
// )

Trait Overview

Class/Method/Property Info Packages.

These traits when bolted onto any class provided static helper methods for
reading all sorts of information about that class and its members, including
the PHP 8 attributes, to aid in metaprogramming tasks. Classes which extend Prototype already have these applied.

Nether\Object\Package\ClassInfoPackage

Simple Example:

class MyClass {

	use
	Nether\Object\Package\ClassInfoPackage;

}

$ClassInfo = MyClass::GetClassInfo();

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

Nether\Object\Package\MethodInfoPackage

Simple Example:

class MyClass {

	use
	Nether\Object\Package\MethodInfoPackage;

	public function
	GetID():
	int {

		return 0;
	}

}

$Methods = MyClass::GetMethodIndex();

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

Nether\Object\Package\PropertyInfoPackage

Simple Example:

class MyClass {

	use
	Nether\Object\Package\PropertyInfoPackage;

	public int
	$ID = 0;

}

$Props = MyClass::GetPropertyIndex();

foreach($Props as $Prop) {
	print_r($Prop);
}
  • Documentation:
    uri-to-wikipage
netherphp/object | GitHunt