namespace App\Modules\Billing\Services;
use Quantum\Service\Service;
class InvoiceService extends Service
{
public function send(int $invoiceId): void
{
// business logic
}
}Resolve service classes from subclasses of Quantum\Service\Service.
use App\Modules\Billing\Services\InvoiceService;
$service = service(InvoiceService::class);
$service->send(15);Use this when each call should get its own instance.
$service = service(InvoiceService::class, true);Use shared mode when the same service instance should be reused. The shared cache key is the service class name.
Use the factory directly when constructor values are runtime-specific:
use Quantum\Service\Factories\ServiceFactory;
$service = ServiceFactory::create(InvoiceService::class, [
'tenantId' => $tenantId,
]);service() does not accept custom constructor args.
For shared services, provide runtime args on the first ServiceFactory::get() call that creates the instance.
class InvoiceService extends Service
{
public function __construct(
private MailerService $mailer,
private InvoiceRepository $invoices,
) {
}
}Constructor dependencies are resolved through DI.
service(stdClass::class);This call is accepted for subclasses of Quantum\Service\Service.
Use a concrete service class here.
If you expect reuse, pass true explicitly.
Typos like $service->publsih() raise an exception immediately.