PEARパッケージBBCodeParserhttp : //pear.php.net/package/HTML_BBCodeParser/docs/latest/li_HTML_BBCodeParser.htmlにタグを追加しようとしています。これを行うには、Object.phpを\に配置する必要があると思います。 php5.3.0 \ PEAR \ pear \ HTML \ BBCodeParser\FilterそしてaddFilterを呼び出します。
Object.php
<?php
/*
New filter
@todo Lots
*/
require_once 'HTML/BBCodeParser/Filter.php';
class HTML_BB_CodeParser_Filter_Object extends HTML_BBCodeParser_Filter {
var $_definedTags = array( 'object' => array ( 'htmlopen' => 'object',
'htmlclose' => 'object',
'allowed' => 'all',
'attributes' => array()
)
)
}
?>
extbbcode.php
<?php
/*
The test display page
*/
error_reporting(E_STRICT);
require_once('HTML/BBCodeParser.php');
$parser = new HTML_BBCodeParser();
$parser->addFilter('object');
$parser->setText('[b]bold[/b] [object]test[/object]');
$parser->parse();
$parsed = $parser->getParsed();
echo htmlentities($parsed, ENT_QUOTES). ' | ';
echo $parsed;
?>
extbbcode.phpを表示すると、このエラーが発生します
厳格な基準:非静的メソッドPEAR :: getStaticProperty()は、オンラインのD:\ wamp \ bin \ php \ php5.3.0 \ PEAR \ pear \ HTML \BBCodeParser.phpの互換性のないコンテキストから$thisを想定して、静的に呼び出すべきではありません。 169
$ parser-> addFilter('object');をコメントアウトするとします。行すると、期待どおりに機能します。つまり、有効な出力が生成されます。既存のフィルターを指定することもできます。
$parser->addFilter('basic');
$parser->addFilter('images');
無効なフィルターを使用してaddFilterを呼び出すと(つまり、ファイルが存在しない場合)、「フィルター$filterのロードに失敗しました」というメッセージが表示されます。
誰かが私が間違っていることを見つけることができますか?Object.phpが含まれているように見えますが、これらの奇妙なSTRICTメッセージを生成します。だから私の問題は間違いなくそのファイルにあります。
誰かがこのクラスまたはそのエラーメッセージの経験があり、私を正しい方向に向けることができれば、私はとても幸せです:)
function addFilter($filter)
{
$filter = ucfirst($filter);
if (!array_key_exists($filter, $this->_filters)) {
$class = 'HTML_BBCodeParser_Filter_'.$filter;
@include_once 'HTML/BBCodeParser/Filter/'.$filter.'.php';
if (!class_exists($class)) {
PEAR::raiseError("Failed to load filter $filter", null, PEAR_ERROR_DIE);
}
$this->_filters[$filter] = new $class;
$this->_definedTags = array_merge(
$this->_definedTags,
$this->_filters[$filter]->_definedTags
);
}
}
編集:PEARをローカルのWAMPで動作させることができたので、私が抱えていた別の問題を除外することで質問を単純化できます。