php模块化供前端ajax调用的实现

背景:没有使用php框架
由于临时需求,需要ajax调用php中的方法,简单的写了一个php文件,文件定义了两个方法,如何用ajax分别调用同一个php文件不同的方法。
以下是abc.php文件,我定义的两个方法a方法和b方法

<?php class abc { function a(){ echo something; } function b($args){ echo something; } } } ?>

以下是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)); } } } catch (Exception $exc) { echo $exc->getTraceAsString(); } } ?>

使用ajax调用时,使用如下写法实现只调用abc.php中的a方法:

$.ajax({
         type:"POST",
         url: 'Controller.php?action=abc/a',    
         dataType: 'json',
         success: function(data) {

         }
      });

如果需要传参数,可以这么写来调用:

$.ajax({
         type:"POST",
         url: 'Controller.php',   
         data:{ action=abc/b, 参数1: 123, 参数2: 456} 
         dataType: 'json',
         success: function(data) { }
      });

你可能感兴趣的:(PHP,前端)