Так что специфика моего вопроса о солярии. Я хочу знать, как php может выяснить, какой класс вы имеете в виду, не включая конкретный файл класса.
Почему линия
$client = new Solarium\Client($config);
создать новый клиентский объект? Чем это отличается от включения php-файла напрямую и tryint?
$client = new Client($config);
Я пришел с Java, и я не совсем понимаю, как php выясняет ситуацию за кулисами.
Самому PHP (язык / движок) совершенно не важно, как вы делите свой код на файлы. Вы можете даже хранить все в одном файле, но вы признаете, что это не лучшая идея. PHP не предоставляет общий / стандартный способ автозагрузки файлов на основе имен классов, так как нет структуры по умолчанию.
Это обеспечивает вместо механизм обратного вызова, который позволяет вам включить некоторый файл, когда PHP попросили использовать класс, который еще не определен. И тогда вы можете использовать любую структуру для вашего проекта.
Конечно, будет беспорядок, поэтому сообщество представило некоторые стандарт здесь.
Итак, отвечая на ваш вопрос. На самом деле нет никакой разницы. Результат одинаков для обоих представленных фрагментов. Он просто работает не так, как Java, поэтому может немного сбить с толку. Не существует строгой принудительной связи между классами и файлами, но у нас есть некоторые правила, которым мы стараемся следовать, чтобы избежать проблем.
Других решений пока нет …