함수형 프로그래밍
php는 자기 스스로 다시 호출하는 재귀 호출(recursion)도 지원하지만,
대부분의 PHP 코드는 재귀보다는 반복(iteration)하는 형태로 작성
메타 프로그래밍
Reflection API와 특수 메서드(Magic Method)같은 메커니즘을 통해서 다양한 형태의 메타 프로그래밍을 지원.
__get(), __set(), __clone(), __toString(), __invoke() 등 개발자가 클래스의 동작에 끼어들 수 있도록
해주는 다양한 특수 메서드 존재.
네임스페이스
서로 다른 PHP 라이브러리에 같은 이름의 클래스가 포함되어 있을 수 있다.
두 라이브러리가 같은 네임스페이스를 사용한다면 서로 충돌이 발생하여 문제가 될 수 있음.
-> 네임스페이스 기능은 이런 문제를 해결 가능하다.
두 개의 파일을 각각 다른 디렉토리에 넣는다면 두 파일의 이름이 같아도 상관이 없듯이,
두 개의 PHP 클래스를 각각 다른 네임스페이스에 둔다면 두 클래스의이름이 동일해도 상관이 없다.
-> 다른 개발자가 사용할 가능성이 있는 코드를 작성한다면, 네임스페이스로 잘 감싸서 다른 라이브러리의 이름과
충돌이 발생하지 않게 하는 것이 좋다.
네임스페이스를 사용할 때 추천할 만한 방법이 PSR-4에 설명되어 있는데 파일 이름, 클래스 이름, 네임스페이스 이름에 대한 표준화된 규칙을 제공하여 명시적으로 일일이 파일을 불러오지(include) 않아도 클래스를 자동으로 불러온다.
단, PSR-4는 PHP 5.3 버전 이상에서만 적용되기 때문에 PHP 5.2 호환 프로젝트들은 PSR-0를 구현해둔 상태이다.
표준 PHP 라이브러리(SPL, Standard PHP Library)
PHP와 함께 제공되는 클래스 인터페이스의 모음.
SPL에는 일반적으로 많이 사용되는 데이터 구조(스택, 큐, 힙 등)와 이러한 SPL 데이터 구조나
SPL 인터페이스를 직접 구현한 클래스를 순회(traverse)하는데 사용할 수 있는 이터레이터들(반복)이 포함되어 있다.
커맨드라인 인터페이스
PHP는 웹어플리케이션 작성을 주요 목적으로 삼고 있지만,
커맨드라인 인터페이스(CLI) 프로그램을 만드는 데에도 유용하게 사용할 수 있다.
커맨드라인 PHP 프로그램은 테스트, 배포, 관리 등 일반적인 작업을 자동화하는데 도움을 준다.
* CLI PHP 스크립트를 웹어플리케이션 경로에 두지 않도록 조심할 것. (보안)
XDebug
PHP용 디버거인 XDebug를 다양한 IDE와 함께 사용하여 중단점(BreakPoint)을 설정하거나 스택 내용을 볼 수 있다.
또한 PHPUnit과 KCacheGrind 등의 도구와 같이 사용하면 코드 커버리지 분석이나 프로파일링 할 수 있다.
var_dump(), print_r() 로는 해결할 수 없다면 디버거를 사용해야 하는 상황일 수도 있다.
의존성 관리
라이브러리, 프레임워크, 컴포넌트가 존재하는데
Composer는 PHP를 사용하는데 있어 주된 패키지 관리자이다.
프로젝트의 의존성을 composer.json 파일에 기록하고 간단한 커맨드 몇 개를 사용하면
Composer가 알아서 다운로드하고 오토로딩(autoloading)설정을 해준다.
Composer는 node.js의 npm이나 ruby의 bundler와 같다.
Composer를 (/usr/local/bin 등에) 글로벌 설치하기를 권장.
다음과 같은 명령어
mv composer .phar /usr/local/bin/composer
* 권한문제 발생 여부가 있으므로 sudo 붙일것.
컴포저 실행 시,
php composer .phar
명령어를 실행하면 된다.
윈도우일 경우, 링크에서 설치 파일을 받아 설치하고,
PATH 환경변수에도 추가해주기 때문에 어느 디렉토리에서든 커맨드라인을 실행하거나
그냥 composer 명령을 실행할 수 있다.
composer require (의존관계 추가 정보)
// composer require twig/twig:^2.0
위 명령어는 의존관계 정보 추가 명령어
Composer를 이용하여 패키지를 vendors/디렉토리 에 설치 가능.
어플리케이션의 PHP 파일에 아래와 같은 내용을 추가하여 Composer의 오토로더(autoloader)를 사용한다는 것을 PHP에게 알려준다.
<?php
Require 'vendor/autoload.php';
이렇게 필요한 의존 라이브러리를 사용할 수 있다.
그 라이브러리들은 필요할 때 자동으로 로드된다.
- 의존관계 정보 업데이트
composer install
명령어 처음 실행 시
Composer는 설치한 패키지들의 버전을 기록한 composer.lock 파일을 생성한다.
프로젝트를 공유할 때 composer.lock 파일을 같이 포함시켜서,
다른 사람이 composer install 명령어를 실행했을 때 동일한 버전의 패키지를 받도록 한다.
의존관계 정보를 업데이트하고 싶으면
composer update
명령어 실행.
* 배포할 때에는 composer update를 사용하지 말고 composer install 할 것.
그렇지 않으면 배포 환경에는 다른 버전의 패키지를 사용하게 될 수도 있다.
패키지 버전을 유연하게 관리하려고 할 때 가장 유용하다.
~1.8 : 1.8.0 보다는 높은 버전이지만 2.0.x-dev 버전보다는 낮은 버전 의미.
1.8.* : 동일한 의미.
composer update 명령어 실행 시, 지정된 제한 사항에 맞는 최신 버전으로 의존관계 정보 업데이트
https://modernpug.github.io/php-the-right-way/#translations
'PHP' 카테고리의 다른 글
[Laravel/PHP] Scope ? (0) | 2022.12.12 |
---|---|
str_replace / preg_replace (0) | 2022.09.14 |
PHP Excel 라이브러리 (0) | 2022.08.17 |
PHP 디자인 패턴 (0) | 2022.08.15 |
모던 PHP 란? (0) | 2022.08.14 |