2

クラスを拡張しようとしています:

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()別のページからマークダウンを実行すると、コードの変更が有効になりません。たとえば、まだ見出しを作成できます。クラスを正しく拡張していますか?

4

1 に答える 1

6

Parsedownsstatic 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


新しい自己と新しい静的も参照してください

于 2015-08-11T01:43:20.603 に答える