中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

composer怎么安裝

發布時間:2021-04-25 09:32:56 來源:億速云 閱讀:225 作者:小新 欄目:軟件技術

小編給大家分享一下composer怎么安裝,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

關于composer一些學習和理解

Composer 不是一個包管理器。是的,它涉及 "packages" 和 "libraries",但它在每個項目的基礎上進行管理,在你項目的某個目錄中(例如 vendor)進行安裝。默認情況下它不會在全局安裝任何東西。因此,這僅僅是一個依賴管理。

這種想法并不新鮮,Composer 受到了 node's npm 和 ruby's bundler 的強烈啟發。而當時 PHP 下并沒有類似的工具。

Composer 將這樣為你解決問題:

  • 你有一個項目依賴于若干個庫。

  • 其中一些庫依賴于其他庫。

  • 你聲明你所依賴的東西。

  • Composer 會找出哪個版本的包需要安裝,并安裝它們(將它們下載到你的項目中)。

因為laravel是使用composer管理的,所以一切以laravel為基礎。

下載安裝composer

這里補充的是:

  1. 因為某些原因,訪問國外的composer資源網站很慢,導致composer install或者update的時候經常連接超時而出錯,所以改為中國鏡像

    全局:
    composer config -g repo.packagist composer https://packagist.phpcomposer.com
    
    局部項目(需要在項目當前目錄下執行):
    composer config repo.packagist composer https://packagist.phpcomposer.com

執行完命令后會在composer.json文件里面增加這段,這樣就代表添加中國鏡像成功了,以后執行composer install或者update之類的命令的時候就會優先使用這個鏡像

    "repositories": {
      "packagist": {
        "type": "composer",
        "url": "https://packagist.phpcomposer.com"
      }
    }

composer selfupdate來保持composer工具本身的版本更新

關于composer.json文件

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": {  //這里是告訴composer必須要安裝的項目,相當于生產環境
        "php": ">=5.5.9",
        "laravel/framework": "5.2.*",  //require 需要一個 包名稱,這個就是包名稱
        "laravelcollective/html": "5.2.*",
        "yuanchao/laravel-5-markdown-editor": "dev-master"
    },
    "require-dev": {  //這個是開發需要安裝的項目,相當于開發環境,可以通過-no-dev來取消安裝這個項目里面的包
        "fzaninotto/faker": "~1.4",
        "mockery/mockery": "0.9.*",
        "phpunit/phpunit": "~4.0",
        "symfony/css-selector": "2.8.*|3.0.*",
        "symfony/dom-crawler": "2.8.*|3.0.*"
    },
    "autoload": {
        "classmap": [
            "database"
        ],
        "psr-4": {
            "App\\": "app/"
        }
    },
    "autoload-dev": {
        "classmap": [
            "tests/TestCase.php"
        ]
    },
    "scripts": {
        "post-root-package-install": [
            "php -r \"copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "php artisan key:generate"
        ],
        "post-install-cmd": [
            "Illuminate\\Foundation\\ComposerScripts::postInstall",
            "php artisan optimize"
        ],
        "post-update-cmd": [
            "Illuminate\\Foundation\\ComposerScripts::postUpdate",
            "php artisan optimize"
        ]
    },
    "config": {
        "preferred-install": "dist"
    }
}

包名稱的版本

確切的版本號--------1.0.2---------你可以指定包的確切版本。

范圍-------->=1.0 >=1.0,<2.0 >=1.0,<1.1|>=1.2--------通過使用比較操作符可以指定有效的版本范圍。 有效的運算符:>、>=、<、<=、!=。你可以定義多個范圍,用逗號隔開,這將被視為一個邏輯AND處理。一個管道符號|將作為邏輯OR處理。 AND 的優先級高于 OR。

通配符--------1.0.*--------你可以使用通配符*來指定一種模式。1.0.*與>=1.0,<1.1是等效的。

賦值運算符--------~1.2--------這對于遵循語義化版本號的項目非常有用。~1.2相當于>=1.2,<2.0。

我們需要重點關注通配符和波浪符,通配符很好理解,波浪符有點拗口,~ 最好用例子來解釋: ~1.2 相當于 >=1.2,<2.0(標記你所依賴的最低版本),而 ~1.2.3 相當于 >=1.2.3,<1.3。(指定最低版本,但允許版本號的最后一位數字上升。)語義化很難懂,但是直接看例子是可以知道怎么用的

基本用法

composer是通過讀取composer.json和composer.lock文件來進行安裝包的

在安裝依賴后,Composer 將把安裝時確切的版本號列表寫入 composer.lock 文件。這將鎖定改項目的特定版本。因為 install 命令將會檢查鎖文件是否存在,如果存在,它將下載指定的版本(忽略 composer.json 文件中的定義)。如果不存在 composer.lock 文件,Composer 將讀取 composer.json 并創建鎖文件。

一般的使用用法有:

  1. composer install  (install 命令從當前目錄讀取 composer.json 文件,處理了依賴關系,并把其安裝到 vendor 目錄下。)

  2. composer install XXXX  (這是單獨安裝某些包的時候使用)

  3. composer update (為了獲取依賴的最新版本,并且升級 composer.lock 文件,)

  4. composer update XXX (類似)

    --prefer-source: 下載包的方式有兩種: source 和 dist。對于穩定版本 composer 將默認使用 dist 方式。而 source 表示版本控制源 。如果 --prefer-source 是被啟用的,composer 將從 source 安裝(如果有的話)。如果想要使用一個 bugfix 到你的項目,這是非常有用的。并且可以直接從本地的版本庫直接獲取依賴關系。
    --prefer-dist: 與 --prefer-source 相反,composer 將盡可能的從 dist 獲取,這將大幅度的加快在 build servers 上的安裝。這也是一個回避 git 問題的途徑,如果你不清楚如何正確的設置。
    --dry-run: 如果你只是想演示而并非實際安裝一個包,你可以運行 --dry-run 命令,它將模擬安裝并顯示將會發生什么。
    --dev: 安裝 require-dev 字段中列出的包(這是一個默認值)。
    --no-dev: 跳過 require-dev 字段中列出的包。
    --no-scripts: 跳過 composer.json 文件中定義的腳本。
    --no-plugins: 關閉 plugins。
    --no-progress: 移除進度信息,這可以避免一些不處理換行的終端或腳本出現混亂的顯示。
    --optimize-autoloader (-o): 轉換 PSR-0/4 autoloading 到 classmap 可以獲得更快的加載支持。特別是在生產環境下建議這么做,但由于運行需要一些時間,因此并沒有作為默認值。
  5. composer require(require 命令增加新的依賴包到當前目錄的 composer.json 文件中。但并不即可更新)

  6. composer dump-autoload(某些情況下你需要更新 autoloader,例如在你的包中加入了一個新的類。)

自動加載

composer的自動加載會生產這個文件vendor/autoload.php,然后調用這個文件就能夠獲得文件里面的類的自動加載

自動加載只支持 PSR-4和 PSR-0兩種命名方式

Under the psr-4 key you define a mapping from namespaces to paths, relative to the package root. 

{
    "autoload": {
        "psr-4": {
            "Monolog\\": "src/",  //這里寫法其實差不多,但是展現的意義并不相同,psr4會設定一個命名空間作為包的根目錄,舉例這行的意思是src/目錄映射成為Monolog\\根目錄,那么調用這個包的時候寫Monolog\Bar\Baz,其實自動加載就會去這里src/Bar/Baz.php找類文件,然后加載
            "Vendor\\Namespace\\": ""
        }
    }
}

在 psr-0 key 下你定義了一個命名空間到實際路徑的映射(相對于包的根目錄)
{
    "autoload": {
        "psr-0": {
            "Monolog\\": "src/",  //這里的意思是src/目錄映射為Monolog\\,如果要調用Monolog\Bar\Baz,那么自動加載就會去src/Monolog/Bar/Baz.php,然后加載
            "Vendor\\Namespace\\": "src/",
            "Vendor_Namespace_": "src/"
        }
    }
}

laravel的自動加載會多了一些東西

vendor/autoload.php

<?php

// autoload.php @generated by Composer

require_once __DIR__ . '/composer' . '/autoload_real.php';  //會再次加載autoload_real.php這個文件,然后獲取getLoader,不過總的過程是一樣的。

return ComposerAutoloaderInitf1f9a2cafe15aa5cd52ec13394a5f5fb::getLoader();

看完了這篇文章,相信你對“composer怎么安裝”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

华亭县| 农安县| 莱芜市| 长白| 左云县| 洛阳市| 德清县| 鹤岗市| 九台市| 略阳县| 铅山县| 辽宁省| 班戈县| 镇江市| 静海县| 石棉县| 普兰店市| 道真| 建宁县| 金堂县| 织金县| 黄大仙区| 南丹县| 伊通| 青浦区| 龙州县| 平邑县| 平和县| 金门县| 西乡县| 罗甸县| 轮台县| 大埔县| 龙游县| 肃南| 突泉县| 镇沅| 浦北县| 繁昌县| 莫力| 永安市|