<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 讀取器 前面讀取用戶生日的時候,使用了`date`方法進行日期的格式處理輸出,但是每次讀取數據后都需要這樣處理就顯得非常麻煩。 使用讀取器功能就可以簡化類似的數據處理操作,例如,我們給`User`模型添加讀取器的定義方法。 ``` <pre class="calibre18"> ``` <span class="hljs-operator"><span class="hljs-number"><?php</span><span class="hljs-keyword">namespace</span> <span class="hljs-title">app</span>\<span class="hljs-title">index</span>\<span class="hljs-title">model</span>; <span class="hljs-keyword">use</span> <span class="hljs-title">think</span>\<span class="hljs-title">Model</span>; <span class="hljs-operator"><span class="hljs-keyword">class</span> <span class="hljs-title">User</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">Model</span></span>{ <span class="hljs-comment">// birthday讀取器</span><span class="hljs-keyword">protected</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">getBirthdayAttr</span><span class="hljs-number">(<span class="hljs-regexp">$birthday</span>)</span></span>{ <span class="hljs-keyword">return</span> date(<span class="hljs-string">'Y-m-d'</span>, <span class="hljs-regexp">$birthday</span>); } }</span> ``` ``` 這里,我們添加了一個`getBirthdayAttr`讀取器方法用于讀取`User`模型的`birthday`屬性的值,該方法會在讀取birthday屬性值的時候自動執行。 讀取器方法的命名規范是: > ### get + 屬性名的駝峰命名+ Attr 所以,`getBirthdayAttr`讀取器讀取的是`birthday`屬性,而`getUserBirthdayAttr` 讀取器讀取的則是`user_birthday`屬性。 定義完修改器后,修改控制器的`read`操作方法如下: ``` <pre class="calibre18"> ``` <span class="hljs-comment">// 讀取用戶數據</span><span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">read</span><span class="hljs-number">(<span class="hljs-regexp">$id</span>=<span class="hljs-string">''</span>)</span></span>{ <span class="hljs-regexp">$user</span> = UserModel::get(<span class="hljs-regexp">$id</span>); <span class="hljs-keyword">echo</span> <span class="hljs-regexp">$user</span>->nickname . <span class="hljs-string">'<br/>'</span>; <span class="hljs-keyword">echo</span> <span class="hljs-regexp">$user</span>->email . <span class="hljs-string">'<br/>'</span>; <span class="hljs-keyword">echo</span> <span class="hljs-regexp">$user</span>->birthday . <span class="hljs-string">'<br/>'</span>; } ``` ``` 訪問URL地址 ``` <pre class="calibre18"> ``` <span class="hljs-string">http:</span> <span class="hljs-comment">//tp5.com/user/1</span> ``` ``` 最后的輸出結果為: ``` <pre class="calibre18"> ``` 流年 thinkphp@qq.com <span class="hljs-number">1977</span>-<span class="hljs-number">03</span>-<span class="hljs-number">05</span> ``` ``` 讀取器還可以定義讀取數據表中不存在的屬性,例如把原始生日和轉換的格式分開兩個屬性`birthday`和`user_birthday`,我們只需定義`user_birthday`屬性的讀取器方法: ``` <pre class="calibre18"> ``` <span class="hljs-operator"><span class="hljs-number"><?php</span><span class="hljs-keyword">namespace</span> <span class="hljs-title">app</span>\<span class="hljs-title">index</span>\<span class="hljs-title">model</span>; <span class="hljs-keyword">use</span> <span class="hljs-title">think</span>\<span class="hljs-title">Model</span>; <span class="hljs-operator"><span class="hljs-keyword">class</span> <span class="hljs-title">User</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">Model</span></span>{ <span class="hljs-comment">// user_birthday讀取器</span><span class="hljs-keyword">protected</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">getUserBirthdayAttr</span><span class="hljs-number">(<span class="hljs-regexp">$value</span>,<span class="hljs-regexp">$data</span>)</span></span>{ <span class="hljs-keyword">return</span> date(<span class="hljs-string">'Y-m-d'</span>, <span class="hljs-regexp">$data</span>[<span class="hljs-string">'birthday'</span>]); } }</span> ``` ``` 這里的讀取器方法使用了第二個參數,表示傳入所有的屬性數據。因為原始的`user_birthday`屬性數據是不存在的,所以我們需要通過`data`參數獲取。 read操作方法修改為: ``` <pre class="calibre18"> ``` <span class="hljs-comment">// 讀取用戶數據</span><span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">read</span><span class="hljs-number">(<span class="hljs-regexp">$id</span>=<span class="hljs-string">''</span>)</span></span>{ <span class="hljs-regexp">$user</span> = UserModel::get(<span class="hljs-regexp">$id</span>); <span class="hljs-keyword">echo</span> <span class="hljs-regexp">$user</span>->nickname . <span class="hljs-string">'<br/>'</span>; <span class="hljs-keyword">echo</span> <span class="hljs-regexp">$user</span>->email . <span class="hljs-string">'<br/>'</span>; <span class="hljs-keyword">echo</span> <span class="hljs-regexp">$user</span>->birthday . <span class="hljs-string">'<br/>'</span>; <span class="hljs-keyword">echo</span> <span class="hljs-regexp">$user</span>->user_birthday . <span class="hljs-string">'<br/>'</span>; } ``` ``` 當刷新頁面的時候,最終輸出的結果為: ``` <pre class="calibre18"> ``` 流年 thinkphp@qq.com <span class="hljs-number">226339200</span><span class="hljs-number">1977</span>-<span class="hljs-number">03</span>-<span class="hljs-number">05</span> ``` ``` ## 修改器 由于`birthday`屬性是時間戳(整型)格式的,因此我們必須在寫入數據前進行時間戳轉換,前面使用的方法是每次賦值的時候進行轉換處理: ``` <pre class="calibre18"> ``` <span class="hljs-regexp">$user</span>[<span class="hljs-string">'birthday'</span>] = strtotime(<span class="hljs-string">'2015-04-02'</span>); ``` ``` 為了避免每次都進行日期格式的轉換操作,可以定義修改器方法來自動處理,修改`User`模型如下: ``` <pre class="calibre18"> ``` <span class="hljs-operator"><span class="hljs-number"><?php</span><span class="hljs-keyword">namespace</span> <span class="hljs-title">app</span>\<span class="hljs-title">index</span>\<span class="hljs-title">model</span>; <span class="hljs-keyword">use</span> <span class="hljs-title">think</span>\<span class="hljs-title">Model</span>; <span class="hljs-operator"><span class="hljs-keyword">class</span> <span class="hljs-title">User</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">Model</span></span>{ <span class="hljs-comment">// 讀取器</span><span class="hljs-keyword">protected</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">getUserBirthdayAttr</span><span class="hljs-number">(<span class="hljs-regexp">$birthday</span>, <span class="hljs-regexp">$data</span>)</span></span>{ <span class="hljs-keyword">return</span> date(<span class="hljs-string">'Y-m-d'</span>, <span class="hljs-regexp">$data</span>[<span class="hljs-string">'birthday'</span>]); } <span class="hljs-comment">// birthday修改器</span><span class="hljs-keyword">protected</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">setBirthdayAttr</span><span class="hljs-number">(<span class="hljs-regexp">$value</span>)</span></span>{ <span class="hljs-keyword">return</span> strtotime(<span class="hljs-regexp">$value</span>); } }</span> ``` ``` 修改器方法的命名規范是: > ### set + 屬性名的駝峰命名+ Attr 所以,`setBirthdayAttr`方法修改的是`birthday`屬性,而`setUserBirthdayAttr` 方法修改的則是`user_birthday`屬性。 控制器的`add`操作方法修改如下: ``` <pre class="calibre18"> ``` <span class="hljs-comment">// 新增用戶數據</span><span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">add</span><span class="hljs-number">()</span></span>{ <span class="hljs-regexp">$user</span> = <span class="hljs-keyword">new</span> UserModel; <span class="hljs-regexp">$user</span>->nickname = <span class="hljs-string">'流年'</span>; <span class="hljs-regexp">$user</span>->email = <span class="hljs-string">'thinkphp@qq.com'</span>; <span class="hljs-regexp">$user</span>->birthday = <span class="hljs-string">'1977-03-05'</span>; <span class="hljs-keyword">if</span> (<span class="hljs-regexp">$user</span>->save()) { <span class="hljs-keyword">return</span> <span class="hljs-string">'用戶[ '</span> . <span class="hljs-regexp">$user</span>->nickname . <span class="hljs-string">':'</span> . <span class="hljs-regexp">$user</span>->id . <span class="hljs-string">' ]新增成功'</span>; } <span class="hljs-keyword">else</span> { <span class="hljs-keyword">return</span> <span class="hljs-regexp">$user</span>->getError(); } } ``` ``` 訪問URL地址: ``` <pre class="calibre18"> ``` http://tp5.com/<span class="hljs-operator">user</span>/<span class="hljs-operator">add</span> ``` ``` 最后的輸出結果為: ``` <pre class="calibre18"> ``` 用戶<span class="hljs-operator">[ 流年:10 ]</span>新增成功 ``` ``` 接著我們訪問 ``` <pre class="calibre18"> ``` <span class="hljs-string">http:</span> <span class="hljs-comment">//tp5.com/user/10</span> ``` ``` 頁面輸出結果為: ``` <pre class="calibre18"> ``` 流年 thinkphp@qq.com <span class="hljs-number">1977</span>-<span class="hljs-number">03</span>-<span class="hljs-number">05</span> ``` ``` 通過定義修改器和讀取器,完成了時間戳方式存儲的`birthday`屬性的寫入和讀取的自動處理。
                  <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>

                              哎呀哎呀视频在线观看