public static function getInstance() { if (is_null(self::$instance)) { self::$instance = new SimpleLog(); } return self::$instance; }
/** * @covers MarketMeSuite\Phranken\Commandline\SimpleLog::log */ public function testLog() { //-------- MULTI ARG -------- ob_start(); $this->object->log('foo', 'bar', 'baz'); $actual = ob_get_clean(); $this->assertSame("foo\nbar\nbaz\n", $actual); //-------- ARRAY -------- ob_start(); $this->object->log(array('foo', 'bar', 'baz')); $actual = ob_get_clean(); $expected = <<<EOT Array ( [0] => foo [1] => bar [2] => baz ) EOT; $this->assertSame($expected, $actual); //-------- NULL or OBJECT -------- ob_start(); $this->object->log(null, new \stdClass()); $actual = ob_get_clean(); $expected = <<<EOT NULL stdClass Object ( ) EOT; $this->assertSame($expected, $actual); //-------- BOOLEANS -------- ob_start(); $this->object->log(true, false, 'a' === 'b'); $actual = ob_get_clean(); $expected = <<<EOT true false false EOT; $this->assertSame($expected, $actual); //-------- INTEGERS -------- ob_start(); $this->object->log(1234, 5678); $actual = ob_get_clean(); $expected = <<<EOT 1234 5678 EOT; $this->assertSame($expected, $actual); }
return $this->log->getType(); } /** * @return string */ public function getMessage() { return $this->log->getMessage(); } /** * @return string */ public function log() { return sprintf('<%s>%s</%s>', $this->getType(), $this->getMessage(), $this->getType()); } } ?> Une erreur s'est glissée dans la définition de la question. L'objectif ici était de présenter le pattern "decorator". L'idée était ici de modifier le comportement de la méthode log. Dans le SimpleLog cette méthode devait renvoyer un format simpliste: "type: message" Le TaggedLog prend en paramètre un objet de type LogInterface et modifie le format de sortie en utilisant un tag: <type>message</type> Cette question n'enlèvera donc aucun point mais peut en donner. <?php $simpleLog = new SimpleLog('un message de log', LogInterface::LOG_WARNING); $taggedLog = new TaggedLog($simpleLog); var_dump($simpleLog->log()); var_dump($taggedLog->log());