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

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## 簡介 Composer是PHP的一個依賴管理工具。它允許開發者聲明項目所依賴的代碼庫,并自動為項目安裝這些依賴。Composer的出現極大地簡化了PHP項目的依賴管理過程,提高了項目的穩定性和可維護性。 ### 主要功能 1. **依賴管理**: * Composer可以自動下載和安裝項目所需的依賴庫和框架,確保它們與項目兼容。 * 開發者可以在`composer.json`文件中指定所需的依賴及其版本,Composer會根據這些要求自動解決和安裝依賴。 2. **版本控制**: * Composer使用`composer.lock`文件來鎖定項目的依賴版本,確保每次安裝時獲得相同版本的依賴庫。 * 這有助于避免因依賴版本沖突導致的問題,并確保項目的一致性和可重復性。 3. **自動加載**: * Composer提供了自動加載功能,可以根據項目的依賴關系自動加載所需的類文件。 * 這避免了手動引入和加載庫文件的繁瑣操作,提高了代碼的可維護性和可讀性。 4. **擴展開發**: * Composer也用于PHP擴展的開發和管理。開發者可以使用Composer發布和管理自己的PHP擴展,其他開發者則可以通過Composer輕松地安裝和使用這些擴展。 5. **集成其他工具**: * Composer可以與許多其他工具和框架集成,如PHPUnit(單元測試框架)、Travis CI(持續集成平臺)、Packagist(PHP包倉庫)等。 * 這使得開發者能夠輕松地使用和管理各種工具和框架,提高開發效率和項目質量。 ### 三、Composer的工作原理 Composer的工作原理基于“包”和“庫”的概念。當開發者在項目中聲明依賴時,Composer會查找這些依賴在Packagist等包倉庫中的可用版本,并根據`composer.json`文件中的要求下載和安裝這些依賴。同時,Composer會生成一個`composer.lock`文件來鎖定依賴的版本,以確保項目的穩定性和可重復性。 ## 安裝 下載 ``` curl -sS https://getcomposer.org/installer | php ``` 移動且重命名 ``` mv composer.phar /usr/local/bin/composer ``` 查看版本號 ``` composer -v ______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ / /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ / \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ /_/ Composer version 2.1.14 2021-11-30 10:51:43 ``` ## 國內鏡像 因為訪問國外比較慢,可以使用國內鏡像提供加速下載鏡像。 #### 阿里云 Composer 全量鏡像 鏡像地址:[https://developer.aliyun.com/composer](https://cloud.tencent.com/developer/tools/blog-entry?target=https%3A%2F%2Fdeveloper.aliyun.com%2Fcomposer&source=article&objectId=1555268) 官方地址:[https://developer.aliyun.com/composer](https://cloud.tencent.com/developer/tools/blog-entry?target=https%3A%2F%2Fdeveloper.aliyun.com%2Fcomposer&source=article&objectId=1555268) #### 騰訊云 Composer 全量鏡像 鏡像地址:[https://mirrors.cloud.tencent.com/composer/](https://mirrors.cloud.tencent.com/composer/?from_column=20421&from=20421) 官方地址:[https://mirrors.cloud.tencent.com/help/composer.html](https://mirrors.cloud.tencent.com/help/composer.html?from_column=20421&from=20421) #### 華為 Composer 全量鏡像 鏡像地址:[https://mirrors.huaweicloud.com/repository/php/](https://cloud.tencent.com/developer/tools/blog-entry?target=https%3A%2F%2Fmirrors.huaweicloud.com%2Frepository%2Fphp%2F&source=article&objectId=1555268) 官方地址:[https://mirrors.huaweicloud.com/](https://cloud.tencent.com/developer/tools/blog-entry?target=https%3A%2F%2Fmirrors.huaweicloud.com%2F&source=article&objectId=1555268) #### 交通大學鏡像 鏡像地址:[https://packagist.mirrors.sjtug.sjtu.edu.cn](https://cloud.tencent.com/developer/tools/blog-entry?target=https%3A%2F%2Fpackagist.mirrors.sjtug.sjtu.edu.cn%2F&source=article&objectId=1555268) 官方地址:[https://mirrors.sjtug.sjtu.edu.cn/packagist/](https://cloud.tencent.com/developer/tools/blog-entry?target=https%3A%2F%2Fmirrors.sjtug.sjtu.edu.cn%2Fpackagist%2F&source=article&objectId=1555268) #### Packagist / JP 鏡像地址:[https://packagist.jp](https://cloud.tencent.com/developer/tools/blog-entry?target=https%3A%2F%2Fpackagist.jp%2F&source=article&objectId=1555268) 官方地址:[https://packagist.jp](https://cloud.tencent.com/developer/tools/blog-entry?target=https%3A%2F%2Fpackagist.jp%2F&source=article&objectId=1555268) ### 全局配置(推薦) 所有項目都會使用該鏡像地址。例如使用阿里云鏡像 ``` composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ ``` **取消配置** ``` composer config -g --unset repos.packagist ``` ### 項目配置 僅修改當前工程配置,僅當前工程可使用該鏡像地址: ``` composer config repo.packagist composer https://mirrors.aliyun.com/composer/ ``` 取消配置: ``` composer config --unset repos.packagist ``` 查看當前配置 ``` $ composer config -gl [repositories.packagist.org.type] composer [repositories.packagist.org.url] https://repo.packagist.org ``` ## 項目使用 這里以單元測試包`phpunit/phpunit`為例。 ### 直接引入第三方包 在項目目錄下執行以下命令即可 ``` composer require --dev phpunit/phpunit ``` 安裝記錄 ``` composer-package-template> composer require --dev phpunit/phpunit Cannot use phpunit/phpunit's latest version 11.2.0 as it requires php >=8.2 which is not satisfied by your platform. ./composer.json has been updated Running composer update phpunit/phpunit Loading composer repositories with package information Updating dependencies Lock file operations: 28 installs, 0 updates, 0 removals - Locking doctrine/instantiator (1.5.0) - Locking myclabs/deep-copy (1.11.1) - Locking nikic/php-parser (v5.1.0) - Locking phar-io/manifest (2.0.3) - Locking phar-io/version (3.2.1) - Locking phpunit/php-code-coverage (9.2.31) - Locking phpunit/php-file-iterator (3.0.6) - Locking phpunit/php-invoker (3.1.1) - Locking phpunit/php-text-template (2.0.4) - Locking phpunit/php-timer (5.0.3) - Locking sebastian/code-unit-reverse-lookup (2.0.3) - Locking sebastian/comparator (4.0.8) - Locking sebastian/complexity (2.0.3) - Locking sebastian/diff (4.0.6) - Locking sebastian/environment (5.1.5) - Locking sebastian/exporter (4.0.6) - Locking sebastian/global-state (5.0.7) - Locking sebastian/lines-of-code (1.0.4) - Locking sebastian/object-enumerator (4.0.4) - Locking sebastian/object-reflector (2.0.4) - Locking sebastian/recursion-context (4.0.5) - Locking sebastian/resource-operations (3.0.4) - Locking sebastian/type (3.2.1) - Locking sebastian/version (3.0.2) - Locking theseer/tokenizer (1.2.3) Writing lock file Installing dependencies from lock file (including require-dev) Package operations: 28 installs, 0 updates, 0 removals - Downloading nikic/php-parser (v5.1.0) - Downloading phpunit/phpunit (9.6.19) - Installing sebastian/version (3.0.2): Extracting archive - Installing sebastian/type (3.2.1): Extracting archive - Installing sebastian/resource-operations (3.0.4): Extracting archive - Installing sebastian/recursion-context (4.0.5): Extracting archive - Installing sebastian/object-reflector (2.0.4): Extracting archive - Installing sebastian/object-enumerator (4.0.4): Extracting archive - Installing sebastian/global-state (5.0.7): Extracting archive - Installing sebastian/exporter (4.0.6): Extracting archive - Installing sebastian/environment (5.1.5): Extracting archive - Installing sebastian/diff (4.0.6): Extracting archive - Installing sebastian/comparator (4.0.8): Extracting archive - Installing sebastian/code-unit (1.0.8): Extracting archive - Installing sebastian/cli-parser (1.0.2): Extracting archive - Installing phpunit/php-timer (5.0.3): Extracting archive - Installing phpunit/php-text-template (2.0.4): Extracting archive - Installing phpunit/php-invoker (3.1.1): Extracting archive - Installing phpunit/php-file-iterator (3.0.6): Extracting archive - Installing theseer/tokenizer (1.2.3): Extracting archive - Installing nikic/php-parser (v5.1.0): Extracting archive - Installing sebastian/lines-of-code (1.0.4): Extracting archive - Installing sebastian/complexity (2.0.3): Extracting archive - Installing sebastian/code-unit-reverse-lookup (2.0.3): Extracting archive - Installing phpunit/php-code-coverage (9.2.31): Extracting archive - Installing phar-io/version (3.2.1): Extracting archive - Installing phar-io/manifest (2.0.3): Extracting archive - Installing myclabs/deep-copy (1.11.1): Extracting archive - Installing doctrine/instantiator (1.5.0): Extracting archive - Installing phpunit/phpunit (9.6.19): Extracting archive 7 package suggestions were added by new dependencies, use `composer suggest` to see details. Package sebastian/resource-operations is abandoned, you should avoid using it. No replacement was suggested. Generating autoload files 56 packages you are using are looking for funding. Use the `composer fund` command to find out more! Found 7 security vulnerability advisories affecting 2 packages. Run composer audit for a full list of advisories. Using version ^9.6 for phpunit/phpunit ``` 這種方式安裝不需要預先配置`composer.json`,如果沒有該文件,則自動生成該文件。如下 ``` { "require-dev": { "phpunit/phpunit": "^9.6" } } ``` ### 根據composer.json來安裝第三方包 預先配置`composer.json`,修改配置如下 ```json { "require-dev": { "phpunit/phpunit": "^9.6" } } ``` 如果該文件已經存在,則會把配置添加到該文件中去,這樣當你刪除了`vendor`目錄,就可以使用更新命令來重新生成。 ``` composer install ``` 或者 ``` composer update ``` > 注:只想安裝或者更新某個特定的庫,不想更新它的所有依賴,則可以使用 ``` composer install tinywan/jwt composer update tinywan/jwt ``` 安裝記錄 ``` composer install Installing dependencies from lock file (including require-dev) Verifying lock file contents can be installed on current platform. Nothing to install, update or remove Package sebastian/resource-operations is abandoned, you should avoid using it. No replacement was suggested. Generating autoload files 56 packages you are using are looking for funding. Use the `composer fund` command to find out more! ``` ## 使用安裝包 ## composer.lock 文件 ### 為什么需要 composer.lock 在軟件開發中,依賴關系的管理是復雜且容易出錯的。當你開始一個新項目時,你可能會指定一些庫作為你的項目依賴,比如某個特定的 PHP 框架、日志庫或者其他任何有用的工具。隨著時間的推移,這些庫會更新,引入新的功能、修復已知的問題,或者可能引入一些破壞性的更改(即向后不兼容的更改)。 如果沒有一種機制來鎖定你項目依賴的具體版本,那么在不同的開發環境(比如你的本地機器、同事的機器、持續集成服務器、生產環境)中,安裝的依賴版本可能會有所不同。這可能導致難以追蹤的bug,因為某些功能在一個環境中工作正常,而在另一個環境中則會出現問題。 ### composer.lock 是如何工作的 當你首次運行 composer install 命令時(假設你的項目中已經有一個 `composer.json` 文件指定了依賴),Composer 會根據 `composer.json` 文件中的要求,查找并安裝滿足這些要求的庫。然后,它會將實際安裝的庫的版本號寫入 `composer.lock` 文件中。 之后,無論誰運行 `composer install` 命令,Composer 都會首先檢查 `composer.lock` 文件是否存在。如果文件存在,Composer 將使用 `composer.lock` 文件中指定的版本號來安裝依賴,而忽略 `composer.json` 文件中的版本約束。這意味著,只要 `composer.lock` 文件保持不變,項目的依賴版本就會保持不變。 如果你想要更新項目的依賴(比如為了利用某個庫的新特性或修復),你可以運行 `composer update` 命令。這個命令會根據 `composer.json` 文件中的要求更新依賴,并更新 `composer.lock` 文件以反映新的版本信息。 ### 提交 composer.lock 到版本控制 由于 `composer.lock` 文件對于確保項目依賴的一致性至關重要,因此強烈建議將它提交到你的版本控制系統中(如 Git)。這樣,所有團隊成員都可以使用完全相同的依賴版本,從而減少因依賴版本不同而導致的潛在問題。 可以看出`composer.lock` 文件是 Composer 項目中不可或缺的一部分,它幫助開發者確保項目依賴的一致性和穩定性。
                  <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>

                              哎呀哎呀视频在线观看