我正在寫一個新的預訂系統,就像我以前寫過的那樣,現在已經有幾年了,看起來以次充好了。我想寫一個非常靈活和便攜的書,我想要使用類。我需要了解課程
我是新來的類和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