我正在写一个新的预订系统,就像我以前写过的那样,现在已经有几年了,看起来以次充好了。我想写一个非常灵活和便携的书,我想要使用类。我需要了解课程
我是新来的类和OOP的PHP语言,我以前写过一个类,并且进展顺利。不过,我现在正在为此感到困惑。这是我到目前为止:
class Order
{
protected $require_gender = false;
protected $require_age = false;
protected $require_names = false;
protected $require_address = false;
protected $require_contact = false;
protected $require_dates = false;
protected $require_additional = false;
function __construct()
{
foreach(func_get_args() as $arg)
{
switch($arg)
{
case "names":
case "name": $this->require_names = true; break;
case "age": $this->require_age = true; break;
case "mf":
case "gender": $this->require_gender = true; break;
case "address": $this->require_address = true; break;
case "contact": $this->require_contact = true; break;
case "date":
case "dates": $this->require_dates = true; break;
case "additional": $this->require_additional = true; break;
}
}
}
}
class Person extends Order
{
private $gender;
private $age;
private $names = array('first' => "", 'last' => "", 'full' => "");
private $address = array( '1' => "",
'2' => "",
'3' => "",
'4' => "",
'Postcode' => "",
'Country' => "");
private $contact = array('telephone' => "", 'email' => "");
private $dates = array();
private $additional;
private $active;
function setGender($var) {$this->gender = $var;}
function setAge($var) {$this->age = $var;}
function setNames($var) {$this->names = $var;}
function setAddress($var) {$this->address = $var;}
function setContact($var) {$this->contact = $var;}
function setDates($var) {$this->dates = $var;}
function setAdditional($var) {$this->additional = $var;}
function setActive($var) {$this->actrive = $var;}
}
到目前为止,我猜,这么好。但现在我很困惑。因为我认为所谓的“超类”或父母将是客户的订单。这就是他们正在做的事情,他们正在订购门票。然后,他们需要根据需要添加尽可能多的人。
我也希望(为了使它便于携带)能够设置需求,对于每个预订系统,这是因为需求需要改变。不是每个人都想知道日期或邮政地址。这不会因人而异,而是每次使用此代码。所以我想在逻辑上我会写:
$order = new Order("names","address","dates");
$p = new Person();
然后,我会说我想用names
,address
和dates
的要求设立new Order
。这样,我认为,人物会作出相应的反应,只允许设置这些东西,并只在被要求时处理这些参数。但后来我发现 - 当我创建new Person()
时,它也会自动运行class Orders()
!我不希望它做。我希望Orders()
成为霸主,它规定了所有的要求,并且通常管理整个订单,而人只是在订单中成为一个人。
我不知道我的问题是因为我使用extend
而不是implements
或类似的东西,但有人可以解释我应该改变或下一步做什么吗?我渴望学习。
一个人不是一个订单。 – Gordon 2013-03-07 22:19:13