我正在构建一个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
}
}
在抽象类中声明$ type的最有效(和正确)方法是什么?我想将$ type限制为仅在抽象类的声明子集中。
谢谢。
答案 0 :(得分:1)
您可以使用类方法来检查值。
<?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()
{
}
}