2013-02-28 8 views
0

У меня 3 класса (Mysqliconn, пользователи и новости).PHP метод класса вызова для другого класса

Mysqliconn.class

Class Mysqliconn { 
..connect to db 
} 

News.class

class News { 
private $db; 

    public function __construct(Mysqliconn $db) { 

    $this->db = $db; 
    } 

    public test() { 
    do something... 
    } 
} 

Users.class

class Users { 
private $db; 

    public function __construct(Mysqliconn $db) { 

    $this->db = $db; 
    } 

    public test2() { 

    do something... 
    } 
} 

В моей странице PHP

$db = new Mysqliconn(); 
$nw = new News($db); 
$us = new Users($db) 

$us->test2(); 
$nw->test(); 

Моей ошибка

Catchable fatal error: Argument 1 
passed to Users::__construct() must be an instance of Mysqliconn, 
none given, called in ....\class\class.news.php 

Теперь в моем классе пользователей, я хотел бы, чтобы вызвать метод класса Новостей, , но я получаю сообщение об ошибке при попытке istantiate класса News внутри класса пользователей.

Как это сделать? Спасибо.

+2

Какая ошибка? Класс не существует? Включили ли вы файл класса? –

+3

Почему вы не вводите свой 'News' класс в свой конструктор' User'? – JamesHalsall

+0

«Пользователи» не имеют смысла. Как у вас есть один «Пользователи»? –

ответ

1

Plz сообщите, какую ошибку вы получаете. В противном случае трудно решить проблему. Но если вы не хотите, чтобы создать экземпляр класса новостной в пользовательском классе вы можете получить к нему доступ, как

class News 
{ 
    // news class 
} 

class Users 
{ 
    public function some_method(News $news){ 
     // work with the $news object 
    } 
} 

$us = new Users(); 
$us->some_method(new News(/*$db*/)); 

Это только основной код, чтобы дать вам представление о том, как вы можете использовать его. В производственной среде вы должны принять много предосторожностей.

+0

Плохая идея. Ваш код даже не работает. И это тоже не сингл. –

+0

Мой плохой. Я отредактировал его. Plz проверить это сейчас .. – Sid

+0

все еще не одноэлемент: удалите 'function instance()' и называет его зависимой инъекцией – Federkun

Смежные вопросы