行走于消逝中 2016-12-02 08:44 采纳率: 0%
浏览 1124

PHP使用数组调用类中的方法,出现了错误

<?php
/**

  • 启用session / session_start(); /*
  • 包含初始化文件 / include_once '../../../sys/config/db-cred.inc.php'; /*
  • 为配置信息定义常量 / foreach ( $C as $name => $val ) { define($name, $val); } /*
  • 以表单action为键生成一个关联数组
    */
    $actions = array(
    'event_edit' => array(
    'object' => 'Calendar',
    'method' => 'processForm',
    'header' => 'Location:../../'
    ),

    'user_login' => array(
    'object' => 'Admin',
    'method' => 'processLoginForm',
    'header' => 'Location:../../'
    )
    );
    /**

  • 保证session中的防跨站标记与提交过来的标记一致及请求action合法
    */
    if ( $_POST['token']==$_SESSION['token'] &&
    isset($actions[$_POST['action']]) ) {
    $use_array = $actions[$_POST['action']];
    $obj = new $use_array'object';

    if ( true == $msg=$obj->$use_array['method']() ) {
        header($use_array['header']);
        exit;
    } else {
        die( $msg );
    }
    

    } else {
    //如果token/action非法,重定向到主页
    header("Location:../../");
    exit;
    }

function __autoload($class) {

$filename = "../../../sys/class/class.".$class.".inc.php";
if ( file_exists($filename) ) {
    include_once $filename;
}

}

主要是这个的问题:$obj->$use_array'method'
一到这个步骤就会出现Function name must be a string in E:\qampp\htdocs\Source Files\public\assets\inc\process.inc.php:40 Stack trace: #0 {main} thrown in E:\qampp\htdocs\Source Files\public\assets\inc\process.inc.php on line 40错误。

如果用$obj直接调用该类中的processForm()或者processLoginForm()方法的话,都可以。
请求大神帮忙看看。

  • 写回答

2条回答 默认 最新

  • devmiao 2016-12-02 16:41
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作