Объявление абстрактного свойства из подмножества

Я создаю абстрактный класс Feed Reader для дальнейшего объявления адаптеров для чтения из различных источников данных. Я хотел бы объявить одно из свойств (формат) только в пределах выбранного подмножества (в данном случае json, xml) при определении расширенных классов, т.е.

abstract Class FeedReader {
public $url;
//This is the line where I would like to define the type, but available only from a subset (json or xml).

abstract function getData();
}class BBCFeed extends FeedReader {
public $type = 'json'; //I want this value to be restricted to be only json or xml

function getData() {
//curl code to get the data
}
}

Каков наиболее эффективный (и правильный) способ объявления типа $ в абстрактном классе? Я хочу ограничить тип $ только внутри объявленного подмножества из абстрактного класса.

Спасибо.

3

Решение

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

<?php

abstract class FeedReader
{
public $type;

public function setType($type) {
switch($type)
{
case 'json':
case 'xml':
$this->type = $type;
break;
default:
throw new Exception('Invalid type');
}
}
}

class BBCFeed extends FeedReader
{
public $type;

public function __construct($type)
{
$this->setType($type)
}

function getData()
{
}
}
1

Другие решения

Других решений пока нет …