Language/php
[생활코딩] 17.12 컴포저 (composer)
migrationArc
2021. 6. 8. 14:42
생활코딩 php 강좌
17. PHP의 객체 지향 프로그래밍
17.12 컴포저 (composer)
- Composer : Package Manager
- 현대적인 php 라이브러리들은 대체로 객체지향 형식으로 개발
- 컴포저를 활용하면 다른 사람이 만들어둔 라이브러리를 부품처럼 사용 할 수 있음
- php 파트에 대한 관리자 역할
- composer 설치후, php Project 폴더에서
- composer init
- composer.json 파일 생성
// composer.json
{
"name": "study/composer",
"description": "forStudy",
"authors": [
{
"name": "user name",
"email": "user@email.com"
}
],
"require": {}
}
- require
- 사용하고 있는 (의존, 요구하는) Library 가 기록됨
// composer.json
{
"name": "study/composer",
"description": "forStudy",
"authors": [
{
"name": "user name",
"email": "user@email.com"
}
],
"require": {
"monolog/monolog": "^2.2"
// monolog package installed
}
}
- monolog 설치 후 composer.json
- composer require monolog/monolog
- monolog Library 설치 명령어
- library 가 설치되면 ./vendor 폴더가 생성
<?php
// require_once __DIR__.'/bandor/monolog/monolog/src/Monolog/Logger.php';
// require_once __DIR__.'/bandor/monolog/monolog/src/Monolog/Handler/StreamHandler/Logger.php';
require_once __DIR__.'/vendor/autoload.php';
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
// create a log channel
$log = new Logger('name');
$log->pushHandler(new StreamHandler(__DIR__.'/app.log', Logger::WARNING));
// add records to the log
$log->warning('EGO');
$log->error('ING');
?>
- 설치된 monolog Library 를 사용
- 사용할 Library 를 각각 include 할 필요 없이, vendor 폴더에 생성된 autoloader.php 를 통해 한번에 처리 가능
- composer 를 이용하면, 복잡한 의존성 문제와 파일 include 문제를 autoloader 로 편하게 해결
// composer.json
{
"name": "study/composer",
"description": "forStudy",
"authors": [
{
"name": "user name",
"email": "user@email.com"
}
],
"require": {
"monolog/monolog": "^2.2"
},
"autoload": {
"psr-4": {"Greeting\\":"source/Greeting/"}
}
}
- 생성한 file을 composer 를 이용하여 library 처럼 사용하기위해서는 composer.json 의 autoload 에 추가한 뒤, composer install 명령어를 사용한다.
// ~project/vendor/composer/autoload_psr4.php
<?php
// autoload_psr4.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
'Greeting\\' => array($baseDir . '/source/Greeting'),
);
?>
- 추가한 composer 의 autoload 에 추가한 Greeting 이 autoload 에 정상되어 있는 것을 확인 할 수 있다
이 글의 모든 사진과 내용의 출처는 생활코딩에 있음을 알려드립니다.
생활코딩 - PHP 기본 A 부터 Z 까지 - 인프런 | 학습 페이지
지식을 나누면 반드시 나에게 돌아옵니다. 인프런을 통해 나의 지식에 가치를 부여하세요....
www.inflearn.com