検索
ホームページ開発ツール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,=1.0,=1.2--------通过使用比较操作符可以指定有效的版本范围。 有效的运算符:>、>=、=1.0,=1.2,<blockquote><p>我们需要重点关注通配符和波浪符,通配符很好理解,波浪符有点拗口,<code>~ 最好用例子来解释: ~1.2 相当于 >=1.2,=1.2.3,语义化很难懂,但是直接看例子是可以知道怎么用的</code></p></blockquote><h2 id="基本用法">基本用法</h2><p>composer是通过读取composer.json和composer.lock文件来进行安装包的</p><p>在安装依赖后,Composer 将把安装时确切的版本号列表写入 composer.lock 文件。这将锁定改项目的特定版本。<code>因为 install 命令将会检查锁文件是否存在,如果存在,它将下载指定的版本(忽略 composer.json 文件中的定义)。如果不存在 composer.lock 文件,Composer 将读取 composer.json 并创建锁文件。</code></p><p>一般的使用用法有:</p><ol>
<li><p>composer install  (install 命令从当前目录读取 composer.json 文件,处理了依赖关系,并把其安装到 vendor 目录下。)</p></li>
<li><p>composer install XXXX  (这是单独安装某些包的时候使用)</p></li>
<li><p>composer update (为了获取依赖的最新版本,并且升级 composer.lock 文件,)</p></li>
<li>
<p>composer update XXX (类似)</p>
<pre class="brush:php;toolbar:false">--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 可以获得更快的加载支持。特别是在生产环境下建议这么做,但由于运行需要一些时间,因此并没有作为默认值。
  • composer require(require 命令增加新的依赖包到当前目录的 composer.json 文件中。但并不即可更新)

  • 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__ . &#39;/composer&#39; . &#39;/autoload_real.php&#39;;  //会再次加载autoload_real.php这个文件,然后获取getLoader,不过总的过程是一样的。
    
    return ComposerAutoloaderInitf1f9a2cafe15aa5cd52ec13394a5f5fb::getLoader();

    引用参考:

    1. http://docs.phpcomposer.com/00-intro.html

    2. https://getcomposer.org/doc/00-intro.md


    以上が作曲家についてのある程度の学習と理解の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明
    この記事はsegmentfaultで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
    作曲家:堅牢なPHPアプリケーションを構築するための鍵作曲家:堅牢なPHPアプリケーションを構築するための鍵Apr 12, 2025 am 12:05 AM

    Composerは、依存関係管理を簡素化し、開発効率とコードの品質を向上させるため、堅牢なPHPアプリケーションを構築するための重要なツールです。 1)Composerは、Composer.jsonファイルを介してプロジェクトの依存関係を定義し、これらの依存関係を自動的にダウンロードおよび管理します。 2)composer.lockファイルを生成して、依存関係バージョンが一貫しており、ベンダー/autoload.phpを介して自動的に読み込まれていることを確認します。 3)使用の例には、ログライブラリの追加などの基本的な使用法や、バージョンの制約や環境変数管理などの高度な使用法が含まれます。 4)一般的なエラーデバッグ手法には、依存関係の競合とネットワークの問題の処理が含まれます。 5)パフォーマンス最適化の提案には、Composer.Lockファイルの使用と自動負荷の最適化が含まれます。

    作曲家の専門知識:誰かを熟練させるもの作曲家の専門知識:誰かを熟練させるものApr 11, 2025 pm 12:41 PM

    作曲家を使用するときに熟練するには、次のスキルをマスターする必要があります。1。composer.jsonとcomposer.lockファイルを使用するのに熟練している必要があります。2。作曲家の仕組み、3。マスターコンポーザーのコマンドラインツール、4。基本的および高度な使用法を理解します。

    作曲家は何をしていますか?作曲家は何をしていますか?Apr 08, 2025 am 12:19 AM

    Composerは、PHPの依存関係管理ツールであり、プロジェクトの依存関係を宣言、ダウンロード、管理するために使用されます。 1)Composer.jsonファイルを介して依存関係を宣言します。2)ComposerInstallコマンドを使用して依存関係をインストールし、3)依存関係ツリーを解析し、Packagistからダウンロードします。4)Autoload.phpファイルを生成して自動荷重を簡素化します。

    App Composerとは何ですか?App Composerとは何ですか?Apr 07, 2025 am 12:07 AM

    AppComposerは、アプリケーションを構築および管理するためのツールです。 1)事前定義されたコンポーネントをドラッグして構成することにより、アプリケーションの開発を簡素化し、効率を向上させます。 2)開発者は、コンポーネントを定義し、インターフェイスを組み合わせ、ビジネスロジックを定義し、最終的にアプリケーションをレンダリングできます。 3)タスク管理や条件付きレンダリングなど、基本的および高度な使用法をサポートし、柔軟なアプリケーションの構築に役立ちます。

    作曲家は何に使用されていますか?作曲家は何に使用されていますか?Apr 06, 2025 am 12:02 AM

    作曲家は、PHPの依存関係管理ツールです。 Composerを使用するコアステップは次のとおりです。1)「Stripe/Stripe-PHP」などのComposer.jsonの依存関係を宣言:「^7.0」; 2)ComposerInStallを実行して、依存関係をダウンロードおよび構成します。 3)Composer.LockおよびAutoload.phpを介してバージョンとオートロードを管理します。 Composerは依存関係管理を簡素化し、プロジェクトの効率と保守性を向上させます。

    作曲家AIとは何ですか?作曲家AIとは何ですか?Apr 05, 2025 am 12:13 AM

    Composeraiは、開発効率と品質を改善するためにコードを生成および最適化するための人工知能ベースのツールです。その機能には次のものが含まれます。1。コード生成:要件に応じて標準を満たすコードスニペットを生成します。 2。コード最適化:既存のコードを分析することにより、最適化の提案を行います。 3。自動テスト:テストケースを生成して、コードの品質を確保します。

    AndroidのComposerとは何ですか?AndroidのComposerとは何ですか?Apr 04, 2025 am 12:18 AM

    ComposerはAndroidのSurfaceFlingerサービスの一部であり、最終的なディスプレイバッファーに複数のグラフィックスレイヤーを合成する責任があります。 1)グラフィックレイヤーを収集し、2)グラフィックレイヤーを並べ替え、3)グラフィックレイヤーを合成し、4)ディスプレイデバイスへの出力を使用して、アプリケーションのパフォーマンスとユーザーエクスペリエンスを向上させます。

    作曲家の定義は何ですか?作曲家の定義は何ですか?Apr 03, 2025 am 12:17 AM

    作曲家は、音楽を作り、感情を表現し、物語を語り、音楽を通してアイデアを伝える人々です。作曲家の作品には次のものが含まれます。1。概念:作品のテーマとスタイルを決定します。 2。作成:メロディーとハーモニーを作曲して、予備的な音楽構造を形成します。 3。実験:機器またはソフトウェアを介した作業のオーディションと調整。 4。改善:満足するまで、オーディションの結果に従って変更および改善します。

    See all articles

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

    リアルなヌード写真を作成する AI 搭載アプリ

    AI Clothes Remover

    AI Clothes Remover

    写真から衣服を削除するオンライン AI ツール。

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    AI Hentai Generator

    AI Hentai Generator

    AIヘンタイを無料で生成します。

    ホットツール

    MantisBT

    MantisBT

    Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

    Dreamweaver Mac版

    Dreamweaver Mac版

    ビジュアル Web 開発ツール

    ZendStudio 13.5.1 Mac

    ZendStudio 13.5.1 Mac

    強力な PHP 統合開発環境

    MinGW - Minimalist GNU for Windows

    MinGW - Minimalist GNU for Windows

    このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

    SublimeText3 中国語版

    SublimeText3 中国語版

    中国語版、とても使いやすい