PHP3、PHP4都擁有類,但它們的類定義的實在很不像樣,效率還挺難為情的,但資料上說PHP5重新構造了面向對象的支持,儘管並不是完全面向對象,但也算能拿出來見人了。
昨天晚上閒著無聊便弄起這玩意,感覺PHP5增加的類成員權限關鍵字挺好,但問題又來了,似乎還沒一種方便的方式可以定義字段的getter以及setter,傳統的方式是這樣定義的:
class a
{
private $field;
public function get_field() {p.$. { $this->field = $value; }
}
雖然實現起來挺容易,但是說實在的,為一個字段去寫這一堆程式碼還真不爽。 。
於是便思索著是不是有一種更方便的方式來解決,並且可以方便地定義它的類型限制什麼的。
搗鼓了半天(沒辦法,對它不熟。),終於弄出一個類別來解決這個問題:
class abstract_entity
{
private $fields;
private $sys_type ,
"array" => "",
"double" => "", "",
"integer" => "",
"long " => "",
"null" => "real" => "",
"resource" => "",
"string" => ""
// protected function __construct($fields)
{
/********************************
* $fields = 數組(
* 🎜> * "allow_null" = false,
* "value" = 1,
* "type" = "int"
* );
* );
***** ********************************/
$this->fields = $fields; if(array_key_exists($key, $this->fields))
{
return $ else
{
throw new Exception("此屬性不存在");
}
}
public function __set($key, exists($key, $this->fields))
{
$allow_null = $this->fields[$key fields[$key]["type"];
if( array_key_exists($type, $this->sys_type))
{
$type($value);");
if(@$fun ($value))
{
}
else if($allow_null && is_null($value)) fields[$key]["value"] = NULL;
else
{
拋出new Exception("數值類型不正確,必須為" . $type . 🎜> }
else if($type == "混合")
{
🎜> $this->欄位[$key]["value"] = $value; {
}
throw new Exception("該數值不能為NULL值");
}
")
{
if(is_int($value) ) if(is_int($value) ) value))
{
}
非常的下鑠{
$this->欄位中[$key]["value"] = NULL; {為
" . $type . "類型" );
}
}
其他
{與中
))
{ {
$this->fields[$key]["value"] = $value;
}
else if(is_null($value) && $allow_null)
{
$this->fields [$key]["value"] = NULL;
}
{為
;
}
if(is_null($value) && $allow_null)
{ "] = NULL;
}
} {
throw new Exception("屬性不存在");
一個一定格式的陣列方便可以比較定義該欄位的類型、是否允許NULL值以及預設值。
測試程式碼如下:
class test extends abstract_entity
{
public function __construct() array(
「allow_null」=> false,
「類型」=> 「int」
),
“allow_null” => false,
「值」 => 「abc」,
),
「性別」=> 數組(
> false,
"value" => true,
) ,
「ins」=> 數組(
🎜> "值" => $this,
),
"ins1" =>; array( $this,
"type"=> "test"
"ins2" => ; array(
"allow_null" " => NULL,
"type" => "config_media_type" parent::__construct($define);
}
}
$a = new test();
$a->id = 123;
eche $a->id;
迴聲$a->ins1;
$a->ins1 = NULL;
echo is_null($a->ins1);
這裡邊實現了getter以及setter,但是由於時間關係我沒有去實現readonly的功能,其實很簡單,就是加上一個,標識它能不能被改寫就成
以上就介紹了php5下載實作了一個PHP5的getter/setter基底類別的程式碼,包含了php5下載方面的內容,希望對PHP教學有興趣的朋友有幫助。