Задать вопрос

Как в статических функциях абстрактного класса получить доступ к переменным дочернего класса?

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

Есть класс Article, который наследуется от абстрактного класса Searchable
class Article extends Searchable
{
    public static $indexName = 'article';
    public static $mapping = [
        'properties' => [
            'url' => [
                'type' => 'keyword'
            ],
            'title' => [
                'type' => 'text',
                'boost' => 2
            ],
            'full_text' => [
                'type' => 'text'
            ],
        ]
    ];
}

abstract class Searchable
{
    public static function createIndex()
    {
        $client = ClientBuilder::create()->build();
        $indexExist = $client->indices()->exists(['index' => self::$indexName]);

        if (!$indexExist)
        {
            $params = [
                'index' => self::$indexName,
                'body' => [
                    'mappings' => self::$mapping
                ]
            ];

            $response = $client->indices()->create($params);
        }
    }
}


То есть в будущем я хочу просто вызывать методы следующим образом:
Article::createIndex();

Как мне в классе Searchable получить значения класса Article?
  • Вопрос задан
  • 142 просмотра
Подписаться 2 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
@grinat
Статичные методы это хреновый подход. Наследование тоже.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽