🧱 Суть

В Laravel часто встречаются два способа обращения к функциональности:

  • -> – работа с объектом
  • :: – обращение к классу (или фасаду)

При этом многие вызовы через :: в Laravel – это не настоящие static-методы, а фасады (Facade).

📦 Проблема

1. Кажется, что Facade – это static-класс

Schema::table(...)

Выглядит как обычный статический вызов, но внутри Laravel работает иначе.

2. Путают :: и ->

Schema::table(...)$user->save()

Оба варианта вызывают методы, но относятся к разным сущностям.

3. Непривычный стиль оформления PHP

class User{}

Кажется странным после JavaScript, где { обычно ставят на той же строке.

✅ Решение

Разделять три понятия:

  • Facade
  • :: и ->
  • стандарты оформления PHP

💻 Код

Facade – это удобная оболочка (прокси) для доступа к сервисам Laravel.

Например:

Cache::get('users');

Laravel внутри делает примерно следующее:

$app->make('cache')->get('users');

То есть Cache – не настоящий static-класс, а прокси к объекту.

Популярные фасады:

  • Schema – работа со схемой БД
  • DB – SQL-запросы
  • Cache – кэш
  • Auth – авторизация
  • Route – маршруты
  • Storage – работа с файлами

:: и ->

Работа с объектом:

$user->save();$user->name;

Работа с классом:

Math::sum();

Настоящий static:

class Math
{
	public static $pi = 3.14;
}
 
Math::$pi;

Стиль оформления PHP

По стандарту PSR открывающая фигурная скобка переносится на новую строку:

class User
{
}

Это официальный стиль оформления PHP, которого придерживается Laravel.

🎯 Вывод

  • Facade – это прокси к сервису, а не настоящий static-класс
  • -> используется для объектов
  • :: используется для классов и фасадов
  • Laravel активно использует оба подхода
  • стиль оформления с переносом { соответствует стандартам PSR

🔗 Связано