国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答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 包, 本項目源碼地址

  • github
  • packagist
  • 目錄結構和初建準備

    首先創建一個目錄來存放所有文件, 這里我 命名為 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包就會容易很多.

    參考文章

  • How to create a PSR-4 PHP package
  • 相關學習推薦: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
    主站蜘蛛池模板: 国内高清久久久久久久久 | 欧美日韩综合网 | 国产日产精品_国产精品毛片 | 中文字幕综合 | 国产一区在线观看视频 | 国产成人深夜福利短视频99 | 国产精品久久久久9999小说 | 国产免费高清视频在线观看不卡 | 国产高清在线精品一区二区三区 | 黄色免费一级视频 | www.精品| 在线免费黄色 | 在线国产一区二区 | 精品不卡| 国产区网址 | 欧美精品一区二区三区久久 | 国产aⅴ一区二区三区 | 亚洲另类中文字幕 | 成人国产一区 | 成人看免费一级毛片 | 中文字幕在线播放第一页 | 香蕉久久ac一区二区三区 | 亚洲自拍另类 | 国产福利一区二区三区在线视频 | 99久久精品国内 | 亚洲第一免费视频 | 伊人色综合一区二区三区 | 久久久国产一区二区三区 | 亚洲精品一 | 成人精品在线视频 | 欧美日韩国产高清视频 | 四虎精品成人a在线观看 | 麻豆国产| 日本 黄 a | 熟年交尾五十路视频在线播放 | 亚洲色图欧美激情 | 国产精品亚洲综合 | 亚洲欧洲在线视频 | 天堂va欧美ⅴa亚洲va一国产 | 亚洲精品成人 | 色国产精品一区在线观看 |