<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        創建 PSR-4 的 Php 包

        來源:懂視網 責編:小采 時間:2020-11-02 18:01:39
        文檔

        創建 PSR-4 的 Php 包

        創建 PSR-4 的 Php 包:【相關學習推薦:php圖文教程】本文是幫助初學者搭建基礎的 php composer 包, 本項目源碼地址githubpackagist目錄結構和初建準備首先創建一個目錄來存放所有文件, 這里我 命名為 util-demo , 目錄中需要包含兩個目錄 src/, tests/, 所有的代碼
        推薦度:
        導讀創建 PSR-4 的 Php 包:【相關學習推薦:php圖文教程】本文是幫助初學者搭建基礎的 php composer 包, 本項目源碼地址githubpackagist目錄結構和初建準備首先創建一個目錄來存放所有文件, 這里我 命名為 util-demo , 目錄中需要包含兩個目錄 src/, tests/, 所有的代碼

        【相關學習推薦:php圖文教程】

        本文是幫助初學者搭建基礎的 php composer 包, 本項目源碼地址

      1. github
      2. packagist
      3. 目錄結構和初建準備

        首先創建一個目錄來存放所有文件, 這里我 命名為 util-demo , 目錄中需要包含兩個目錄 src/, tests/, 所有的代碼需要放置到 src/ 目錄, 所有的測試文件需要放置到 tests/ 目錄

        初始化文件夾, 并使用 git 初始化項目, 便于進行版本管理

        $ mkdir util-demo
        $ cd util-demo
        $ git init復制代碼

        初始化 composer

        這里假定你已經安裝了 composer, 如果沒有安裝, 請到 getcomposer.org/download/ 進行安裝

        初始化并輸入包名, 這里默認使用 duoli/util-demo 包名

        $ composer init
        
        Welcome to the Composer config generator 
         
        This command will guide you through creating your composer.json config.
        
        Package name (<vendor>/<name>) [duoli/util-demo]: 
        復制代碼

        輸入描述

        Description []: first util package demo復制代碼

        輸入作者名稱, n 跳過

        Author [duoli <zhaody901@126.com>, n to skip]: 
        復制代碼

        設定包的穩定版本, 默認是 stable, 詳細查看 minimum-stability (root-only)

        Minimum Stability []: 
        復制代碼

        安裝類型 : Package Type, 默認是 library

        Package Type (e.g. library, project, metapackage, composer-plugin) []: 
        復制代碼

        License, 協議, 關于協議部分, 你可以選擇自己需要的協議, 阮老師這里有一個閱讀指南, 可以進行參考 如何選擇開源許可證?, 對于協議部分的寫法可以參考 許可協議 license 這里

        License []: 
        復制代碼

        require

        設定三方依賴, 表明當前項目/包是否有依賴于其他包進行開發, 這里選擇 no,

        Define your dependencies.
        
        # 生產依賴
        Would you like to define your dependencies (require) interactively [yes]? 
        復制代碼

        require-dev

        開發依賴, 這里我們加入 phpunit 作為單元測試依賴

        Would you like to define your dev dependencies (require-dev) interactively [yes]?
        
        Search for a package: phpunit
        
        Found 15 packages matching phpunit
        
         [0] phpunit/phpunit 
         ...
         [14] brianium/paratest 
        
        Enter package # to add, or the complete package name if it is not listed: 0
        Enter the version constraint to require (or leave blank to use the latest version): 
        Using version ^8.5 for phpunit/phpunit
        Search for a package: 
        復制代碼

        當不需要額外增加包的時候, 直接回車, 確認安裝包依賴, 初始化完成

        {
         "name": "duoli/util-demo",
         "description" : "first util package demo",
         "require-dev": {
         "phpunit/phpunit": "^8.5"
         },
         "license": "MIT",
         "authors": [
         {
         "name": "duoli",
         "email": "zhaody901@126.com"
         }
         ],
         "require": {}
        }
        
        Do you confirm generation [yes]? 
        
        Would you like to install dependencies now [yes]? yes
        Loading composer repositories with package information
        Updating dependencies (including require-dev)
        Package operations: 29 installs, 0 updates, 0 removals
         - Installing sebastian/version (2.0.1): Downloading (100%) 
         ...... 
         - Installing phpunit/phpunit (8.5.8): Downloading (100%) 
        sebastian/global-state suggests installing ext-uopz (*)
        phpunit/phpunit suggests installing phpunit/php-invoker (^2.0.0)
        Package phpunit/php-token-stream is abandoned, you should avoid using it. No replacement was suggested.
        Writing lock file
        Generating autoload files
        5 packages you are using are looking for funding.
        Use the `composer fund` command to find out more!復制代碼

        上邊初始化完成之后, 我們文件目錄應該如下所示

        .
        ├── composer.json
        ├── composer.lock
        └── vendor復制代碼

        作為包管理來講, 我們需要忽略 composer.lockvendor 文件夾, 因為在項目中使用此包的時候會進行全局的安裝, 不提交是為了不產生冗余代碼.

        我們加入 .gitignore 文件, 加入這兩個文件夾的忽略, 另外由于要生成 phpunit 測試文件, 我們還需要加入 .phpunit.* , 我這里還額外加入了 IDE 的忽略

        .gitignore

        # ide
        .idea
        
        # project
        composer.lock
        vendor/
        
        # phpunit
        .phpunit.*復制代碼

        文件自動加載 autoload

        autoload

        這里是上邊初始化沒有提及到的, autoload 指定了包的加載方式, Composer 可以自動加載包內文件, 但是你需要指定你的文件的加載方式, 這里我們使用的是 psr-4 標準, 詳細的規范可以閱讀 PSR-4 自動加載規范

        這里需要在 composer.json 中追加

         ... "autoload": { "psr-4": { "DuoliUtilDemo": "src", "DuoliUtilDemoTests": "tests"
         }
         }
         ... 
        復制代碼

        因為這個加載是后續添加的, 想要識別需要我們手動運行下 composer dumpautoload, 這樣才可以識別我們添加的命名空間映射

        另這里我額外約定了一個測試的命名空間, 方便對測試文件進行命名空間的目錄識別

        travis 測試集成

        如果打算在GitHub上托管包,一個不錯優點是集成Travis CI,這是一個持續集成應用程序,它會自動運行單元測試文件. 當接受 pr 時,會非常有用,因為你可以快速查看是否所有的測試都通過驗證。

        要與 Travis 集成,添加一個名為 .travis.yml 的文件,并復制以下內容

        language: php
        
        php:
         – 7.0
         – hhvm
        
        before_script:
         – composer self-update
         – composer install –prefer-source –no-interaction –dev
        
        script: phpunit復制代碼

        在這里,不會深入討論使用 Travis 的問題,但這應該是一個很好的開始,你可以自己來進行研究如何使用它.

        編寫代碼

        現在可以編寫代碼了, 打開 src 目錄創建 File.php 文件, 復制如下代碼

        class File{ public function extension($filename) { return pathinfo($filename, PATHINFO_EXTENSION);
         }
        
        }復制代碼

        如果你曾經查看過舊的 PHP 包源碼,可能會發現一個 Duoli/UtilDemo 目錄。PSR-4 不再使用嵌套的目錄結構,而是允許直接在 src 目錄下編寫類

        編寫單元測試

        現在我們已經編寫了包源碼,可以開始編寫一些測試了。PHPUnit 需要一個名為 phpunit.xml 的文件來定義一些設置。在根目錄中創建一個新的phpunit.xml文件,并復制以下代碼:

        <phpunit
         backupGlobals="false"
         backupStaticAttributes="false"
         bootstrap="vendor/autoload.php"
         colors="true"
         convertErrorsToExceptions="true"
         convertNoticesToExceptions="true"
         convertWarningsToExceptions="true"
         processIsolation="false"
         stopOnFailure="false">
         <testsuites>
         <testsuite name="Duoli Util Test Suite">
         <directory suffix=".php">./tests/</directory>
         </testsuite>
         </testsuites></phpunit>復制代碼

        如果不熟悉這個文件中意思,不用擔心,你無需關注設置了哪些內容(當前來講), 這個文件只是定義一些設置和文件應該如何自動加載的約定.

        接下來,在 tests 目錄下,創建一個名為 StrTest.php的文件,并復制以下代碼:

        <?php namespace DuoliUtilDemoTests;
        
        use DuoliUtilDemoFile;
        use PHPUnitFrameworkTestCase;
        
        class FileTest extends TestCase
        {
        
         public function testExtension()
         {
         $extension = File::extension('readme.md');
         $this->assertEquals('md', $extension);
         }
        
        }復制代碼

        打開命令行并運行:

        $ ./vendor/bin/phpunit復制代碼

        PHPUnit 會自動運行測試,并給出一個綠色的 OK (1 test, 1 assertion) 輸出。

        在編寫測試文件時,需要確保測試類繼承了 PHPUnitFrameworkTestCase

        文檔

        最后要做的是創建一個 Readme.md 的文檔。如果打算在 GitHub上托管代碼,這個文件會在代碼頁面顯示出來,目的是描述包以及包如何工作.

        還應該在源代碼中包含一個許可證。默認情況下,你發布的任何東西都是你的版權所有,如果你想讓其他人使用你的代碼,你需要給它一個許可。一個好的選擇是 MIT 許可

        發布到 github 和 Packagist

        現在已經完成了你的包,你可以將它推到 GitHub 和 Packagist。

        GitHub 是一個托管的 git 存儲庫服務,它使得在軟件協作變得非常容易。

        Packagist 是查找和使用 PHP 包的服務商

        要將代碼推送到 GitHub,創建一個新的存儲庫, 然后設定 git 的遠端, 將代碼推上去即可, 命令是

        $ git remote add origin git@github.com:username/demo.git 
        $ git push -u origin master 
        復制代碼

        在 Github 上集成 Packagist 和 Travis, 需要找到設置, 并且在 Webhooks & Services 部分找到這兩個服務, 集成這兩個服務需要授權 github 賬戶并且設置一些簡單的步驟.

        概括

        如果以前從未開發過已發布的 php 包,那么需要考慮很多問題。然而,一旦你操作過不止一次就不至于這么復雜了.

        PHP 的包結構非常簡單,而 PSR-4 使其更加簡單。一旦了解了該結構的每一部分是用于做什么,其他人閱讀 PHP包就會容易很多.

        參考文章

      4. How to create a PSR-4 PHP package
      5. 相關學習推薦:php編程(視頻)

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        創建 PSR-4 的 Php 包

        創建 PSR-4 的 Php 包:【相關學習推薦:php圖文教程】本文是幫助初學者搭建基礎的 php composer 包, 本項目源碼地址githubpackagist目錄結構和初建準備首先創建一個目錄來存放所有文件, 這里我 命名為 util-demo , 目錄中需要包含兩個目錄 src/, tests/, 所有的代碼
        推薦度:
        標簽: 創建 新建 php
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 国产又黄又爽又刺激的免费网址 | 亚洲精品NV久久久久久久久久| 亚洲美女色在线欧洲美女| 男人天堂免费视频| 亚洲人成影院在线无码按摩店| 丁香六月婷婷精品免费观看| JLZZJLZZ亚洲乱熟无码| 成人A毛片免费观看网站| 亚洲日韩在线观看| 中文字字幕在线高清免费电影| 激情97综合亚洲色婷婷五| a级精品九九九大片免费看| 亚洲国产精品无码久久久秋霞2| 成在线人视频免费视频| 亚洲AV成人无码久久精品老人| 久艹视频在线免费观看| 亚洲精品亚洲人成在线麻豆| 国产精品69白浆在线观看免费| 亚洲午夜精品久久久久久app| 国产成人免费永久播放视频平台| 一区免费在线观看| 亚洲AV无码成人精品区天堂| 亚洲免费闲人蜜桃| 日韩欧美亚洲国产精品字幕久久久| 亚洲Av无码国产情品久久| 一个人看的www免费视频在线观看 一个人免费视频观看在线www | 啦啦啦高清视频在线观看免费 | 成年性午夜免费视频网站不卡| 亚洲A∨精品一区二区三区下载| 亚洲国产精品成人久久蜜臀 | 国产精品视频免费观看| 人人狠狠综合久久亚洲| 精品久久久久久亚洲| 67194熟妇在线永久免费观看| 色欲aⅴ亚洲情无码AV| 久久精品国产亚洲一区二区| 免费下载成人电影| 一级毛片免费播放试看60分钟 | 国产99在线|亚洲| 亚洲日韩在线观看免费视频| 最近中文字幕完整免费视频ww |