@exitialis

Как правильно вызывать методы классов?

Доброго времени суток! В общем разбираюсь сейчас с ООП и работаю с php. Вчера задавал вопрос, как же правильно организовать вызов метода другого класса, не создавая его экземпляра. Мне посоветовали прочитать про SOLID. Я все изучил, и переписал весь код с следованием "заповедей" SOLID. В итоге у меня получилось два класса, которые требуют друг друга, для создания их экземпляров, т.е.
class lkMoney
{
    public $db_array_user = array(); // Массив, содержащий строку из базы с текущим пользователем
    private $db; // Объект базы данных, с которой работаем
    private $bans; // Класс для проверки бана пользователя
    private $user; // Класс для получения текущего пользователя
    private $table_name; // Таблица, в которой будет хранится информация о счете пользователя

    public function __construct(wpdb $db, lkBans $bans, lkUser $user, $table)
    {
        $this->db = $db;
        $this->bans = $bans;
        $this->user = $user;
        $this->table_name = $table;
        if (!$this->getUserInfo()) throw new Exception('Невозможно подключиться к таблице ' . $this->table_name);
    }
...

class lkBans
{
    private $db;
    private $money;

    public function __construct(wpdb $db, lkMoney $money)
    {
        $this->db = $db;
        $this->money = $money;
    }
...

И в самом коде я их создаю
global $wpdb;
    $lkUser = new lkUser($wpdb);
    $lkStatus = new lkStatus($wpdb, $lkUser);
    $lkMoney = new lkMoney($wpdb, $lkBans, $lkUser, 'iconomy');
    $lkBans = new lkBans($wpdb, $lkMoney);
    $lkShop = new lkShop($wpdb, $lkMoney, $lkStatus);

И вот собственно возникает вопрос, а правильно ли я все понял и делаю? Заранее прошу извинить, если вопрос глупый, я просто только разбираюсь в теме. Нагуглить ничего толкого на этот счет не смог, и знакомых, которые могут что-то посоветовать нет, поэтому вновь вынужден написать вопрос сюда. Заранее спасибо за ваши ответы!
  • Вопрос задан
  • 266 просмотров
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Эм... что-то явно пошло не так.

Классу bans не должен быть нужен класс money.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Bloby
Добрый вечер!
Почитайте про:
1) расширение классов "extends"
2) паттерны "Registry" & "Singelton"
3) и наконец про "static" методы и свойства
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы