Сперва обратите внимание на то, какое у Вас базовое пространство имен: какое-то Ваше или системное?
Первое что меня смущает
$this->_registry['settings'] = new Tools\Settings();
Измени на
$this->_registry['settings'] = new \Tools\Settings();
*я добавил ведущий слэш перед Tools. Таким образом ты говоршь интерпритатору: "Класс Settings, который мне нужен, лежит в подпространстве Tools глобального пространства имен"
И второе, напрмер, твой Tools\Settings
namespace Vendor\Tools;
use Vendor\Core\Loader\AbstractLoader;
class Settings extends AbstractLoader
{
//// ....
}
Поменяй на следующее
namespace Vendor\Tools;
class Settings extends \Vendor\Core\Loader\AbstractLoader
{
//// ....
}
Когда ты наследуешь, именно наследуюешь, нет никакого смысла подключать сторонний namespace через use. Лучше прописать полный путь к базовому классу в заголовке(лично мое мнение). Другое дело, когда ты из стороннего namespace вызываешь классы, причем и не один, тогда да - стоит добавить через use.
UPD:
Увидел твою ошибку. Ты в
use прописываешь путь
до класса, например
use Vendor\Core\Loader\AbstractLoader;
Это
неправильно! В use нужно указывать путь до
namespace. Ты пишешь так:
namespace Vendor\Tools;
use Vendor\Core\Loader\AbstractLoader;
class Settings extends AbstractLoader
{ ///... }
В твоем случае корректно будет так
namespace Vendor\Tools;
use Vendor\Core\Loader;
class Settings extends AbstractLoader { ... }
Используя
use Vendor\Core\Loader
говоришь интерпритатору - импортируй мне все классы из пространства имен Vendor\Core\Loader, для того чтобы я мог использовать их здесь. В твоем варианте
use Vendor\Core\Loader\AbstractLoader
ты говоришь - "Импортируй мне вложенные в класс AbstractLoader классы". Я вообще сомневаюсь, что из абстрактного класса через use можно что-то импортировать. Скорей всего тут у тебя и ругается на 500 ошибку.