https://github.com/koriym/koriym.nullobject
A NullObject generator
https://github.com/koriym/koriym.nullobject
nullobject
Last synced: 5 months ago
JSON representation
A NullObject generator
- Host: GitHub
- URL: https://github.com/koriym/koriym.nullobject
- Owner: koriym
- License: mit
- Created: 2021-02-05T16:51:00.000Z (about 5 years ago)
- Default Branch: 1.x
- Last Pushed: 2025-02-15T13:56:31.000Z (about 1 year ago)
- Last Synced: 2025-03-17T03:34:21.856Z (about 1 year ago)
- Topics: nullobject
- Language: PHP
- Homepage: https://packagist.org/packages/koriym/null-object
- Size: 115 KB
- Stars: 3
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE
- Security: .github/SECURITY.md
Awesome Lists containing this project
README
# PHP NullObject
[](https://codecov.io/gh/koriym/Koriym.NullObject)
[](https://shepherd.dev/github/ray-di/Ray.Aop)

Generates a NullObject from an interface.
It was created for testing and AOP.
## Installation
composer require --dev koriym/null-object
## Getting Started
Instantiate a Null Object from an Interface.
```php
interface FooInterface
{
public function do(): void;
}
```
```php
$nullObject = $this->nullObject->newInstance(FooInterface::class);
assert($nullObject instanceof FooInterface);
$nullObject->do(); // nothing's going to happen
```
`newInstance()` defines a class with `eval`, but use `save()` to save the generated code to a file.
```php
$class = $this->nullObject->save(FooInterface::class, '/path/to/saveDirectory');
assert(new $class instanceof FooInterface);
```
## On the fly
It is also possible to create a null object by simply adding a `Null` suffix to the interface by registering autoloader, If this doesn't sound too wild to you.
```php
$loader = require __DIR__ . '/vendor/koriym/null-object/autoload.php';
spl_autoload_register($loader);
```
or add it to `autoload-dev` in composer.json.
```php
"autoload-dev": {
"files": ["./vendor/koriym/null-object/autoload.php"]
}
```
You can create Null Object as follows.
```php
$nullClass = FooInterface::class . 'Null'; // add Null suffix to the interface
$foo = new $nullClass; // instantiate a NullObject
assert($foo instanceof FooInterface);
```
## Note
Inherited interfaces are not yet supported.