我的网站上有一个带闪存的页面,但我遇到了问题。 当我尝试执行dircetly文件site.com/amfphp/gateway.php时出现此错误:
致命错误:带有消息的未捕获异常'VerboseException' '不应该调用非静态方法CharsetHandler :: setMethod() 静态地,假设来自不相容的上下文中的$ this ......
function service() {
//Set the parameters for the charset handler
CharsetHandler::setMethod($this->_charsetMethod); // the problem point here
CharsetHandler::setPhpCharset($this->_charsetPhp);
CharsetHandler::setSqlCharset($this->_charsetSql);
//Attempt to call charset handler to catch any uninstalled extensions
$ch = new CharsetHandler('flashtophp');
$ch->transliterate('?');
$ch2 = new CharsetHandler('sqltophp');
$ch2->transliterate('?');
我该如何解决这个问题?
答案 0 :(得分:0)
显然,CharsetHandler类的setMethod函数不是静态的。这意味着除非您拥有该类的实例,否则无法调用它。亚历山大建议在两个实例中的每个实例上调用setMethod是合适的。您的代码应为:
function service() {
//Set the parameters for the charset handler
CharsetHandler::setPhpCharset($this->_charsetPhp);
CharsetHandler::setSqlCharset($this->_charsetSql);
//Attempt to call charset handler to catch any uninstalled extensions
$ch = new CharsetHandler('flashtophp');
$ch->setMethod($this->_charsetMethod);
$ch->transliterate('?');
$ch2 = new CharsetHandler('sqltophp');
$ch2->setMethod($this->_charsetMethod);
$ch2->transliterate('?');
如果您调用staticaly的其他两种方法确实是静态的,那么这应该有效。