2016-06-05 2 views
0

Таким образом, специфика моего вопроса касается солярия. Я хочу знать, как php может определить, какой класс вы имеете в виду, не включая конкретный файл класса.Как работает экземпляр софта в стиле php за сценой?

Почему линия

$client = new Solarium\Client($config); 

создать новый объект клиента? Как это отличается в том числе файл PHP непосредственно и tryint сделать

$client = new Client($config); 

Im приходя от Java, и я не совсем понимаю, как PHP фигуры вещи за кулисами.

ответ

1

Сам PHP (язык/движок) не заботится о том, как вы делите свой код на файлы. Вы могли бы даже сохранить все в одном файле, но вы признаете, что это не лучшая идея. PHP не предоставляет общий/стандартный способ автозагрузки файлов на основе имен классов, поскольку структура по умолчанию отсутствует.

Он предоставляет вместо этого callback mechanism, который позволяет вам включать некоторый файл, когда PHP запрашивается для использования класса, который еще не определен. И тогда вы можете использовать любую структуру для своего проекта.

Конечно, там будет беспорядок, поэтому сообщество представило standard here.

Итак, отвечая на ваш вопрос. На самом деле нет никакой разницы. Результат будет таким же для обоих фрагментов, представленных вами. Это просто работает по-другому, чем Java, поэтому может быть немного запутанным. Не существует строгой, принудительной связи между классами и файлами, но у нас есть некоторые правила, которые мы стараемся соблюдать, чтобы избежать проблем.

Смежные вопросы