php 에서 composer 사용하기

php 에서 composer 사용하기 updated_at: 2024-03-14 17:18

Composer 사용하기

외부 패키지(라이브러리)를 사용할때 예전에는 다운받아서 수동으로 업데이트 하여 사용하거나 중요소스만 참조하여 사용하는 경우가 많았습니다.
요즈음은 대부분의 프로그램(java, python, angular...) 등이 패키지 설치툴을 이용합니다.
대표적인 php Framework인 Laravel도 이 composer를 기본으로 사용하고 있습니다.
오늘 다루고 싶은 내용은 일반 웹에서 어떻게 composer 를 사용하여 처리할까 하는 것입니다.
한국에서의 개발자들은 그누보드 라는 것을 많이 사용하는데 추가로 프로그램을 하다보면 좋은 외부패키지를 두고 날코딩등을 하며 시간을 많이 소모합니다.
그래서 예제로 그누보드가 설치된 웹서비스에서 composer를 사용하는 방식에 대해서 설명 드리려고 합니다.

gnuboard가 설치된 디렉토리 구조예

home
  - service
    - public_html
      - admin
      - bbs
      ..........
      - plugin
      - skin
      ..........
      config.php
      ..........

composer 설치

여기서는 서브단의 composer설치에 대해서는 설명을 피하고 이미 composer가 설치되었다는 가정하에 다음 단계부터 진행하겠습니다.

> cd home/servie // composer를 설치할 경로로 이동
> composer init // 중요한 점은 root가 아니라 service의 계정 owner로 설치해야 합니다.
Welcome to the Composer config generator

This command will guide you through creating your composer.json config.

Package name (<vendor>/<name>) // 이부분만 정의하시고 나머지는 스킵 [밴드내임/내임]:
Description []:
Author [n to skip]:
Invalid author string.  Must be in the formats: Jane Doe or John Smith <[email protected]>
Author [n to skip]:
Invalid author string.  Must be in the formats: Jane Doe or John Smith <[email protected]>
Author [n to skip]: n
Minimum Stability []:
Package Type (e.g. library, project, metapackage, composer-plugin) []:
License []:

위와 같이 설치하면 composer.json 파일이 만들어 집니다.
웹 스크래핑으로 유명한 guzzlehttp를 연습으로 설치하고 실제 gnubord 환경에서 적용해 보도록 하겠습니다.

composer require guzzlehttp/guzzle // guzzlehttp/guzzle 설치

composer 및 guzzlehttp 가 설치된 디렉토리 구조 예

home
  - service
    - composer.json // composer.json 생성
    - composer.lock
    - public_html
      ..........
    - vendor // vendor 폴더 이하로 관련 패키지 파일들이 생성
      - autoload.php // 실제로 이 부분을 로딩하여 프로그램하면 됩니다.
      - composer
      - guzzlehttp
      ..........

스크랩퍼(크롤링) 만들기

> cd public_html
  • guzzle_requests.php
<?php
require __DIR__.'/../vendor/autoload.php'; // vendor/autoload.php 를 require 한다.
$httpClient = new \GuzzleHttp\Client(); // 그리고 new 명령으로 새로운 오브젝트를 생성후 관련 메뉴얼에 따라 프로그램 하시면 됩니다.
$response = $httpClient->get('https://books.toscrape.com/');
$htmlString = (string) $response->getBody();
..........
평점을 남겨주세요
평점 : 5.0
총 투표수 : 1

질문 및 답글