oop — расширить класс в переполнении стека

Я пытаюсь расширить класс:

class CustomParsedown extends Parsedown {
protected function blockComment($Line) { return; }
protected function blockCommentContinue($Line, array $Block) { return; }
protected function blockHeader($Line) { return; }
protected function blockSetextHeader($Line, array $Block = NULL) { return; }
}

function markdown($markdown) {
return CustomParsedown::instance()->setMarkupEscaped(true)->text($markdown);
}

Если я бегу markdown() при уценке с другой страницы изменения в коде не вступают в силу. Например, я все еще могу создать заголовок. Правильно ли я расширяю класс?

2

Решение

Похоже, Parsedowns static function instance() ссылается $instance = new self(); что означает, что он будет создавать новую Parsedown класс, а не ваш расширяющийся класс.

Попробуйте продублировать их метод экземпляра в вашем классе, я также изменил new self в new static,

class CustomParsedown extends Parsedown {
static function instance($name = 'default')
{
if (isset(self::$instances[$name]))
{
return self::$instances[$name];
}
$instance = new static();
self::$instances[$name] = $instance;
return $instance;
}
private static $instances = array();
}

https://github.com/erusev/parsedown/blob/master/Parsedown.php


Смотрите также Новая личность против новой статики

6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]