@ALonUa

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

У меня есть абстрактный класс Language:
abstract class Language extends SQLite3
{
    public string $name;
    
    public array $dictionary;

    function __construct(string $path, string $name)
    {
        $this->open($path);
        $this->name = $name;
    }
}

От него наследуются Javascript
class Javascript extends Language
{
    public array $dictionary = [];

    public string $name = "JavaScript";

    function __construct()
    {
        $this->open("../vanilla/javascript.db");
        $q = $this->query("SELECT lexem FROM language");
        
        while($r = $q->fetchArray())
        {
            array_push($this->dictionary,$r);
        }
    }
    
}

и CustomLanguage.
class CustomLanguage extends Language{

    public function addLexem()
    {
        
    }
    
}

Класс Javascript является синглтоном и должен вести себя одинаково везде, но у меня возникло подозрение, что я что-то делаю не так с классом Javascript. Если тут есть гуру ООП PHP, обьясните мне, джуну, нормально ли такая реализация классов и не будут ли меня бить тапками за такое?
  • Вопрос задан
  • 200 просмотров
Решения вопроса 1
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
у меня возникло подозрение, что я что-то делаю не так с классом Javascript

расскажи сеньору антонио, где тебя трогали эти грязные миддлы? тут проблем на пару лекций:
1. именование
2. вшитые значения
3. преждевременная загрузка
4. индусский код
5. и т.д.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Akela_wolf
Extreme Programmer
Начну с самого главного: создав такую иерархию наследования вы написали Language является SQLite3
Really? Собственно из этого решения в дальнейшем будут торчать все возможные проблемы, парочка невозможных и одна невероятная.

Не злоупотребляйте наследованием. В данном случае правильное решение - композиция.
Ответ написан
Ваш ответ на вопрос

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

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