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

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                > TP5終于官方支持composer依賴管理工具,學習過Laravel、Yii、Symfony等國際巨星級框架的碼友們應該感受過composer帶來的快感:只需一個composer require命令,你需要的菜和各種佐料就準備好了! > 根據我個人的理解,TP5的思想就是專注與生產優質的好大米,你得自己整合各種配料,做出你想要的炒飯或者壽司。 > 我在官方群潛伏多時,看到很多人問官方什么時候支持XXX啊?之類的問題,我只想說,到了TP5的時代,你必須先think,然后才能PHP。手握神器composer,為什么不think一下,怎么通過composer把外面優秀的擴展引進來? * * * * * 話不多說,現在講解一下“怎么引進來”: [TOC] ###編寫thinkphp5 composer擴展 已本人的第一道小炒,基于`gregwar/captcha`的驗證碼擴展為例,寫一下我制作TP5擴展的過程: Github:[tp5-captcha](https://github.com/CantonBolo/tp5-captcha) 在`vendor`目錄中建立文件夾`tp5` 打開命令行,切換到剛才建立的`tp5`目錄,運行: ```bash git init captcha ``` 系統會建立的captcha的空倉庫 在命令行中進入captcha目錄,運行: ```bash composer init ``` > Package name輸入:tp5/captcha > Description可以暫時留空 > Author可以暫時輸入n跳過 > Minimum Stability可以跳過 > Package Type可以跳過 > License可以根據自己的要求輸入合適的協議名稱 > Would you like to define your dependencies (require) interactively [yes]由于我的擴展需要依賴`gregwar/captcha`,所以我輸入yes > Search for a package輸入gregwar/captcha,下一步是設置你需要的版本,最新的就可以,直接回車! > 后面幾步暫時可以全部回車執行默認值! 上面的流程執行完后,composer已經為你生成了一個最短小形態的composer.json文件。 ```json { "name": "tp5/captcha", "require": { "gregwar/captcha": "^1.1" } } ``` 接下來就是定義composer的加載規則,也就是composer.json里的`autoload`段,推薦使用`psr-4`和`files`這兩個規則。 > 那么`psr-0`和`classmap`呢? `psr-0`和`classmap`這兩種規則個人建議不要再使用了,我們可以對比一下`psr-0`和`psr-4`的區別: Composer使用PSR-0風格: ``` vendor/ vendor_name/ package_name/ src/ Vendor_Name/ Package_Name/ ClassName.php # Vendor_Name\Package_Name\ClassName tests/ Vendor_Name/ Package_Name/ ClassNameTest.php # Vendor_Name\Package_Name\ClassName ``` Composer使用PSR-4風格: ``` vendor/ vendor_name/ package_name/ src/ ClassName.php # Vendor_Name\Package_Name\ClassName tests/ ClassNameTest.php # Vendor_Name\Package_Name\ClassNameTest ``` 通過對比可以發現使用`psr-4`的目錄結構更加簡明,至于`classmap`,這么雜亂無章的規則就更不要考慮了。psr標準的宗旨是:代碼是寫給人看的,不是寫給機器看的。因此好的PHP項目都遵循psr標準。 在composer package中,類文件通過`psr-4`規則加載,其他的例如配置文件、函數文件、過程文件之類的通過`files`來進行加載。 回到正題,我給項目定的autoload如下: ```json "autoload": { "psr-4": { "tp5\\captcha\\": "src/" //通過tp5\captcha\命名空間加載src目錄里的類文件 }, "files": ['file1.php', 'file2.php'] //如果有不包含類的文件,用files加載 } ``` 然后建立src/Captcha.php文件,采用100%手打代碼工藝: ```php namespace tp5\captcha; use Gregwar\Captcha\CaptchaBuilder; class Captcha extends CaptchaBuilder { } ``` 我沒偷懶,真的就是這么短...........................小精悍。 至此,我已經成功地引gregwar/captcha入TP5了。但是還得測試一下。 ###測試本地package 把所做的更改全部提交到本地倉庫,然后修改項目根目錄的composer.json文件,在repositories段中增加: ```json "tp5/captcha": { "type": "vcs", "url": "./vender/tp5/captcha/" } ``` 然后在命令行中運行: ```bash composer require tp5/captcha ``` composer會從本地倉庫中檢出tp5/captcha,并自動生成加載文件。 試試在項目中調用一下tp5/captcha中定義的類或者函數: ```php new \tp5\captcha\Captcha(); ``` 如果沒有報`Fatal error: class not found`的話,恭喜你,這個package已經可以使用了! 如果對package做了修改,可以運行`composer dump-autoload`重新生成自加載文件,確保你的修改都能引入項目里。 ###讓你的成果走出去 當你的package足夠豐滿,有能力應付各種客人時,不妨試試把你的package發布到packagist,讓更多人受惠!請看下一章:怎么走出去。
                  <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>

                              哎呀哎呀视频在线观看