Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save omarkdev/2d7f0c05edfa46b6449928621dbe5b76 to your computer and use it in GitHub Desktop.
Save omarkdev/2d7f0c05edfa46b6449928621dbe5b76 to your computer and use it in GitHub Desktop.
<?php
class UserRepository
{ }
class UserController {
private $userRepository;
public function __construct(UserRepository $repository)
{
$this->userRepository = $repository;
}
}
$constructorReflected = new ReflectionMethod(UserController::class, '__construct');
$constructorParameters = $constructorReflected->getParameters();
$argumentsToConstruct = [];
foreach ($constructorParameters as $parameter) {
$name = $parameter->getClass()->name;
var_dump($name);
// string(14) "UserRepository"
$instance = new $name();
var_dump($instance);
// object(UserRepository)#3 (0) {
//}
$argumentsToConstruct[] = $instance;
}
$userController = new UserController(...$argumentsToConstruct);
var_dump ($userController);
// object(UserController)#4 (1) {
// ["userRepository":"UserController":private]=>
// object(UserRepository)#3 (0) {
// }
//}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment