1. 컴포넌트란 구성 요소는 PHP 애플리케이션의 특정 문제를 해결하는 데 사용되는 패키지 코드 세트, 일련의 관련 클래스, 인터페이스 및 특성입니다. 예를 들어, PHP 애플리케이션이 HTTP 요청을 보내고 받아야 하는 경우 guzzle/guzzle과 같은 미리 만들어진 구성 요소를 사용하여 구현할 수 있습니다. 우리는 이미 구현된 기능을 다시 구현하기 위해 컴포넌트를 사용하는 것이 아니라 프로젝트의 장기적인 목표를 달성하는 데 더 많은 시간을 투자하기 위해 사용합니다.
우수한 PHP 구성 요소는 다음과 같은 특징을 갖습니다.
프레임워크를 선택할 때 이 프레임워크의 도구에 많은 투자를 해야 합니다. 프레임워크는 일반적으로 많은 도구를 제공하지만 필요한 도구를 제공하지 않으면 고통은 지나갑니다. 우리는 맞춤형 PHP 라이브러리를 찾아 통합해야 합니다. 타사 코드와 프레임워크가 동일한 인터페이스를 사용하지 않을 수 있으므로 타사 코드를 프레임워크에 통합하는 것이 어려울 수 있습니다.
프레임워크를 선택할 때 우리는 프레임워크의 미래에 초점을 맞춥니다. 하지만 특정 프레임워크가 항상 특정 작업을 완료하는 데 가장 좋은 도구가 될 것이라고 누가 보장할 수 있습니까? 수년간 진행된 대규모 프로젝트는 잘 수행되어야 하며 항상 조정이 필요합니다. 잘못된 PHP 프레임워크를 선택하면 이를 수행하지 못할 수도 있습니다. 이전 PHP 프레임워크는 커뮤니티 지원 부족으로 인해 느리거나 오래되었을 수 있습니다. 즉, PHP 사용 여부를 결정할 때 이러한 이전 프레임워크는 최신 객체 지향 코드와 일부 새로운 기능 대신 절차적 코드를 사용하여 작성되는 경우가 많습니다. 프레임워크, 고려해야 할 사항이 많습니다.
다행스럽게도 Laravel은 이러한 우려 사항에 대해 좋은 성능을 발휘했기 때문에 어떤 의미에서는 Laravel이 컴포넌트 기반 개발 프레임워크이기도 합니다(핵심 컴포넌트는 자체 Illuminate 라이브러리입니다). , 기능 구현은 타사 구성 요소에 크게 의존합니다) Symfony에 비해 시작하기가 더 쉽기 때문에 확장성과 사용 편의성이 모두 있습니다. 그러나 Laravel에는 몇 가지 단점도 있습니다. 예를 들어 Laravel 자체 구성 요소는 쉽게 분리되어 Laravel 프레임워크 외부에서 사용할 수 없습니다. (하지만 데이터베이스와 대기열 구성 요소를 분리할 수 있는 등 이러한 상황이 개선될 것이라고 믿습니다.) 종합해 보면, Laravel은 여전히 강력한 애플리케이션을 빠르게 생성하는 데 도움이 되는 훌륭한 프레임워크입니다.
그러면 컴포넌트나 프레임워크를 사용해야 할까요? 대답은 올바른 작업에 적합한 도구를 사용하는 것입니다. 일부 PHP 구성 요소를 사용하여 소규모 프로젝트를 신속하게 구현할 수 있다면 구성 요소를 사용하십시오. 그런 다음 프레임워크를 사용하십시오(어떤 프레임워크를 사용할지 혼란스럽다면 Laravel을 선택하십시오). 프레임워크를 사용하면 프로젝트 개발을 안내하고 가속화할 수 있습니다.
3. 컴포넌트 사용 포장업자 우리는 Packagist에서 PHP 구성요소를 찾습니다. 이 웹사이트는 PHP 구성요소를 수집하는 데 사용됩니다. 최고의 PHP 구성요소는 Packagist에서 찾을 수 있습니다.
예를 들어 HTTP 메시지를 보내고 받기 위해 http 구성 요소를 사용하려면 검색창에 http를 검색하면 가장 먼저 나오는 결과가 Guzzle이므로 사용하세요.
작곡가 Packagist는 PHP 구성 요소를 찾기 위한 커뮤니티이고 Composer는 PHP 구성 요소를 설치하기 위한 도구입니다. Composer는 PHP용 종속성 관리자입니다. Composer에 필요한 구성요소를 알려주면 Composer가 이러한 구성요소를 다운로드하여 프로젝트에 자동으로 로드합니다.
Composer와 Packagist는 긴밀하게 협력합니다. Composer에게 guzzlehttp/guzzle 구성 요소를 사용하겠다고 알리면 Composer는 Packagist에서 guzzlehttp/guzzle 구성 요소를 가져오고 이 구성 요소의 창고 주소를 찾아 버전을 결정합니다. 사용하고 이 구성 요소의 종속성을 확인한 다음 guzzlehttp/guzzle 구성 요소와 해당 종속성을 프로젝트에 다운로드합니다.
또한 Composer는 프로젝트의 모든 PHP 구성 요소에 대해 PSR 표준을 준수하는 자동 로더를 자동으로 생성하여 종속성 관리 및 자동 로딩을 효과적으로 추상화합니다. 따라서 Composer는 PHP 커뮤니티에서 가장 중요합니다. 자동 로딩을 수동으로 구현하기 위해 include, require, spl_autoload_register를 사용해야 했던 고통스러운 시절을 생각해보면 과장이 아닙니다.
Composer 설치 및 사용에 대해서는 여기서는 자세히 설명하지 않겠습니다. Composer Chinese 홈페이지를 참고해주세요.
4. 샘플 프로젝트 다음으로 샘플 프로젝트를 사용하여 Composer 및 구성 요소를 사용하여 PHP 애플리케이션을 개발하는 방법을 보여줍니다. 이 애플리케이션의 기능은 CSV 파일의 URL을 스캔하여 데드 링크를 찾는 것입니다. HTTP 요청을 보냅니다. 반환된 HTTP 상태 코드가 400보다 크거나 같으면 데드 링크가 표준 출력으로 전송됩니다. 이것은 명령줄 애플리케이션입니다. 개발 후에는 이 스크립트를 실행하고 csv 파일의 경로를 전달하고 표준 출력에 데드 링크 목록을 표시합니다.
구성요소 설치 시작하기 전에 기존 PHP 구성 요소를 사용하여 어떤 작업을 해결할 수 있는지 살펴보겠습니다. csv 파일의 데이터를 반복하고 추가로 각 URL에 HTTP 요청을 보낼 수 있는 구성 요소가 필요합니다. csv 파일이므로 HTTP 요청을 보내고 HTTP 응답을 확인할 수 있는 컴포넌트도 필요합니다.
Packagist를 검색한 후 guzzlehttp/guzzle 및 League/csv라는 두 가지 구성 요소를 발견했습니다. 전자는 HTTP 메시지를 처리하는 데 사용되고 후자는 CSV 데이터를 처리하는 데 사용됩니다. 다음으로 프로젝트의 최상위 수준에서 다음 명령을 실행합니다.
Composer는 루트 디렉터리의 공급업체 디렉터리에 종속 항목을 설치합니다. 설치가 완료되면 작곡가.json 및 작곡가.lock 파일이 루트 디렉터리에 생성됩니다. Composer.lock 파일은 프로젝트에서 사용하는 모든 PHP 구성 요소와 구성 요소의 특정 버전 번호를 나열합니다. 이렇게 하면 프로젝트가 특정 버전의 PHP 구성 요소만 사용할 수 있도록 실제로 프로젝트가 잠깁니다. . 이것의 장점은 작곡가가 Packagist에서 사용 가능한 최신 버전에 관계없이 이 파일에 나열된 특정 버전을 다운로드한다는 것입니다. 팀 구성원이 귀하와 동일한 PHP 버전을 사용할 수 있도록 작곡가.잠금 파일을 버전 제어에 넣어야 합니다. , 로컬 개발에서 사용하는 PHP 컴포넌트 버전과 서버가 동일할 경우 컴포넌트 버전 차이로 인한 버그를 최소화할 수 있습니다.
최신 버전의 구성 요소를 다운로드하고 작곡가.잠금을 업데이트하려면 작곡가 업데이트 명령을 사용할 수 있습니다.
자동 로딩 다음으로 애플리케이션 코드를 작성하고 루트 디렉터리에 scan.php 파일을 생성한 다음 파일 상단에서 require를 사용하여 Composer에서 생성된 오토로더를 가져옵니다.
Composer가 생성한 오토로더는 실제로 autoload.php라는 파일로, Vendor 디렉터리에 저장되어 있습니다. Composer는 각 PHP 구성 요소를 다운로드할 때 각 구성 요소의 구성 요소를 확인합니다. 이 정보를 얻은 후 Composer는 PSR 표준을 준수하는 구성 요소에 대해 로컬로 자동 로더를 생성합니다. 이렇게 하면 프로젝트의 모든 PHP 구성 요소를 인스턴스화할 수 있으며 이러한 구성 요소는 요청 시 자동으로 로드됩니다.
코드 작성 아래에서는 공식적으로 Guzzle 및 CSV 구성 요소를 사용하여 scan.php 코드를 작성합니다.
다음으로 URL을 한 줄에 하나씩 urls.csv에 추가합니다. 그 중 적어도 하나는 데드 링크입니다.
그런 다음 터미널을 열고 scan.php 스크립트를 실행합니다.
두 개의 매개변수를 전달했습니다. 첫 번째는 스크립트 파일 scan.php의 경로이고 다른 하나는 CSV 파일의 경로입니다. 출력은 다음과 같습니다:
첨부 파일 및 텍스트 업로드 제한으로 인해 일부 사진과 텍스트가 표시되지 않을 수 있습니다. 자세한 내용은 http://mp.weixin.qq.com/s?__biz=MzI5ODI3NzY2MA==&mid=100000610&idx=3&sn=을 참조하세요. e4974922c197cb2e227d7352376ab0c3#rd 모든 분들과의 소통을 환영합니다. 아래 QR코드를 스캔하시면 더 많은 아름다운 기사를 만나보실 수 있습니다! (예상치 못한 놀라움을 보려면 QR 코드를 스캔하세요!!) WeChat 구독 계정(uniguytech100)과 서비스 계정(uniguytech)을 팔로우하여 더 많은 멋진 기사를 받아보세요! [모두 기술 네트워크 토론 QQ 그룹], 그룹 번호: 256175955에 참여하실 수도 있습니다. 개인 소개를 적어주세요! 그것에 대해 함께 이야기합시다! |