평소에 프로젝트를 쓰는 우리는 모두 다른 사람의 프레임을 사용하고 문서의 로딩 과정을 검토하지 않았는데, 여기서는 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;#현재 네임스페이스와 라이브러리 파일 경로의 매핑을 생성합니다. 런타임에 로딩하면 이 매핑을 바로 읽을 수 있습니다. 파일 로딩 속도가 빨라집니다
'개발 꿀팁 > PHP' 카테고리의 다른 글
빠른 정렬을 위한 PHP (0) | 2022.09.14 |
---|---|
php 인용 & 변수 인용, 함수 인용, 객체 인용 (0) | 2022.09.14 |
PHP 손글씨 HTTP 프로토콜 (0) | 2022.09.13 |
PHPIO 프로그래밍 epoll 구현 방안 (0) | 2022.09.13 |
php 지정한 시간대가 맞는지 확인하는 방법 (0) | 2022.09.12 |