Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/netherphp/object
Core object for self buliding objects
https://github.com/netherphp/object
nether php
Last synced: 10 days ago
JSON representation
Core object for self buliding objects
- Host: GitHub
- URL: https://github.com/netherphp/object
- Owner: netherphp
- License: bsd-2-clause
- Created: 2014-03-21T17:45:54.000Z (almost 11 years ago)
- Default Branch: redux
- Last Pushed: 2023-03-02T02:44:31.000Z (almost 2 years ago)
- Last Synced: 2024-12-06T03:29:38.089Z (28 days ago)
- Topics: nether, php
- Language: PHP
- Size: 246 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# **Nether Object (netherphp/object)**
[![Packagist](https://img.shields.io/packagist/v/netherphp/object.svg?style=for-the-badge)](https://packagist.org/packages/netherphp/object)
[![Build Status](https://img.shields.io/github/actions/workflow/status/netherphp/object/phpunit.yml?style=for-the-badge)](https://github.com/netherphp/object/actions)
[![codecov](https://img.shields.io/codecov/c/gh/netherphp/object?style=for-the-badge&token=VQC48XNBS2)](https://codecov.io/gh/netherphp/object)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:*
```php
class BaseObject
extends Nether\Object\Prototype {
public int $ID;
public string $Name;
}$RowFromDB = [ 'ID'=> 1, 'Name'=> 'Bob' ];
$Obj = new BaseObject($RowFromDB);
```* More Documentation https://github.com/netherphp/object/wiki/Class:-Nether%5CObject%5CPrototype
---
### `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:*
```php
$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
// )
```* More Documentation:
https://github.com/netherphp/object/wiki/Class:-Nether%5CObject%5CDatastore---
## **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:*
```php
class MyClass {use
Nether\Object\Package\ClassInfoPackage;}
$ClassInfo = MyClass::GetClassInfo();
print_r($ClassInfo);
```* Documentation:
uri-to-wikipage### `Nether\Object\Package\MethodInfoPackage`
*Simple Example:*
```php
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:*
```php
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