개발 꿀팁/PHP

composer를 이용한 자체 프로젝트 구축

Jammie 2022. 9. 13. 12:10
반응형

평소에 프로젝트를 쓰는 우리는 모두 다른 사람의 프레임을 사용하고 문서의 로딩 과정을 검토하지 않았는데, 여기서는 composer가 자동 로딩을 구축하는 과정과 관련된 문제를 처음부터 분석한다.

흐름:
1:composer를 설치하고 새로운 프로젝트를 만듭니다. 여기서는 App 폴더만 간단히 만듭니다

2:composer.json 파일을 배치하려면 composer 관리 항목을 사용하려면 composer.json 파일이 있어야 합니다. 여기서는 autoload 모듈의 일치만 주의하면 됩니다. 간단한 구성은 다음과 같습니다

{
    "name": "composer test",
    "type": "project",
    "description": "test",

    //수요의존
    "require": {
        "php": ">=7.0.0"
    },

    //자동 로드 규칙
    "autoload": {
        "psr-4": {
            //네임스페이스: 파일 경로
            "App\\": "App/"
        }
    }
}

3: 명령어 실행: composer install, 성공하면 vendor 폴더가 생성되고 그 안에 자동으로 관련 파일이 로드됩니다

4:사용
a>: App 폴더에 Test 클래스를 만듭니다. 이 네임스페이스는 위에서 composer.json이 지정한 경로에 따라 명명되어야 합니다

<?php
/**
 * Created by PhpStorm.
 * User: 05
 * Date: 2021/5/6
 * Time: 10:40
 */
namespace App;
class Test{

    public function test(){
        echo "test";
    }
}

b>: index.php에서 사용 파일 불러오기

<?php
/**
 * Created by PhpStorm.
 * User: 05
 * Date: 2021/5/6
 * Time: 10:43
 */

//composer에 의해 생성된 자동 로드 파일 가져오기
require_once dirname(__FILE__)."/vendor/autoload.php";
//사용할 클래스 선언
use App\Test;
$test=new Test();
$test->test();

관련 질문:

1: 프로젝트에 폴더가 새로 추가되었는데 추가된 클래스 라이브러리는 왜 참조할 수 없습니까?

a: 만약 새 폴더가 이미 있는 폴더 안에 있고 psr-4 규격에 맞다면,직접 참조로 사용하지만, 폴더가 최외층에 새로 생겼거나 네임스페이스가 psr-4 규격이 아닌 경우 composer.json에서 자동 로딩 규칙을 설정한 후 composer dump-autoload 명령을 실행하여 로딩 파일을 업데이트해야 합니다. 아래 그림 T와 같이 바로 사용할 수 있습니다

2: vendor에서 새로 만든 폴더는 왜 참조할 수 없습니까?

A>: vendor 내의 텍스트 클립은 기본적으로 composer 자동 참조 의존 라이브러리입니다.폴더는, 일반적으로 수동으로 추가할 수 없습니다. 만약 수동으로 추가해야 한다면, 추가 후 autoload_static.php(php>=5.6) 또는 autoload_psr4.php(일부 프레임은 자동으로 로드되기 때문에 구현이 필요함) 파일에 자동으로 로드되는 매칭 경로입니다. 여기에는 composer requer가 자동으로 업데이트되고 수동 작업 후 다음 composer 자동 업데이트 설정이 덮어쓰기됩니다.
아래는 tp 모 프레임의 자동 로딩이며, autoload_static은 로딩되지 않습니다..php

3:composer 빌드 프로세스

a:json 설정대로 require 로딩 파일의 의존 라이브러리를 구성하고, 의존을 로딩할 때 필요한 의존을 모두 다운로드(vendor)할 때까지 해당 compose.json 파일을 먼저 로딩하여 require 의존을 검출한다.

b:json autoloa에 따르면d 설정 autoload 관련 설정 파일 생성( 업데이트)

c: 프로젝트 autoload 도입 파일 자동 로드

PS:composer 공통 명령어

composer install;  #composer.json에 따라 가방 설치
composer update;   #패키지 업데이트, composer.json의 모든 코드베이스 업그레이드(업그레이드가 가능하다면)
composer search 키워드; #가방검색, composer사용가능한가방검색
composer require 패킷 이름; # 패킷을 가져오면 composer.json에 패킷 구성이 추가되고 코드 패킷이 다운로드됩니다 
composer remove 패키지 이름; # 패키지 삭제
composer dump-autoload;#현재 네임스페이스와 라이브러리 파일 경로의 매핑을 생성합니다. 런타임에 로딩하면 이 매핑을 바로 읽을 수 있습니다. 파일 로딩 속도가 빨라집니다

 

반응형