diff --git a/NullObject/NullLogger.php b/NullObject/NullLogger.php index aafa327..7f013dc 100644 --- a/NullObject/NullLogger.php +++ b/NullObject/NullLogger.php @@ -3,23 +3,6 @@ namespace DesignPatterns\NullObject; /** - * NullOutput is a example of NullObject pattern. It is not formely a Design - * Pattern by the GoF but it's a schema which appears frequently enough to - * be a pattern. Futhermore it is a really good pattern in my opinion : - * - the code in the client is simple - * - it reduces the chance of null pointer exception - * - less "if" => less test cases - * - * The purpose : every time you have a method which returns an object or null, - * you should return an object or a "NullObject". With NullObject, you don't need - * statement like "if (!is_null($obj)) { $obj->callSomething(); }" anymore. - * - * In this case, this a logger which does nothing. Other examples : - * - null logger of symfony profiler - * - null output in symfony/console - * - null handler in a Chain of Responsiblities pattern - * - null command in a Command pattern - * * Performance concerns : ok there is a call for nothing but we spare an "if is_null" * I didn't run a benchmark but I think it's equivalent. * @@ -29,7 +12,7 @@ namespace DesignPatterns\NullObject; class NullLogger implements LoggerInterface { /** - * @param string $str + * {@inheritdoc} */ public function log($str) { diff --git a/NullObject/README.md b/NullObject/README.md new file mode 100644 index 0000000..1e18d25 --- /dev/null +++ b/NullObject/README.md @@ -0,0 +1,20 @@ +# Null Object + +## Purpose + +NullOutput is a example of NullObject pattern. It is not formally a Design Pattern by the GoF but it's a schema which appears frequently enough to +be a pattern. Furthermore it is a really good pattern in my opinion: + +* the code in the client is simple +* it reduces the chance of null pointer exception +* less "if" => less test cases + +Every time you have a method which returns an object or null, you should return an object or a `NullObject`. With NullObject, you don't need +a statement like `if (!is_null($obj)) { $obj->callSomething(); }` anymore. + +## Examples + +* Symfony2: null logger of profiler +* Symfony2: null output in Symfony/Console +* null handler in a Chain of Responsibilities pattern +* null command in a Command pattern