doujiu3095 2018-01-28 18:37
浏览 143
已采纳

如何使用动态调用的控制器动态调用函数?

I'm trying to impove my mini web site by implementing a dynamic router so I did the following

<?php

use App\Controller\Autoloader;
use App\Controller\PostController;
require_once("controller/Autoloader.php");

Autoloader::register(); 


$url = $_SERVER['REQUEST_URI'];

$url = explode('/', $url);
array_shift($url);
$base = $url[0];
$url = $url[1];
$page = "";
$function = "";
$controller = "";
 $urlArray = array(
'base' => $base,
'page' => $page,
'parameters' => array(
    "controller" => $controller,
    "function" => $function
)
 );
 $url = explode("?", $url);
 $urlArray["page"] = $url[0];


 $url = explode("&", $url[1]);

 $urlArray['parameters']['controller'] = str_replace("controller=", "",       $url[0]);
 $urlArray['parameters']['function'] = str_replace("action=", "", $url[1]);

 $controllerName = $urlArray['parameters']['controller'];
 $controller = new $controllerName();

 $controller->$urlArray['paremeters']['function']();

Since my url is cleperduv2/index.php?controller=PostController&action=listPosts

I want to call the function listPosts on the controller PostController.php

( ! ) Fatal error: Class 'PostController' not found in C:\wamp64\www\cleperduv2\index.php on line 40

  • 写回答

2条回答 默认 最新

  • douzhang3822 2018-02-06 22:27
    关注

    Looks like it's something with namespacing, Have you tried to call it like this: $namespace = "App\Controller\\"; $controllerName = $namespace . $urlArray['parameters']['controller']; $controller = new $controllerName;

    You can drop down the use namespace statement for the PostController and this way ll of your controllers will be required, declared, and instanciated dynamically as you want !

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊
  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写
  • ¥20 Qcustomplot缩小曲线形状问题
  • ¥15 企业资源规划ERP沙盘模拟
  • ¥15 树莓派控制机械臂传输命令报错,显示摄像头不存在