목차
컴포넌트란 무엇입니까?
Components vs Frameworks
구성 요소 사용
Packagist
Composer
샘플 프로젝트
컴포넌트 설치
自动加载
编写代码
백엔드 개발 PHP 튜토리얼 PHP 구성 요소, 프레임워크 및 Composer에 대한 간략한 토론

PHP 구성 요소, 프레임워크 및 Composer에 대한 간략한 토론

Apr 23, 2019 am 09:18 AM
composer PHP 프레임워크

이 기사에서는 주로 PHP 구성요소, 프레임워크 및 Composer를 소개합니다. 관심 있는 친구들이 배울 수 있는 학습 가치가 있습니다.

컴포넌트란 무엇입니까?

컴포넌트는 PHP 애플리케이션의 특정 문제를 해결하는 데 사용되는 일련의 관련 클래스, 인터페이스 및 특성으로 구성된 패키지 코드 세트입니다. 예를 들어, PHP 애플리케이션이 HTTP 요청을 보내고 받아야 하는 경우 guzzle/guzzle과 같은 미리 만들어진 구성 요소를 사용하여 구현할 수 있습니다. 우리는 이미 구현된 기능을 다시 구현하기 위해 컴포넌트를 사용하는 것이 아니라 프로젝트의 장기적인 목표를 달성하는 데 더 많은 시간을 투자하기 위해 사용합니다.

우수한 PHP 구성 요소는 다음과 같은 특징을 가지고 있습니다.

  • 단일 기능: 하나의 문제 해결에 집중하고 간단한 인터페이스를 사용하여 기능을 캡슐화합니다.
  • Small: 작고 정교하며 특정 문제를 해결하는 데 필요한 최소한의 코드만 포함합니다.
  • 협력: PHP 구성 요소는 잘 협력하고 함께 결합하여 대규모 프로젝트를 구현할 수 있습니다.
  • 좋은 테스트: 테스트 자체를 제공하고 충분한 테스트 범위를 갖습니다.
  • 완전한 문서: 개발자가 쉽게 설치하고, 이해하고, 이해할 수 있도록 완전한 문서를 제공해야 합니다.

Components vs Frameworks

프레임워크를 선택할 때 우리는 이 프레임워크의 도구에 많은 투자를 해야 합니다. 프레임워크는 일반적으로 많은 도구를 제공하지만, 필요한 특정 도구를 제공하지 않는 경우에는 고통은 우리에게 전달됩니다. 우리는 맞춤형 PHP 라이브러리를 찾아 통합하고 싶습니다. 타사 코드와 프레임워크가 동일한 인터페이스를 사용하지 않을 수 있으므로 타사 코드를 프레임워크에 통합하는 것이 어려울 수 있습니다.

프레임워크를 선택할 때 우리는 프레임워크의 미래에 초점을 맞춥니다. 하지만 특정 프레임워크가 항상 특정 작업에 가장 적합한 도구가 될 것이라고 누가 보장할 수 있습니까? 수년간 진행된 대규모 프로젝트는 잘 수행되어야 하며 항상 조정이 필요합니다. 잘못된 PHP 프레임워크를 선택하면 이를 수행하지 못할 수도 있습니다. 이전 PHP 프레임워크는 커뮤니티 지원 부족으로 인해 느리거나 오래되었을 수 있습니다. 간단히 말해서, PHP 사용 여부를 결정할 때 이러한 이전 프레임워크는 최신 객체 지향 코드 대신 절차적 코드를 사용하여 작성되는 경우가 많습니다. 프레임워크, 고려해야 할 사항이 많습니다.

다행히도 Laravel은 이러한 우려 사항에 대해 좋은 성능을 발휘하므로 많은 PHP 프레임워크 중에서 두각을 나타낼 수 있습니다. 어떤 의미에서는 Laravel도 컴포넌트 개발 기반의 프레임워크입니다(핵심 컴포넌트는 기능 측면에서 자체 Illuminate 라이브러리입니다). 구현 타사 구성 요소에 크게 의존합니다) Symfony에 비해 시작하기가 더 쉽기 때문에 확장성과 사용 용이성을 모두 갖추고 있습니다. 그러나 Laravel에는 몇 가지 단점도 있습니다. 예를 들어 Laravel 자체 구성 요소는 쉽게 분리되어 Laravel 프레임워크 외부에서 사용할 수 없습니다. (하지만 데이터베이스와 대기열 구성 요소를 분리할 수 있는 등 이러한 상황이 개선될 것이라고 믿습니다.) 종합해 보면, Laravel은 여전히 ​​강력한 애플리케이션을 빠르게 생성하는 데 도움이 되는 훌륭한 프레임워크입니다.

그럼 컴포넌트나 프레임워크를 사용해야 할까요? 대답은 올바른 작업에 적합한 도구를 사용하는 것입니다. 일부 PHP 구성 요소를 사용하여 소규모 프로젝트를 신속하게 구현할 수 있다면 구성 요소를 사용하십시오. 그런 다음 프레임워크를 사용하십시오(어떤 프레임워크를 사용할지 혼란스럽다면 Laravel을 선택하십시오). 프레임워크를 사용하면 프로젝트 개발을 안내하고 가속화할 수 있습니다.

구성 요소 사용

Packagist

우리는 Packagist에서 PHP 구성 요소를 찾습니다. 이 웹사이트는 Packagist에서 최고의 PHP 구성 요소를 수집하는 데 사용됩니다.

PHP 구성 요소, 프레임워크 및 Composer에 대한 간략한 토론

예를 들어 HTTP 메시지를 보내고 받기 위해 http 구성 요소를 사용하려면 검색 상자에 http를 검색하면 첫 번째 결과가 Guzzle이므로 사용하십시오.

Composer

Packagist는 PHP 구성 요소를 찾기 위한 커뮤니티이고 Composer는 PHP 구성 요소를 설치하기 위한 도구입니다. Composer는 PHP용 종속성 관리자입니다. Composer에 필요한 구성요소를 알려주면 Composer가 이러한 구성요소를 다운로드하여 프로젝트에 자동으로 로드합니다.

Composer와 Packagist는 긴밀하게 협력합니다. Composer에게 프로젝트에 다운로드된 guzzlehttp/guzzle组件,Composer会从Packagist中获取guzzlehttp/guzzle组件,找到这个组件的仓库地址,确定要使用哪个版本,还能找出这个组件的依赖,然后把guzzlehttp/guzzle 구성 요소와 해당 종속 항목을 사용하고 싶다고 말하면 됩니다.

또한 Composer는 프로젝트의 모든 PHP 구성 요소에 대해 PSR 표준 자동 로더를 자동으로 생성하여 종속성 관리 및 자동 로딩을 효과적으로 추상화합니다. 따라서 PHP 커뮤니티에 있어서 Composer는 가장 중요한 추가 도구입니다. 자동 로딩을 수동으로 구현하기 위해 include, require 및 spl_autoload_register를 사용해야 했던 고통스러운 시절에 대해 생각해 보십시오.

Composer 설치 및 사용에 대해서는 여기서는 자세히 다루지 않겠습니다. Composer 중국어 홈페이지를 참고해주세요.

샘플 프로젝트

아래에서는 샘플 프로젝트를 사용하여 Composer 및 구성 요소를 사용하여 PHP 애플리케이션을 개발하는 방법을 보여줍니다. 이 애플리케이션의 기능은 CSV 파일의 URL을 스캔하여 데드 링크를 찾는 것입니다. 각 URL에 대해 반환된 HTTP 상태 코드가 400보다 크거나 같으면 데드 링크가 표준 출력으로 전송됩니다. 이것은 명령줄 애플리케이션입니다. 개발 후에는 이 스크립트를 실행하고 csv 파일의 경로를 전달하고 표준 출력에 데드 링크 목록을 표시합니다.

컴포넌트 설치

시작하기 전에 기존 PHP 컴포넌트를 사용하여 어떤 작업을 해결할 수 있는지 살펴보겠습니다. 각 URL에 HTTP 요청을 보내는 것 외에도 csv 파일의 데이터를 반복적으로 처리할 수 있는 컴포넌트가 필요합니다. csv 파일에는 HTTP 요청을 보내고 HTTP 응답을 확인할 수 있는 컴포넌트도 필요합니다.

Packagist를 검색한 후 guzzlehttp/guzzleleague/csv라는 두 가지 구성 요소를 발견했습니다. 전자는 HTTP 메시지를 처리하는 데 사용되고 후자는 CSV를 처리하는 데 사용됩니다. 데이터. 다음으로 프로젝트의 최상위 수준에서 다음 명령을 실행합니다. guzzlehttp/guzzleleague/csv两个组件,前者用于处理HTTP消息,后者用于处理CSV数据。下面我们在项目最顶层运行如下命令:

composer require guzzlehttp/guzzle
composer require league/csv
로그인 후 복사

Composer会将依赖安装到根目录的vendor目录下,安装完成后,会在根目录下生成composer.jsoncomposer.lock文件:

PHP 구성 요소, 프레임워크 및 Composer에 대한 간략한 토론

composer.lock文件中会列出项目使用的所有PHP组件,以及组件的具体版本号,这其实是锁定了项目,让项目只能使用具体版本的PHP组件。这样的好处是,composer会下载这个文件中列出的具体版本,而不管Packagist中可用的最新版本是多少,你应该把composer.lock文件纳入版本控制,这样让团队成员使用的PHP版本和你一样,如果本地开发和服务器使用的PHP组件版本相同,可以尽量降低由组件版本不同导致的bug。

如果确实要下载最新版本的组件并更新composer.lock,可以使用composer update命令。

自动加载

接下来我们来编写应用代码,在根目录下创建一个scan.php文件,然后在该文件顶部使用require导入Composer创建的自动加载器:

require 'vendor/autoload.php';
로그인 후 복사

Composer创建的自动加载器其实就是个名为autoload.php的文件,保存在vendor目录中,Composer下载各个PHP组件时,会检查每个组件的composer.json文件,确定如何加载该组件,得到这个信息后,Composer会在本地为该组件创建一个符合PSR标准的自动加载器。这样我们就可以实例化项目中的任何PHP组件,这些组件按需自动加载。

编写代码

下面我们正式使用Guzzle和CSV组件编写scan.php代码:

//使用composer自动加载器
require 'vendor/autoload.php';

//实例Guzzle Http客户端
$client = new GuzzleHttp\Client();

//打开并迭代处理CSV
$csv = League\Csv\Reader::createFromPath($argv[1]);
foreach ($csv as $csvRow) {
    try {
        //发送HTTP GET请求
        $httpResponse = $client->get($csvRow[0]);

        //检查HTTP响应的状态码
        if($httpResponse->getStatusCode() >= 400) {
            throw new Exception();
        }
    } catch (Exception $e) {
            //把死链发给标准输出
            echo $csvRow[0] . PHP_EOL;
    }
}
로그인 후 복사

下面我们在urls.csv中添加一些URL,一行一个,而且至少有一个是死链:

PHP 구성 요소, 프레임워크 및 Composer에 대한 간략한 토론

然后打开终端,执行scan.php脚本:

php scan.php urls.csv
로그인 후 복사

我们传入了两个参数,第一个是脚本文件scan.phprrreee

Composer는 설치가 완료된 후 composer 루트 디렉터리의 <code>vendor 디렉터리에 종속성을 설치합니다. json 및 composer.lock 파일:

PHP 구성 요소, 프레임워크 및 Composer에 대한 간략한 토론PHP 구성 요소, 프레임워크 및 Composer에 대한 간략한 토론

composer.lock 파일에는 프로젝트에서 사용하는 모든 PHP 구성 요소와 구성 요소의 특정 버전 번호가 나열됩니다. 이는 실제로 잠깁니다. 프로젝트에서 특정 버전의 PHP 구성 요소만 사용할 수 있도록 합니다. 이것의 장점은 작곡가가 Packagist에서 사용 가능한 최신 버전에 관계없이 이 파일에 나열된 특정 버전을 다운로드한다는 것입니다. 팀 구성원이 다음을 수행할 수 있도록 composer.lock 파일을 버전 제어에 넣어야 합니다. 사용하는 PHP 버전이 동일합니다. 로컬 개발에서 사용하는 PHP 컴포넌트 버전과 서버가 동일하면 컴포넌트 버전 차이로 인한 버그를 최소화할 수 있습니다. 최신 버전의 구성 요소를 다운로드하고 composer.lock을 업데이트하려면 composer update 명령을 사용할 수 있습니다.

Autoload🎜다음으로 애플리케이션 코드를 작성하고 루트 디렉터리에 scan.php 파일을 만든 다음 파일 상단에 require를 사용합니다. Composer가 만든 오토로더 가져오기: 🎜rrreee🎜Composer가 만든 오토로더는 실제로 autoload.php라는 파일이며 vendor 디렉터리에 저장되어 있습니다. Composer는 각 PHP 구성 요소를 다운로드할 때 각 구성 요소의 composer.json 파일을 확인하여 구성 요소를 로드하는 방법을 결정합니다. 이 정보를 얻은 후 Composer는 구성 요소에 대한 로컬 PSR 표준을 만듭니다. . 이렇게 하면 프로젝트의 모든 PHP 구성 요소를 인스턴스화할 수 있으며 이러한 구성 요소는 요청 시 자동으로 로드됩니다. 🎜

코드 작성🎜🎜이제 공식적으로 Guzzle 및 CSV 구성 요소를 사용하여 scan.php 코드를 작성합니다. 🎜rrreee🎜이제 urls.csv를 작성합니다. 코드 > URL을 한 줄에 하나씩 추가하세요. 적어도 하나는 데드 링크입니다: 🎜🎜<img src="https://img.php.cn/upload/article/000/000/031/35c23c09f7b13891ccd6cd729a2ec6cd-2.%20png" alt="PHP 구성 요소, 프레임워크 및 Composer에 대한 간략한 토론" >🎜🎜그런 다음 터미널을 열고 <code>scan.php 스크립트를 실행하세요: 🎜rrreee🎜우리는 두 개의 매개 변수를 전달했습니다. 첫 번째 매개 변수는 스크립트 파일 scan.php의 경로입니다. , 다른 하나는 CSV 파일의 경로입니다. 출력은 다음과 같습니다: 🎜🎜🎜🎜🎜관련 튜토리얼: 🎜PHP 비디오 튜토리얼🎜🎜🎜

위 내용은 PHP 구성 요소, 프레임워크 및 Composer에 대한 간략한 토론의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP 프레임워크의 장점과 단점 비교: 어느 것이 더 좋나요? PHP 프레임워크의 장점과 단점 비교: 어느 것이 더 좋나요? Jun 04, 2024 pm 03:36 PM

PHP 프레임워크의 선택은 프로젝트 요구 사항과 개발자 기술에 따라 다릅니다. Laravel: 기능이 풍부하고 커뮤니티가 활발하지만 학습 곡선이 가파르고 성능 오버헤드가 높습니다. CodeIgniter: 가볍고 확장하기 쉽지만 기능이 제한되고 문서가 적습니다. Symfony: 모듈식이며 강력한 커뮤니티이지만 복잡한 성능 문제가 있습니다. ZendFramework: 엔터프라이즈급이며 안정적이고 신뢰할 수 있지만 라이센스 비용이 크고 부피가 큽니다. 슬림(Slim): 마이크로 프레임워크로 빠르지만 기능이 제한되고 학습 곡선이 가파릅니다.

다양한 개발 환경에서 PHP 프레임워크의 성능 차이 다양한 개발 환경에서 PHP 프레임워크의 성능 차이 Jun 05, 2024 pm 08:57 PM

다양한 개발 환경에서는 PHP 프레임워크의 성능에 차이가 있습니다. 개발 환경(예: 로컬 Apache 서버)은 낮은 로컬 서버 성능 및 디버깅 도구와 같은 요인으로 인해 프레임워크 성능이 저하됩니다. 대조적으로, 더 강력한 서버와 최적화된 구성을 갖춘 프로덕션 환경(예: 완전한 기능을 갖춘 프로덕션 서버)은 프레임워크에 훨씬 더 나은 성능을 제공합니다.

PHP 프레임워크 및 마이크로서비스: 클라우드 네이티브 배포 및 컨테이너화 PHP 프레임워크 및 마이크로서비스: 클라우드 네이티브 배포 및 컨테이너화 Jun 04, 2024 pm 12:48 PM

PHP 프레임워크와 마이크로서비스 결합의 이점: 확장성: 애플리케이션을 쉽게 확장하고, 새로운 기능을 추가하거나 더 많은 로드를 처리합니다. 유연성: 마이크로서비스는 독립적으로 배포 및 유지 관리되므로 변경 및 업데이트가 더 쉬워집니다. 고가용성: 하나의 마이크로서비스 장애가 다른 부분에 영향을 주지 않아 더 높은 가용성을 보장합니다. 실제 사례: Laravel 및 Kubernetes를 사용하여 마이크로서비스 배포 단계: Laravel 프로젝트를 생성합니다. 마이크로서비스 컨트롤러를 정의합니다. Dockerfile을 만듭니다. Kubernetes 매니페스트를 만듭니다. 마이크로서비스를 배포합니다. 마이크로서비스를 테스트합니다.

Composer는 Composer.lock 파일을 어떻게 처리합니까? Composer는 Composer.lock 파일을 어떻게 처리합니까? Jun 03, 2024 pm 04:40 PM

Composer는 설치된 모든 종속성과 정확한 버전을 기록하는 composer.lock 파일을 사용하여 종속성을 관리하여 다음과 같은 이점을 제공합니다. 일관성을 보장하고 버전 충돌을 방지합니다. 패키지를 반복적으로 검색할 필요 없이 성능을 향상시킵니다. 변경 사항을 추적하고 각 설치 명령 후에 설치된 종속성 버전을 기록합니다.

DevOps와 PHP 프레임워크의 통합: 자동화 및 민첩성의 미래 DevOps와 PHP 프레임워크의 통합: 자동화 및 민첩성의 미래 Jun 05, 2024 pm 09:18 PM

PHP 프레임워크를 DevOps와 통합하면 효율성과 민첩성이 향상될 수 있습니다. 지루한 작업을 자동화하고, 직원이 전략적 작업에 집중할 수 있도록 하며, 릴리스 주기를 단축하고, 출시 기간을 단축하고, 코드 품질을 개선하고, 오류를 줄이고, 부서 간 팀 협업을 강화하고, 분석을 세분화합니다. 개발 및 운영 사일로

마이크로서비스 아키텍처를 위한 최고의 PHP 프레임워크: 성능 및 효율성 마이크로서비스 아키텍처를 위한 최고의 PHP 프레임워크: 성능 및 효율성 Jun 03, 2024 pm 08:27 PM

최고의 PHP 마이크로서비스 프레임워크: Symfony: 유연성, 성능 및 확장성으로 마이크로서비스 구축을 위한 구성 요소 제품군을 제공합니다. Laravel: 효율성과 테스트 가능성에 중점을 두고 깔끔한 API 인터페이스를 제공하며 상태 비저장 서비스를 지원합니다. 슬림: 미니멀하고 빠르며 고성능 API 구축에 적합한 간단한 라우팅 시스템과 옵션 미드바디 빌더를 제공합니다.

PHP 프레임워크 및 인공 지능: 개발자 가이드 PHP 프레임워크 및 인공 지능: 개발자 가이드 Jun 04, 2024 pm 12:47 PM

PHP 프레임워크를 사용하여 인공 지능(AI)을 통합하여 웹 애플리케이션에서 AI 통합을 단순화합니다. 권장 프레임워크: Laravel: 가볍고 효율적이며 강력합니다. CodeIgniter: 간단하고 사용하기 쉬우며 소규모 애플리케이션에 적합합니다. ZendFramework: 완전한 기능을 갖춘 엔터프라이즈급 프레임워크입니다. AI 통합 방법: 머신러닝 모델: 특정 작업을 수행합니다. AIAPI: 사전 구축된 기능을 제공합니다. AI 라이브러리: AI 작업을 처리합니다.

신속한 개발을 위해 가장 포괄적인 확장 라이브러리를 제공하는 PHP 프레임워크는 무엇입니까? 신속한 개발을 위해 가장 포괄적인 확장 라이브러리를 제공하는 PHP 프레임워크는 무엇입니까? Jun 04, 2024 am 10:45 AM

PHP 프레임워크 확장 라이브러리는 선택할 수 있는 네 가지 프레임워크를 제공합니다. Laravel: 광범위한 생태계와 타사 패키지로 잘 알려져 있으며 인증, 라우팅, 검증 및 기타 확장 기능을 제공합니다. Symfony: 인증, 양식 등과 같은 영역을 포괄하는 재사용 가능한 "번들"을 통해 고도로 모듈화된 기능을 확장합니다. CodeIgniter: 가볍고 고성능이며 데이터베이스 연결 및 양식 유효성 검사와 같은 실용적인 확장 기능을 제공합니다. ZendFramework: 인증, 데이터베이스 연결, RESTfulAPI 지원 등과 같은 확장 기능을 갖춘 강력한 엔터프라이즈급 기능입니다.

See all articles