PHP пространства имен (в PHP 5.4) - PullRequest
0 голосов
/ 16 марта 2020

Мне нужна ваша помощь с пространствами имен.

У меня есть такая структура:

/main
    /app
        /files
              /file.php
   /lib
       /Exceptions
             /MyException.php
  config.php

MyException. php


namespace System;

use Monolog\Logger;
use Monolog\Handler\StreamHandler;

/**
 * Define a custom exception class
 */
class MyException extends \Exception{
    // Redefine the exception so message isn't optional
    public function __construct($message, $code = 0, Exception $previous = null,$needLog=false) {
        $message = 'My error: '.$message;
        if($needLog) {
            self::logError($message,$code);
        }
        parent::__construct($message, $code, $previous);
    }

    // custom string representation of object
    public function __toString() {
        return __CLASS__ . ": [{$this->code}]: {$this->message}\n";
    }

    static function logError($message,$code) {
        $log  = new Logger('System');
        $log->pushHandler(new StreamHandler('../../log/SystemLog.log',Logger::ERROR));

        $log->error('Cod.'.$code.' - '.$message);
    }

    public static function launch($message, $code = 0, Exception $previous = null,$needLog=false) {
        new MyException($message,$code,$previous,$needLog);
    }
}

index. php

use Exceptions\System;
MyException::launch('Unexpected answer',1,null,true);

config. php

include_once('/lib/Exceptions/MyException.php');

И ошибка:

(!) Неустранимая ошибка: Класс 'Exceptions \ System \ SystemException' не найден в C: \ wamp64 \ www\myRootFolder \ main \ app \ files \ file. php в строке 109

Возможно, я просто неправильно понимаю, как работают пространства имен, но мне бы очень хотелось чтобы узнать, как все работает здесь, чтобы я мог улучшить свои навыки.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...