2015-02-15 3 views
0

Ey ребята, я пытаюсь научиться Dependency Injection и я писал этот код:PHP Dependency Injection выпуск

class User { 
    public $id; 

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

    public function getName() { 
     return 'Alex'; 
    } 
} 

class Article { 
    public $author; 

    public function __construct(User $author) { 
     $this->author = $author; 
    } 

    public function getAuthorName() { 
     return $this->author->getName(); 
    } 
} 

$news = new Article(10); 
echo $news->getAuthorName(); 

Однако я получаю WSOD. Что я сделал в этом не так?

+1

В конструкторе Вы вводите '10' вместо объекта' User'. –

+1

Конструктор 'Article' требует пользователя, а не целого; вместо этого вы должны сделать это: '$ news = new Article (новый пользователь (10)); echo $ news-> getAuthorName(); ' – Jonan

+0

Что означает:' WSOD'? Кроме того, '$ news = new Article (10);' -> '$ news = new Article (новый пользователь (10));' – Rizier123

ответ

1

Вы указали неправильный instance.Use кода ниже

<?php 
class User { 
    public $id; 

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

    public function getName() { 
     return 'Alex'; 
    } 
} 

class Article { 
    public $author; 

    public function __construct(User $author) { 
     $this->author = $author; 
    } 

    public function getAuthorName() { 
     return $this->author->getName(); 
    } 
} 

$news = new Article(new User(10)); 
echo $news->getAuthorName(); //Outputs Alex 

Надеется, что это помогает вам

+0

Да, это сработало, спасибо. –

+1

Добро пожаловать, пожалуйста, просто ответьте на этот вопрос правильно –