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

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

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

Есть класс 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?
  • Вопрос задан
  • 138 просмотров
Подписаться 2 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
@grinat
Статичные методы это хреновый подход. Наследование тоже.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы