Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

koriym/Koriym.NullObject

Open more actions menu

Repository files navigation

PHP NullObject

codecov Type Coverage Continuous Integration

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.

interface FooInterface
{
   public function do(): void;
}
$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.

$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.

$loader = require __DIR__ . '/vendor/koriym/null-object/autoload.php';
spl_autoload_register($loader);

or add it to autoload-dev in composer.json.

    "autoload-dev": {
        "files": ["./vendor/koriym/null-object/autoload.php"]
    }

You can create Null Object as follows.

$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.

About

A NullObject generator

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.