在PHP中动态创建对象

时间:2016-03-18 13:26:27

标签: php oop

index.php我正在调用Engine::router()方法(位于app/Engine.php)以从请求中获取字符串,例如'home'并将其放入{{ 1}}。然后我想用这个字符串创建新对象。

$controller

然后我尝试从$className = $controler.'Controller'; 目录中的类名homeController创建一个对象。

controllers/homeController.php

但我仍然得到require 'controllers/'.$className.'.php'; $CONTROLLER = new $className();

重要!当我将“{1}}替换为' homeController' (不是字符串)然后正确创建对象。

Fatal error: Class 'homeController' not found in C:\xampp\htdocs\w8\app\Engine.php on line 67

app / Engine.php(类引擎)的完整代码

$className

我正在使用以下命名空间:

根: $CONTROLLER = new homeController();

目录应用 public static function router() { $request = $_SERVER['REQUEST_URI']; $path = ltrim($_SERVER['REQUEST_URI'], '/'); $requestElements = explode('/', $path); $requestController = $requestElements[0]; $availableControllers = self::getControllers(); if (self::checkController($requestController, $availableControllers)) { $className = $requestController.'Controller'; require 'controllers/'.$className.'.php'; $CONTROLLER = new $className(); } }

目录控制器: index.php (use app\Engine;)

其他问题:为什么当我在Engine.php中Engine.php (namespace app; use controllers\homeController;)而不是homeController.php (namespace controllers;)时,我会得到use controllers;

对于这两种情况,第67行都是use controllers\homeController;Fatal error: Class 'app\homeController' not found in C:\xampp\htdocs\w8\app\Engine.php on line 67

0 个答案:

没有答案