首頁 > 後端開發 > php教程 > php5下載 實作了一個PHP5的getter/setter基底類別的程式碼

php5下載 實作了一個PHP5的getter/setter基底類別的程式碼

WBOY
發布: 2016-07-29 08:36:28
原創
890 人瀏覽過

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教學有興趣的朋友有幫助。


相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板