в любом случае в invoke и ответственность закрывается одна
в случае паттернов появляется гибкость, да одни плюсы, минусов просто нет... не понимаю вас
вы ошибаетесь, если представить процесс объектом, то как раз его функциональное представление — наиболее лаконичное и целостное представление
а вот так лаконично
class Validator {
public function __invoke($data)
}
$validator($obj)
function validate($data)
validate($obj)
/**
* Retrieve the authenticated user for the incoming request.
*
* @param \Illuminate\Http\Request $request
* @return mixed
*/
public function __invoke(Request $request)
{
if ($user = $this->auth->guard(config('sanctum.guard', 'web'))->user()) {
return $this->supportsTokens($user)
? $user->withAccessToken(new TransientToken)
: $user;
}
if ($token = $request->bearerToken()) {
$model = Sanctum::$personalAccessTokenModel;
$accessToken = $model::findToken($token);
if (! $accessToken ||
($this->expiration &&
$accessToken->created_at->lte(now()->subMinutes($this->expiration)))) {
return;
}
return $this->supportsTokens($accessToken->tokenable) ? $accessToken->tokenable->withAccessToken(
tap($accessToken->forceFill(['last_used_at' => now()]))->save()
) : null;
}
}
return $accessToken->tokenable->withAccessToken(
tap($accessToken->forceFill(['last_used_at' => now()]))->save()
)
Но я все равно не понял :)
А почему мы просто не можем вызвать
SomeClass::someStaticMethodInsteadInvoke()
в чем именно преимущество Invoke перед обычными методами?
// я просто пытаюсь понять, могу ли я где-то применить Invoke в своих проектах, и главное: нужно ли мне это?))
мне не интересно сейчас спорить по поводу терминов.
Для меня удаление 99 из 100 Exception в коде - это удаление exception. Для кого-то это "правильное использование" (хотя для меня это костыли), сути правок не меняет.
дело в том что вы просто нарисовались здесь не принеся ни байта полезной информации. Во мне ли дело или в вас пустословах?
Vitsliputsli, ты ничего не понял.
Тебя что головой роняли в детстве? Я спросил о подходе, а именно как люди делают, гоняют переменные или хранят в свойствах, а вы имбецилы мне тут дичь втираете про мой идеальный код.
Т.е. у вас есть метод:
function method(callable $func)
Вы можете создать мутанта $mut и скармливать его:
$class->method($mut)
а можете создать обычный объект Common $obj с методом methodLikeInvoke:
$class->method([$mut,'methodLikeInvoke'])
или так, как вы писали выше:
$class->method('Common::methodLikeInvoke')
Вариант с мутантом, работает, потому как можно сделать так $mut(). Это чистой воды процедурный подход, вы создали функцию и потом ее вызываете, в код случайно затесались какие-то объекты, но это уже не ООП.
Еще раз, если вы используете процедурный подход, то вопросов нет, но если вы пишите с помощью ООП, то все эти функции из процедурщины нужно заменить на нормальные объекты. Чтото вроде такого:
Все, все в рамках ООП, используются объекты, никакой процедурщины, никаких процедурных функций, который нужно маскировать под объекты, никаких процедурных вызовов, контракты описаны, с указанием типов, никаких callable, которые не несет никакой информации о бизнес-объекте, а просто говорят что это функция, т.е. еще одна часть из процедурного подхода.