diff --git a/Parsedown.php b/Parsedown.php index 1ce5bd3..2be4056 100755 --- a/Parsedown.php +++ b/Parsedown.php @@ -1476,7 +1476,7 @@ class Parsedown return self::$instances[$name]; } - $instance = new self(); + $instance = new static(); self::$instances[$name] = $instance; diff --git a/test/ParsedownTest.php b/test/ParsedownTest.php index 759b8fd..c922ab1 100644 --- a/test/ParsedownTest.php +++ b/test/ParsedownTest.php @@ -136,4 +136,24 @@ EXPECTED_HTML; $parsedownWithNoMarkup->setMarkupEscaped(true); $this->assertEquals($expectedHtml, $parsedownWithNoMarkup->text($markdownWithHtml)); } + + public function testLateStaticBinding() + { + include 'test/TestParsedown.php'; + + $parsedown = Parsedown::instance(); + $this->assertInstanceOf('Parsedown', $parsedown); + + // After instance is already called on Parsedown + // subsequent calls with the same arguments return the same instance + $sameParsedown = TestParsedown::instance(); + $this->assertInstanceOf('Parsedown', $sameParsedown); + $this->assertSame($parsedown, $sameParsedown); + + $testParsedown = TestParsedown::instance('test late static binding'); + $this->assertInstanceOf('TestParsedown', $testParsedown); + + $sameInstanceAgain = TestParsedown::instance('test late static binding'); + $this->assertSame($testParsedown, $sameInstanceAgain); + } } diff --git a/test/TestParsedown.php b/test/TestParsedown.php new file mode 100644 index 0000000..7024dfb --- /dev/null +++ b/test/TestParsedown.php @@ -0,0 +1,5 @@ +