<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ## 創建數據對象:data()方法 #### 1. 功能:給模型對象$data賦值,將模型對象轉為數據對象 >[info] 模型對象與數據對象,之間就差一個賦過值$data; #### 2. 方法:data()其源代碼如下: >[info] 本教程如無特別說明:源碼均指:Model.php 類文件中的內容。 文件位置:/thinkphp/library/think/Model.php * 備注:注釋為作者另加,源碼中并沒有 ~~~ /** * 設置數據對象值 * @access public * @param mixed $data 數據或者屬性名 * @param mixed $value 值 * @return $this */ public function data($data, $value = null) //$value可不傳,不給時取默認值 { if (is_string($data)) { //如何$data是字符串,則視為$data數組的鍵名 $this->data[$data] = $value; //給當前類data[$data鍵名]賦值:$value } else { // 清空數據 $this->data = []; if (is_object($data)) { //如參數$data是對象,將$data對象屬性轉關聯數組給當前類的$data[]賦值 //注意:外部調用,僅限公共非靜態屬性可以轉為關聯數組 $data = get_object_vars($data); //對象屬性轉關聯數組 } if (true === $value) { //第二個參數是布爾值true:1,用獲取器方法給$data[]賦值 // 數據對象賦值 foreach ($data as $key => $value) { $this->setAttr($key, $value, $data); } } else { //將$data數組參數,直接綁定到到類的data[]屬性上,完成初始化 $this->data = $data; } } return $this; //返回數據對象 } ~~~ #### 3. 參數與返回值 * 分析源碼可看出,data()方法支持三類參數: | 序號 | 參數 | 說明 | | --- | --- | --- | | 1 | $string / 字符串 | 必須存在第2個參數,第一個是鍵名,第二個是值,用于給數據對象中$data屬性數據元素逐個賦值 | | 2 | $array / 數組 | 用于給對象中的$data屬性批量賦值 | | 3 | $object / 對象 | 將對象轉關聯數組后,批量給$data屬性賦值 | * 返回值:數據對象 #### 4. 實例演示:模型對象中$data屬性賦值 >[info] Staff模型類創建與前面一樣的,目前我們使用一個空的模型類就可以完成測試 * 自定義模型類: Staff.php ~~~ <?php namespace app\index\model; //導入模型類 use think\model; class Staff extends model { //自定義模型類代碼 } ~~~ 1. 逐個賦值:用雙字符串參數實現 >[info] 第1個字符串是數組元素的鍵名,第2個是數組元素的值。 * 通過data方法的重復調用來實現對模型對象$data屬性的逐個賦值 * 控制器:Index.php ~~~ <?php namespace app\index\controller; //導入模型類 use app\index\model\Staff; class Index { public function index(){ //1.創建模型對象$model $model = new Staff(); //2.重復調用模型對象的data()方法,完成對該對象屬性$data的賦值 //賦值成功,則完成模型對象向數據對象的轉換 $model -> data('id','10'); //$data['id'] = 10 $model -> data('name','Peter'); //$data['name'] = 'Peter' $model -> data('age',30); //$data['age'] = 30 //3.查看獲取到了原始數據的模型對象 dump($model); } } ~~~ * 瀏覽器查看結果: tp5.com/index.php/index/index > tp5.com 是我們之前配置好的一個本地域名 ~~~ object(app\index\model\Staff)#5 (28) { //這里略去與本例無關的屬性 ······ ["data":protected] => array(3) { ["id"] => string(2) "10" ["name"] => string(5) "Peter" ["age"] => int(30) } //這里略去與本例無關的屬性 ······ } ~~~ * * * * * 2. 批量賦值:用數組實現 >[info] 我們在代碼中的$data是創建的用來賦值的數組,是數據對象的數據源,注意二者區別 * 控制器:Index.php : ~~~ <?php namespace app\index\controller; //導入模型類 use app\index\model\Staff; class Index { public function index(){ //1.創建模型對象$model $model = new Staff(); //2.創建數組$data,用作數據對象數據源 $data = []; $data['id'] = 1010; $data['name'] = 'Peter'; $data['age'] = 50; //3.調用模型對象data方法,將$data數組賦值該對象的$data屬性 //完成數據對象的創建 $model -> data($data); //3.查看對象 dump($model); } } ~~~ >[warning] 特別提示:數組來實例化模型對象,無法實現逐個賦值。它的每一次操作,都是對模型對象$data屬性的整體賦值。 * * * * * 3. 用對象來實例化模型對象 * 控制器代碼:Index.php : ~~~ <?php namespace app\index\controller; //導入模型類 use app\index\model\Staff; class Index { public function index(){ //1.創建模型對象$model $model = new Staff(); //2.創建標準(通用)對象 $data $data = new \stdClass; //3.給標準對象$data添加屬性 $data -> id = 1001; $data -> name = 'ThinkPHP5'; //4.調用模型對象data方法,將$data對象的屬性逐個賦值給該對象$data屬性 //完成數據對象的創建 $model -> data($data); //3.查看對象 dump($model); } } ~~~ * 瀏覽器查看結果: tp5.com/index.php/index/index > tp5.com 是我們之前配置好的一個本地域名 ~~~ object(app\index\model\Staff)#5 (28) { //這里略去與本例無關的屬性 ······ ["data":protected] => array(2) { ["id"] => string(2) "1001" ["name"] => string(5) "ThinkPHP5" } //這里略去與本例無關的屬性 ······ } ~~~ >[warning] 用對象來實例化創建數據對象,即可以逐個賦值,也可以整體賦值,非常靈活 * * * * * #### 5. 總結: >[success] data()方法創建數據對象,非常直觀和高效,特別是對象參數,顯得更加的高級和優雅,與其它優秀框架非常相似。data方法的三種參數,重點掌握:【數組】
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看