<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之旅 廣告
                ThinkPHP `5.0`開始采用`trait`功能(PHP5.4+)來作為一種擴展機制,可以方便的實現一個類庫的多繼承問題。 > `trait`是一種為類似 PHP 的單繼承語言而準備的代碼復用機制。`trait`為了減少單繼承語言的限制,使開發人員能夠自由地在不同層次結構內獨立的類中復用方法集。`trait`和類組合的語義是定義了一種方式來減少復雜性,避免傳統多繼承和混入類(Mixin)相關的典型問題。 但由于PHP5.4版本不支持`trait`的自動加載,因此如果是PHP5.4版本,必須手動導入`trait`類庫,系統提供了一個助手函數`load_trait`,用于自動加載`trait`類庫,例如,可以這樣正確引入`trait`類庫。 ~~~ namespace app\index\controller; load_trait('controller/Jump'); // 引入traits\controller\Jump class index { use \traits\controller\Jump; public function index() { $this->assign('name','value'); $this->show('index'); } } ~~~ 如果你的PHP版本大于`5.5`的話,則可以省略`load_trait`函數引入`trait`。 ~~~ namespace app\index\controller; class index { use \traits\controller\Jump; public function index() { } } ~~~ 可以支持同時引入多個`trait`類庫,例如: ~~~ namespace app\index\controller; load_trait('controller/Other'); load_trait('controller/Jump'); class index { use \traits\controller\Other; use \traits\controller\Jump; public function index() { } } ~~~ 或者使用 ~~~ namespace app\index\controller; load_trait('controller/Other'); load_trait('controller/Jump'); class index { use \traits\controller\Other,\traits\controller\Jump; public function index() { } } ~~~ > 系統提供了一些封裝好的`trait`類庫,主要是用于控制器和模型類的擴展。這些系統內置的`trait`類庫的根命名空間采用`traits`而不是`trait`,是為了避免和系統的關鍵字沖突。 `trait`方式引入的類庫需要注意優先級,從基類繼承的成員將被 `trait` 插入的成員所覆蓋。優先順序是來自當前類的成員覆蓋了 `trait`的方法,而 `trait`則覆蓋了被繼承的方法。 `trait`類中不支持定義類的常量,在`trait`中定義的屬性將不能在當前類中或者繼承的類中重新定義。 ## 沖突的解決 我們可以在一個類庫中引入多個`trait`類庫,如果兩個`trait`都定義了一個同名的方法,如果沒有明確解決沖突將會產生一個致命錯誤。 為了解決多個`trait`在同一個類中的命名沖突,需要使用 `insteadof`操作符來明確指定使用沖突方法中的哪一個。 以上方式僅允許排除掉其它方法,`as`操作符可以將其中一個沖突的方法以另一個名稱來引入。 更多的關于`trait`內容可以參考[PHP官方手冊](http://php.net/manual/zh/language.oop5.traits.php)。
                  <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>

                              哎呀哎呀视频在线观看