Example #1
0
 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);
    }
Example #3
0
        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());