- Jaka jest prawidłowa praktyka w posługiwaniu się klasami, które zawierają "static" ? Czy
praktykuje się tworzenie klasy która zwiera część pól statycznych, a część zwykłych oraz tworzenie instancji takiej klasy?
Moim zdaniem oba podejścia mają te same wady, użycie static wprowadza pewien globalny stan który ciężko kontrolować i testować.
- W jakich przypadkach powinno się stosować klasy, które są w pełni statyczne ?
Myślę, że dobrym przykładem może być metoda wytwórcza, czy tam fabryka, czasem można spotkać się z taką implementacją:
class FancyService {
private $repository;
public function __construct(FancyRepository $repository)
{
$this->repository = $repository;
}
}
class FancyServiceFactory {
public static function createInstance() : FancyService
{
$repository = new FancyRepository();
return new FancyService($repository);
}
$service = FancyServiceFactory::createInstance();
Choć spokojnie można zrealizować podobną fabrykę bez użycia czystej klasy statycznej.