PHP 스크립트에 Composer의 자동 로더 파일을 포함합니다.

PHP 스크립트에 Composer의 자동 로더 파일을 포함합니다.

웹사이트에는 명확한 지침이 제공되지 않습니다.GitHub 페이지을 위한 php parsecsv. 그러나 다음을 수동으로 포함해야 한다는 막연한 언급이 있습니다.

Drupal, Laravel, Symfony, Yii 등과 같은 프레임워크를 사용하지 않는 경우 PHP 스크립트에 Composer의 자동 로더 파일을 수동으로 포함해야 할 수도 있습니다.

> require_once __DIR__ . '/vendor/autoload.php';

이것이 무엇을 의미하는지 이해하지 못합니다.

  1. 이 줄을 PHP 스크립트에 대량 복사하고 작동할 것으로 예상합니까?
  2. 내 디렉터리에 특정한 경로를 사용하여 require 줄을 편집해야 합니까?
  3. 파일을 다운로드해서 어딘가에 넣어야 하나요? 물론입니다. 아니면 PHP 스크립트의 위치를 ​​기준으로 배치해야 합니까?
  4. 무슨 뜻이에요 __DIR__?

참고: 저는 Centos 7 시스템을 사용하고 있습니다.

답변1

이 라이브러리가 작동하려면 Composer의 자동 로더가 필요합니다.자동 로드PHP 인터프리터가 시스템 경로에서 특정 패턴으로 클래스 정의를 찾을 수 있도록 하는 기능입니다.

자동 로드를 사용하지 않으면 해당 클래스를 기반으로 객체를 인스턴스화하기 전에 클래스 정의가 포함된 모든 파일을 포함/요구( include(), ) 해야 합니다 .require()

따라서 이것은 불가능합니다.

$csv = new ParseCsv\Csv('data.csv');

ParseCsv\CsvPHP 인터프리터는 클래스에 대해 모르기 때문입니다 . 반면에 자동 로드를 사용하면 PHP 인터프리터가 특정 스키마 정의 시스템 경로에서 클래스 정의가 있는 파일을 찾아 처음 사용하기 전에 자동으로 로드합니다.

그래서 당신은 필요사용 작곡가. 시스템 전체 또는 프로젝트 전체에 설치해야 합니다. 그런 다음 다운로드한 composer.phar파일을 사용하여 프로젝트를 초기화합니다(아직 완료되지 않은 경우).

$ composer init

그 후에는 명령에 주어진 것을 사용할 수 있습니다parcsv/parse-csv-for-php도서관:

$ composer require parsecsv/php-parsecsv

그럼 당신은해야합니다Composer의 자동 로더는 Composer의 기능을 활용하는 모든 PHP 파일(적어도 php-parsecsv라이브러리를 사용하려는 파일)에 이 줄을 추가하거나 단일 PHP 파일에 포함하여 작동 index.php합니다 . bootstrap.php전체 애플리케이션의 공개 진입점입니다.

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

이제 가셔도 됩니다.

귀하의 질문에 답하십시오:

  1. 이 줄을 PHP 스크립트에 대량 복사하고 작동할 것으로 예상합니까?

예.

  1. 내 디렉터리에 특정한 경로를 사용하여 require 줄을 편집해야 합니까?

때때로. Composer의 기본값을 사용하는 경우 이 경로가 괜찮습니다.

  1. 파일을 다운로드해서 어딘가에 넣어야 하나요? 물론입니다. 아니면 PHP 스크립트의 위치를 ​​기준으로 배치해야 합니까?

어딘가에 다운로드해야 composer.phar하지만 프로젝트 디렉터리여야 합니다. 이 파일은 프로젝트의 종속성을 관리하는 외부 애플리케이션일 뿐입니다( composer.json프로젝트 디렉터리의 종속성 목록 및 기타 Composer 관련 정보 참조). composer.phar응용 프로그램을 실행하는 데 파일 자체가 필요하지 않습니다달리다, 집에 살기 위해 건축 계획이 필요하지 않은 것과 같습니다. composer.phar(단지 로 이름을 바꿀 수 있음 composer)은 어디에나(즉, 모든 경로 아래) 배치할 수 있지만 PATH환경 변수에 포함된 일부 디렉터리나 애플리케이션의 루트에 배치하는 것이 편리하므로 명령에서 호출하는 것이 더 쉽습니다. 선.

  1. 무슨 뜻이에요 __DIR__?

다음과 같은PHP 매뉴얼:파일 디렉토리. 포함 내에서 사용되는 경우 포함 파일의 디렉터리를 반환합니다. 이는 dirname( __FILE__)과 동일합니다. 디렉터리 이름은 루트 디렉터리가 아닌 이상 뒤에 슬래시가 없습니다.

행운을 빌어요!

참고: 이 질문은 UNIX/Linux 운영 체제보다 PHP 프로그래밍과 더 관련이 있으므로 stackoverflow.com에서 물어봐야 할 것입니다. :)

관련 정보