Hướng dẫn how to run composer json in php - làm thế nào để chạy trình soạn nhạc json trong php

  • Giới thiệu
  • Composer.json: Thiết lập dự án
    • Khóa yêu cầu
    • Tên gói
    • Các ràng buộc phiên bản gói
  • Cài đặt phụ thuộc
    • Cam kết tệp Composer.lock của bạn để điều khiển phiên bản
    • Cài đặt từ Composer.lock
  • Cập nhật phụ thuộc vào các phiên bản mới nhất của họ
  • Packagist
  • Gói nền tảng
  • Tự động tải

Introduction#

Để giới thiệu sử dụng cơ bản của chúng tôi, chúng tôi sẽ cài đặt monolog/monolog, một thư viện ghi nhật ký. Nếu bạn chưa cài đặt trình soạn thảo, hãy tham khảo chương giới thiệu.

Lưu ý: Vì mục đích đơn giản, phần giới thiệu này sẽ cho rằng bạn đã thực hiện một bản cài đặt cục bộ của nhà soạn nhạc. for the sake of simplicity, this introduction will assume you have performed a local install of Composer.

php composer.phar update0: Thiết lập dự án#

Để bắt đầu sử dụng trình soạn thảo trong dự án của bạn, tất cả những gì bạn cần là tệp

php composer.phar update
0. Tệp này mô tả các phụ thuộc của dự án của bạn và cũng có thể chứa các siêu dữ liệu khác. Nó thường nên đi trong thư mục hàng đầu của kho dự án/VCS của bạn. Về mặt kỹ thuật, bạn có thể chạy Trình soạn thảo ở bất cứ đâu nhưng nếu bạn muốn xuất bản gói lên Packagist.org, nó sẽ phải tìm tệp ở đầu kho VCS của bạn.

Phím php composer.phar update2#

Điều đầu tiên bạn chỉ định trong

php composer.phar update
0 là khóa
php composer.phar update
2. Bạn đang nói với nhà soạn nhạc mà các gói dự án của bạn phụ thuộc vào.

{
    "require": {
        "monolog/monolog": "2.0.*"
    }
}

Như bạn có thể thấy,

php composer.phar update
2 đưa một đối tượng ánh xạ tên gói (ví dụ: monolog/monolog) vào các ràng buộc phiên bản (ví dụ:
php composer.phar update
7).package names (e.g. monolog/monolog) to version constraints (e.g.
php composer.phar update
7).

Trình soạn thảo sử dụng thông tin này để tìm kiếm bộ tệp phù hợp trong gói "kho lưu trữ" mà bạn đăng ký bằng khóa

php composer.phar update
8 hoặc trong Packagist.org, kho lưu trữ gói mặc định. Trong ví dụ trên, vì không có kho lưu trữ nào khác được đăng ký trong tệp
php composer.phar update
0, nên giả định rằng gói monolog/monolog được đăng ký trên packagist.org. (Đọc thêm về Packagist, và về kho lưu trữ).

Tên gói#

Tên gói bao gồm một tên nhà cung cấp và tên của dự án. Thông thường những điều này sẽ giống hệt nhau - tên nhà cung cấp chỉ tồn tại để ngăn chặn các cuộc đụng độ đặt tên. Ví dụ, nó sẽ cho phép hai người khác nhau tạo một thư viện có tên

php composer.phar install
1. Một người có thể được đặt tên
php composer.phar install
2 trong khi cái kia có thể là
php composer.phar install
3.

Đọc thêm về các gói xuất bản và đặt tên gói. .

Các ràng buộc phiên bản gói#

Trong ví dụ của chúng tôi, chúng tôi đang yêu cầu gói Monolog với ràng buộc phiên bản

php composer.phar install
4. Điều này có nghĩa là bất kỳ phiên bản nào trong nhánh phát triển
php composer.phar install
5 hoặc bất kỳ phiên bản nào lớn hơn hoặc bằng 2.0 và nhỏ hơn 2.1 (
php composer.phar install
6).

Vui lòng đọc các phiên bản để biết thêm thông tin chuyên sâu về các phiên bản, cách các phiên bản liên quan đến nhau và các ràng buộc phiên bản.

Làm thế nào để nhà soạn nhạc tải xuống các tệp phù hợp? Khi bạn chỉ định sự phụ thuộc trong ____10, nhà soạn nhạc trước tiên lấy tên của gói mà bạn đã yêu cầu và tìm kiếm nó trong bất kỳ kho lưu trữ nào mà bạn đã đăng ký bằng khóa

php composer.phar update
8. Nếu bạn chưa đăng ký bất kỳ kho lưu trữ bổ sung nào, hoặc nó không tìm thấy gói có tên đó trong kho lưu trữ bạn đã chỉ định, nó sẽ quay trở lại Packagist.org (nhiều hơn bên dưới). When you specify a dependency in
php composer.phar update
0, Composer first takes the name of the package that you have requested and searches for it in any repositories that you have registered using the
php composer.phar update
8 key. If you have not registered any extra repositories, or it does not find a package with that name in the repositories you have specified, it falls back to Packagist.org (more below).

Khi nhà soạn nhạc tìm đúng gói, trong packagist.org hoặc trong repo bạn đã chỉ định, sau đó nó sử dụng các tính năng phiên bản của VCS của gói (tức là, các nhánh và thẻ) chỉ định. Hãy chắc chắn đọc về phiên bản và độ phân giải gói trong bài viết phiên bản.

Lưu ý: Nếu bạn đang cố gắng yêu cầu một gói nhưng nhà soạn nhạc đã đưa ra một lỗi liên quan đến sự ổn định của gói, phiên bản bạn đã chỉ định có thể không đáp ứng các yêu cầu ổn định tối thiểu mặc định của bạn. Theo mặc định, chỉ xem xét các bản phát hành ổn định khi tìm kiếm các phiên bản gói hợp lệ trong VCS của bạn. If you are trying to require a package but Composer throws an error regarding package stability, the version you have specified may not meet your default minimum stability requirements. By default, only stable releases are taken into consideration when searching for valid package versions in your VCS.

Bạn có thể gặp phải điều này nếu bạn đang cố gắng yêu cầu các phiên bản Dev, Alpha, Beta hoặc RC của gói. Đọc thêm về cờ ổn định và khóa

php composer.phar install
9 trên trang lược đồ.

Cài đặt phụ thuộc#

Để cài đặt ban đầu các phụ thuộc được xác định cho dự án của bạn, bạn nên chạy lệnh

php composer.phar update
0.

php composer.phar update

Điều này sẽ làm cho nhà soạn nhạc làm hai điều:

  • Nó giải quyết tất cả các phụ thuộc được liệt kê trong tệp
    php composer.phar update
    0 của bạn và ghi tất cả các gói và phiên bản chính xác của chúng vào tệp
    php composer.phar update
    2, khóa dự án cho các phiên bản cụ thể đó. Bạn nên cam kết tệp
    php composer.phar update
    2 cho repo dự án của mình để tất cả những người làm việc trong dự án đều bị khóa với cùng một phiên bản phụ thuộc (bên dưới). Đây là vai trò chính của lệnh
    php composer.phar update
    0.
  • Sau đó, nó ngầm chạy lệnh
    php composer.phar update
    5. Điều này sẽ tải các tệp phụ thuộc vào thư mục
    php composer.phar update
    6 trong dự án của bạn. (Thư mục
    php composer.phar update
    6 là vị trí thông thường cho tất cả các mã của bên thứ ba trong một dự án). Trong ví dụ của chúng tôi từ trên cao, bạn sẽ kết thúc với các tệp Monolog Source trong
    php composer.phar update
    8. Vì Monolog có sự phụ thuộc vào
    php composer.phar update
    9, các tệp của gói đó cũng có thể được tìm thấy bên trong
    php composer.phar update monolog/monolog [...]
    0.

Mẹo: Nếu bạn đang sử dụng Git cho dự án của mình, có lẽ bạn muốn thêm

php composer.phar update
6 vào
php composer.phar update monolog/monolog [...]
2 của mình. Bạn thực sự không muốn thêm tất cả mã bên thứ ba đó vào kho lưu trữ được phiên bản của bạn.
If you are using git for your project, you probably want to add
php composer.phar update
6 in your
php composer.phar update monolog/monolog [...]
2. You really don't want to add all of that third-party code to your versioned repository.

Cam kết tệp php composer.phar update2 của bạn vào điều khiển phiên bản#

Cam kết tệp này để kiểm soát phiên bản rất quan trọng vì nó sẽ khiến bất kỳ ai thiết lập dự án sử dụng chính xác các phiên bản chính xác của các phụ thuộc mà bạn đang sử dụng. Máy chủ CI của bạn, máy sản xuất, các nhà phát triển khác trong nhóm của bạn, mọi thứ và mọi người đều chạy trên cùng một phụ thuộc, điều này giảm thiểu tiềm năng cho các lỗi chỉ ảnh hưởng đến một số phần của việc triển khai. Ngay cả khi bạn phát triển một mình, trong sáu tháng khi cài đặt lại dự án, bạn có thể cảm thấy tự tin rằng các phụ thuộc được cài đặt vẫn hoạt động ngay cả khi các phụ thuộc của bạn phát hành nhiều phiên bản mới kể từ đó. (Xem ghi chú bên dưới về việc sử dụng lệnh

php composer.phar update
0.)

Lưu ý: Đối với các thư viện, không cần thiết phải cam kết tệp khóa, xem thêm: Thư viện - Tệp khóa. For libraries it is not necessary to commit the lock file, see also: Libraries - Lock file.

Cài đặt từ ________ 32#

Nếu đã có tệp

php composer.phar update
2 trong thư mục dự án, điều đó có nghĩa là bạn đã chạy lệnh
php composer.phar update
0 trước đó hoặc ai đó trên dự án đã chạy lệnh
php composer.phar update
0 và cam kết tệp
php composer.phar update
2 cho dự án (tốt).

Dù bằng cách nào, đang chạy

php composer.phar update
5 khi có sẵn tệp
php composer.phar update
2 được giải quyết và cài đặt tất cả các phụ thuộc mà bạn đã liệt kê trong
php composer.phar update
0, nhưng nhà soạn nhạc sử dụng các phiên bản chính xác được liệt kê trong
php composer.phar update
2 để đảm bảo rằng các phiên bản gói phù hợp cho mọi người làm việc trong dự án của bạn. Kết quả là bạn sẽ có tất cả các phụ thuộc được yêu cầu bởi tệp ____10 của bạn, nhưng chúng có thể không phải là phiên bản mới nhất có sẵn (một số phụ thuộc được liệt kê trong tệp
php composer.phar update
2 có thể đã phát hành các phiên bản mới hơn kể từ khi tệp được tạo). Đây là do thiết kế, nó đảm bảo rằng dự án của bạn không bị phá vỡ vì những thay đổi bất ngờ về phụ thuộc.

Vì vậy, sau khi tìm nạp các thay đổi mới từ kho lưu trữ VCS của bạn, bạn nên chạy một nhà soạn nhạc

php composer.phar update
5 để đảm bảo thư mục nhà cung cấp được đồng bộ hóa với tệp
php composer.phar update
2 của bạn.

php composer.phar install

Cập nhật phụ thuộc vào các phiên bản mới nhất của họ#

Như đã đề cập ở trên, tệp

php composer.phar update
2 ngăn bạn tự động nhận các phiên bản mới nhất của các phụ thuộc của bạn. Để cập nhật lên các phiên bản mới nhất, hãy sử dụng lệnh
php composer.phar update
0. Điều này sẽ tìm nạp các phiên bản phù hợp mới nhất (theo tệp ____10 của bạn) và cập nhật tệp khóa với các phiên bản mới.

php composer.phar update

Lưu ý: Nhà soạn nhạc sẽ hiển thị cảnh báo khi thực hiện lệnh

php composer.phar update
5 nếu
php composer.phar update
2 chưa được cập nhật vì các thay đổi được thực hiện đối với
php composer.phar update
0 có thể ảnh hưởng đến độ phân giải phụ thuộc.
Composer will display a Warning when executing an
php composer.phar update
5 command if the
php composer.phar update
2 has not been updated since changes were made to the
php composer.phar update
0 that might affect dependency resolution.

Nếu bạn chỉ muốn cài đặt, nâng cấp hoặc xóa một phụ thuộc, bạn có thể liệt kê rõ ràng nó như một đối số:

php composer.phar update monolog/monolog [...]

Packagist#

Packagist.org là kho lưu trữ nhà soạn nhạc chính. Kho lưu trữ nhà soạn nhạc về cơ bản là một nguồn gói: một nơi bạn có thể nhận được các gói từ. Packagist nhằm mục đích trở thành kho lưu trữ trung tâm mà mọi người sử dụng. Điều này có nghĩa là bạn có thể tự động

php composer.phar update
2 bất kỳ gói nào có sẵn ở đó, mà không cần chỉ định thêm nơi nhà soạn nhạc nên tìm kiếm gói.

Nếu bạn truy cập trang web Packagist.org, bạn có thể duyệt và tìm kiếm các gói.

Bất kỳ dự án nguồn mở nào sử dụng Composer đều được khuyến nghị xuất bản các gói của họ trên Packagist. Một thư viện không cần phải được sử dụng bởi nhà soạn nhạc, nhưng nó cho phép các nhà phát triển khác cho phép khám phá và chấp nhận nhanh hơn.

Gói nền tảng#

Nhà soạn nhạc có các gói nền tảng, là các gói ảo cho những thứ được cài đặt trên hệ thống nhưng không thực sự có thể cài đặt được bởi nhà soạn nhạc. Điều này bao gồm bản thân PHP, phần mở rộng PHP và một số thư viện hệ thống.

  • {
        "autoload": {
            "psr-4": {"Acme\\": "src/"}
        }
    }
    5 đại diện cho phiên bản PHP của người dùng, cho phép bạn áp dụng các ràng buộc, ví dụ:
    {
        "autoload": {
            "psr-4": {"Acme\\": "src/"}
        }
    }
    6. Để yêu cầu phiên bản Php 64 bit, bạn có thể yêu cầu gói
    {
        "autoload": {
            "psr-4": {"Acme\\": "src/"}
        }
    }
    7.

  • {
        "autoload": {
            "psr-4": {"Acme\\": "src/"}
        }
    }
    8 đại diện cho phiên bản của thời gian chạy HHVM và cho phép bạn áp dụng một ràng buộc, ví dụ:
    {
        "autoload": {
            "psr-4": {"Acme\\": "src/"}
        }
    }
    9.

  • php composer.phar dump-autoload
    0 cho phép bạn yêu cầu tiện ích mở rộng PHP (bao gồm các tiện ích mở rộng lõi). Phiên bản có thể khá không nhất quán ở đây, vì vậy thường nên đặt ràng buộc ràng buộc thành
    php composer.phar dump-autoload
    1. Một ví dụ về tên gói mở rộng là
    php composer.phar dump-autoload
    2.

  • php composer.phar dump-autoload
    3 cho phép các ràng buộc được thực hiện trên các phiên bản của thư viện được sử dụng bởi PHP. Những điều sau đây có sẵn:
    php composer.phar dump-autoload
    4,
    php composer.phar dump-autoload
    5,
    php composer.phar dump-autoload
    6,
    php composer.phar dump-autoload
    7,
    php composer.phar dump-autoload
    8,
    php composer.phar dump-autoload
    9,
    $loader = require __DIR__ . '/vendor/autoload.php';
    $loader->addPsr4('Acme\\Test\\', __DIR__);
    0,
    $loader = require __DIR__ . '/vendor/autoload.php';
    $loader->addPsr4('Acme\\Test\\', __DIR__);
    1.

Bạn có thể sử dụng

$loader = require __DIR__ . '/vendor/autoload.php';
$loader->addPsr4('Acme\\Test\\', __DIR__);
2 để có được danh sách các gói nền tảng có sẵn tại địa phương của bạn.

Autoloading#

Đối với các thư viện chỉ định thông tin tự động tải, trình soạn thảo tạo tệp

$loader = require __DIR__ . '/vendor/autoload.php';
$loader->addPsr4('Acme\\Test\\', __DIR__);
3. Bạn có thể bao gồm tệp này và bắt đầu sử dụng các lớp mà các thư viện đó cung cấp mà không cần thêm bất kỳ công việc nào:

require __DIR__ . '/vendor/autoload.php';

$log = new Monolog\Logger('name');
$log->pushHandler(new Monolog\Handler\StreamHandler('app.log', Monolog\Logger::WARNING));
$log->warning('Foo');

Bạn thậm chí có thể thêm mã của riêng mình vào trình tải tự động bằng cách thêm trường

$loader = require __DIR__ . '/vendor/autoload.php';
$loader->addPsr4('Acme\\Test\\', __DIR__);
4 vào
php composer.phar update
0.

{
    "autoload": {
        "psr-4": {"Acme\\": "src/"}
    }
}

Nhà soạn nhạc sẽ đăng ký trình tải tự động PSR-4 cho không gian tên

$loader = require __DIR__ . '/vendor/autoload.php';
$loader->addPsr4('Acme\\Test\\', __DIR__);
6.

Bạn xác định một ánh xạ từ các không gian tên đến các thư mục. Thư mục

$loader = require __DIR__ . '/vendor/autoload.php';
$loader->addPsr4('Acme\\Test\\', __DIR__);
7 sẽ nằm trong root dự án của bạn, cùng cấp độ với thư mục
php composer.phar update
6. Một tên tệp ví dụ sẽ là
$loader = require __DIR__ . '/vendor/autoload.php';
$loader->addPsr4('Acme\\Test\\', __DIR__);
9 chứa một lớp monolog/monolog0.

Sau khi thêm trường

$loader = require __DIR__ . '/vendor/autoload.php';
$loader->addPsr4('Acme\\Test\\', __DIR__);
4, bạn phải chạy lại lệnh này:

php composer.phar dump-autoload

Lệnh này sẽ tạo lại tệp

$loader = require __DIR__ . '/vendor/autoload.php';
$loader->addPsr4('Acme\\Test\\', __DIR__);
3. Xem phần monolog/monolog3 để biết thêm thông tin.

Bao gồm tệp đó cũng sẽ trả về phiên bản Autoloader, do đó bạn có thể lưu trữ giá trị trả về của cuộc gọi bao gồm trong một biến và thêm nhiều không gian tên. Điều này có thể hữu ích cho các lớp tự động tải trong bộ thử nghiệm, ví dụ.

$loader = require __DIR__ . '/vendor/autoload.php';
$loader->addPsr4('Acme\\Test\\', __DIR__);

Ngoài tự động tải PSR-4, nhà soạn nhạc cũng hỗ trợ PSR-0, ClassMap và Files tự động tải tự động. Xem tài liệu tham khảo

$loader = require __DIR__ . '/vendor/autoload.php';
$loader->addPsr4('Acme\\Test\\', __DIR__);
4 để biết thêm thông tin.

Xem thêm các tài liệu về tối ưu hóa trình tải tự động.

Lưu ý: Nhà soạn nhạc cung cấp trình tải tự động của riêng mình. Nếu bạn không muốn sử dụng tệp đó, bạn có thể bao gồm các tệp monolog/monolog5, mà các mảng liên kết trả về cho phép bạn định cấu hình trình tải tự động của riêng bạn. Composer provides its own autoloader. If you don't want to use that one, you can include monolog/monolog5 files, which return associative arrays allowing you to configure your own autoloader.

← Giới thiệu | Thư viện →

Tìm thấy một lỗi đánh máy? Có gì đó không ổn trong tài liệu này? Fork và chỉnh sửa nó!

Nhà soạn nhạc JSON PHP là gì?

nhà soạn nhạc.JSON là một tệp JSON được đặt trong thư mục gốc của dự án PHP.Mục đích của nó là chỉ định một thuộc tính dự án chung, dữ liệu meta và phụ thuộc và nó là một phần của một loạt các dự án hiện có.Trong hầu hết các cách, nó là một đối tác.Tệp dự án mạng.a JSON file placed in the root folder of PHP project. Its purpose is to specify a common project properties, meta data and dependencies, and it is a part of vast array of existing projects. In most ways, it is a counterpart to . NET project file.

Nhà soạn nhạc JSON được cài đặt ở đâu?

Composer.json: Thiết lập dự án# Để bắt đầu sử dụng trình soạn thảo trong dự án của bạn, tất cả những gì bạn cần là tệp Composer.json.Tệp này mô tả các phụ thuộc của dự án của bạn và cũng có thể chứa các siêu dữ liệu khác.Nó thường nên đi trong thư mục hàng đầu của kho dự án/VCS của bạn.the top-most directory of your project/VCS repository.