zoukankan      html  css  js  c++  java
  • ajax + php + Controller 控制所有后台函数调用

    转载请注明出处:http://www.cnblogs.com/ghypnus/p/4645873.html 

    好久没有来这边发布代码了

    总共分成3大部分来完成php的ajax调用逻辑,以下是大致的结构

    第一部分:ajax请求:主要是action这个参数,LoginController是php的类名,login是LoginController这个类中的函数名

    $('#submit').on('click', function (e) {
            e.stopPropagation();
            $.ajax({
                url: "../../controllers/Controller.php",
                data: {
                    action: "LoginController/login",
                    username: username,
                    password: password
                },
                dataType: "text",
                type: 'POST',
                timeout: 10000,
                error: function () {
                    alert("服务器超时");
                },
                success: function (data) {
                        alert(data);
                }
            });
        });

    第二部分:Controller.php,这个文件是调用其他具体的功能类的控制器,起到枢纽作用,主要是通过反射来实现

    <?php
    
    if (!empty($_REQUEST['action'])) {
        try {
            $action = explode('/', $_REQUEST['action']);
            $class_name = $action[0];
            $method_name = $action[1];
            require $class_name . '.php';
            $class = new ReflectionClass($class_name);
            if (class_exists($class_name)) {
                if ($class->hasMethod($method_name)) {
                    $func = $class->getmethod($method_name);
                    $instance = $class->newInstance();
                    $func->invokeArgs($instance, array($_REQUEST));
                    $result = $instance->getResult();
                    echo $result;
                }
            }
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
    }
    ?>

    第三部分:LoginController.php,这个文件是具体的功能类

    <?php
    
    class LoginController {
      
    private $result;
    function LoginController() { //初始化数据库连接等参数 } function login($args) { //具体的登录逻辑 } function getResult() { return $this->result; } } ?>
  • 相关阅读:
    2.六角星绘制
    1.五角星绘制
    Redis
    javaScript
    反射
    区分'方法'和'函数'
    递归,二分法
    匿名函数,排序函数,过滤函数,映射函数,
    生成器,生成器函数,推导式,生成器表达式.
    函数,闭包,迭代器
  • 原文地址:https://www.cnblogs.com/ghypnus/p/4645873.html
Copyright © 2011-2022 走看看