🪟 Windows TippsThe Gemini desktop app is now available for Windows(11.09.2026 um 17:06 Uhr)
🪟 Windows TippsAnytype Announces Next-Generation Anytwo Platform(11.09.2026 um 21:27 Uhr)
⚠️ Malware / Trojaner / VirenWindows 11 just dropped the tool ransomware abused, Microsoft says don’t restore WMIC(10.09.2026 um 20:11 Uhr)
⚠️ Malware / Trojaner / VirenVorsicht: Android-Malware verschlüsselt Ihre Handys und nimmt heimlich Fotos auf(11.09.2026 um 09:35 Uhr)
🕵️ SicherheitslückenMicrosoft geht endlich eines der nervigsten Probleme von Windows 11 an(11.09.2026 um 11:58 Uhr)
💾 IT Security ToolsSysinternals Suite(11.09.2026 um 12:00 Uhr)
🪟 Windows TippsThe Gemini desktop app is now available for Windows(11.09.2026 um 17:06 Uhr)
🪟 Windows TippsAnytype Announces Next-Generation Anytwo Platform(11.09.2026 um 21:27 Uhr)
⚠️ Malware / Trojaner / VirenWindows 11 just dropped the tool ransomware abused, Microsoft says don’t restore WMIC(10.09.2026 um 20:11 Uhr)
⚠️ Malware / Trojaner / VirenVorsicht: Android-Malware verschlüsselt Ihre Handys und nimmt heimlich Fotos auf(11.09.2026 um 09:35 Uhr)
🕵️ SicherheitslückenMicrosoft geht endlich eines der nervigsten Probleme von Windows 11 an(11.09.2026 um 11:58 Uhr)
💾 IT Security ToolsSysinternals Suite(11.09.2026 um 12:00 Uhr)

🔧 Programmierung 🕛 vor 1 Jahr 2 Min Lesezeit
0

DI Container on CakePHP4.3 upper

↗ Quelle (dev.to)
🗣️ Stimme:
📑 Inhaltsübersicht




Motivation



I want to inject Service to Command and Controller by DI container.

In addition, Service uses Repository injected.

The document doesn't mention this case like nested injection.






Document



https://book.cakephp.org/4/en/development/dependency-injection.html






How to implement






Service and Repository






CODE
interface SomeRepository {
public getAll(): array;
}









CODE
class SomeRepositoryImpl implements SomeRepository
{
public function getAll(): array
{
print('getAll()');
return [];
}
}









CODE
class SomeService
{
private $someRepository;

public function __construct(SomeRepository $someRepository)
{
$this->someRepository = $someRepository;
}

public function doSomething(): void
{
$this->someRepository->getAll();
}
}









Comamnd






CODE
use Cake\Command\Command;
use Cake\Console\Arguments;
use Cake\Console\ConsoleIo;
use Cake\Console\ConsoleOptionParser;

class SomeCommand extends Command
{
private SomeService $service;

public function __construct(SomeService $service)
{
parent::__construct();
$this->service = $service;
}

public static function getDescription(): string
{
return 'Inject service through provider';
}

public function buildOptionParser(ConsoleOptionParser $parser): ConsoleOptionParser
{
$parser = parent::buildOptionParser($parser);
return $parser;
}

public function execute(Arguments $args, ConsoleIo $io)
{
$this->service->doSomething();
}
}









CODE
use Cake\Core\ContainerInterface;
use Cake\Core\ServiceProvider;

class CommandServiceProvider extends ServiceProvider
{
protected $provides = [
SomeCommand::class,
];

public function services(ContainerInterface $container): void
{
$container
->add(SomeCommand::class)
->addArgument(SomeService::class);
}
}










Controller






CODE
use Cake\Controller\Controller;

class SomeController extends Controller
{
public function index(SomeService $service)
{
$service->doSomething();
print('index()');
}
}









Register to DI container






CODE
use Cake\Core\ContainerInterface;
use Cake\Core\ServiceProvider;

class SomeServiceProvider extends ServiceProvider
{
protected $provides = [
SomeService::class,
];

public function services(ContainerInterface $container): void
{
$container
->add(SomeRepository::class, SomeRepositoryImpl::class);
$container
->add(SomeService::class)
->addArgument(SomeRepository::class);
}
}









CODE
// Application.php
class Application extends BaseApplication
{
// ...
public function services(ContainerInterface $container): void
{
$container->addServiceProvider(new SomeServiceProvider());
$container->addServiceProvider(new ControllerServiceProvider());
}
// ...


Vollständiger Original-Bericht
Ausführliche Details, Code-Beispiele & Hersteller-Stellungnahme auf dev.to.
↗ Original-Artikel auf dev.to lesen
Wie bewertest du diesen Beitrag?
1 Klick Feedback
Teilen mit Netzwerk & Team:

Community-Analysen & Experten-Meinungen 0

Verfasse deine eigene Analyse, teile Workarounds oder diskutiere diesen Vorfall im Blog.
Noch keine Community-Analyse verfasst. Markiere einen Textabschnitt oder klicke oben auf Eigene Analyse verfassen“!
Community Pulse: Relevanz-Einschätzung
1 Klick Experten-Votum
🔴 Akute Relevanz 0%
🟡 In Evaluierung 0%
🟢 Keine Auswirkung 0%
Spannende Innovation 0%
Verwandte Story-Cluster & Quellen (Vektor-KI)
Port 8095 Engine
1 Quelle
The Gemini desktop app is now available for Windows
1 Quelle
Anytype Announces Next-Generation Anytwo Platform
1 Quelle
Windows 11 just dropped the tool ransomware abused, Microsoft says don’t restore WMIC
Ähnliche Beiträge
🔍 Verwandte News

Auch interessante Nachrichten DI Container on CakePHP4.3 upper

Thematisch verwandte Begriffe: Container, CakePHP43, upper · 6 Treffer

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...