执行amfphp文件

时间:2017-10-29 17:41:43

标签: php flash amfphp

我的网站上有一个带闪存的页面,但我遇到了问题。 当我尝试执行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('?');

我该如何解决这个问题?

1 个答案:

答案 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的其他两种方法确实是静态的,那么这应该有效。