Есть класс контроллера который подключает мои контроллеры... Вот собственно он PHP: <?php namespace System\Http\Controller; class Controller { protected $go; protected $ControllerName; protected $FunctionName; public function __construct ($ControllerName, $FunctionName) { $this->ControllerName = $ControllerName; $this->FunctionName = $FunctionName; } public function StartRun ($parameters) { $controller = 'App\\Controllers\\'.$this->ControllerName; $controllerObject = new $controller(); // Но какого - то фига с этой конструкцией мне выдаются ошибки... // То есть у меня всё выполняется но и ошибки выдаёт подскажите в чём прикол ? if (method_exists($controller, $this->FunctionName)) { call_user_func_array(array($controllerObject, $this->FunctionName), $parameters); }; } } И есть класс router который отправляет туда аргументы... При загрузке страницы. PHP: <?php /** * Created by PhpStorm. * User: Леонид * Date: 30.04.2016 * Time: 19:55 */ namespace System\Http; use System\Http\Router\Rout; //use System\Http\Controller; use System\Http\Router; use System\Http\Controller\Controller; class Route extends Rout { private $rout; private $project_name = 'App'; private $package_name = 'Controller'; public function __construct() { //Запись маршрутов require_once ROOT.'/App/Route.php'; $this->rout = $Rout->getRout(); } private function getUrl () { if (!empty($_SERVER['REQUEST_URI'])) { return trim($_SERVER['REQUEST_URI'], '/'); } } public function rout() { $uri = $this->getUrl(); $uri = explode('?', $uri); if (array_key_exists($uri[0], $this->rout)) { $segments = explode('@', $this->rout[$uri[0]]); $controllerName = trim($segments[0]); $FunctionName = trim($segments[1]); $controller = new Controller($controllerName, $FunctionName); //Вот собственно здесь отправляю аргументы... $controller->StartRun($segments); } else { echo 'Ошибка 404 '; } } } Собственно сами ошибки которые выводятся Код (Text): Warning: Missing argument 1 for System\Http\Controller\Controller::__construct(), called in /var/www/sosed.ru/www/System/Http/Controller/Controller.php on line 24 and defined in /var/www/sosed.ru/www/System/Http/Controller/Controller.php on line 16 Warning: Missing argument 2 for System\Http\Controller\Controller::__construct(), called in /var/www/sosed.ru/www/System/Http/Controller/Controller.php on line 24 and defined in /var/www/sosed.ru/www/System/Http/Controller/Controller.php on line 16 Notice: Undefined variable: ControllerName in /var/www/sosed.ru/www/System/Http/Controller/Controller.php on line 18 Notice: Undefined variable: FunctionName in /var/www/sosed.ru/www/System/Http/Controller/Controller.php on line 19 Привет я GABRIEL // То есть видим тут код отрабатывается... То есть контроллер мой подключается но ошибок куча...
Ты тут случайно не этот конструктор вызываешь без аргументов? По идее ты же наследуешь от класса System\Http\Controller
PHP: $controller = 'App\\Controllers\\'.$this->ControllerName; $controllerObject = new $controller(); Нет вот же Не наследую, а говорю в каком пространстве он крутится. Если я правильно понимаю пространство имён то конструкция namespace а\тут\пространство\класса\служитДляОпределенияЕгоПространства И в дальнейшем по ним можно автоподгружать классы... Короче ошибка вообще была в другом файле ща покажу. Вот сам вид контроллера. PHP: namespace App\Controllers; use System\Http\Controller\Controller; class MainController extends Controller { public function index() { echo '<p align="center">Привет я GABRIEL</p>'; return TRUE; } } Так как он наследует класс Controller, соответственно И наследует его метод создания экземпляра класса, т.е. Он вызывает при создании конструктор, а я не посылаю не одного аргумента при вызове, а они там есть вот он и ругается Ё)
Я тебе про это наследование и сказал. Что ты получаешь ошибку тут new $controller(); так как вызываешь конструктор который наследовался от __construct ($ControllerName,$FunctionName)
Да ты мне помог очень) Я сперва не вьехал просто, а потом сидел думал, и тут допёр, что я не сделал глупость Спасибо, и лайк тебе)