본문 바로가기

분류 전체보기

Laravel Responder 주의 : 영어 해석이 어색한 부분이 굉장히 많음.. 이상하다 싶으면 원문 읽길 바랍니다. Laravel Responder는 API 응답을 구성하기 위한 패키지다. transformers를 사용해서 데이터를 transform할 수 있고, 성공과 에러 응답을 생성하고 직렬화할 수 있다. 예외 처리를 하고 응답 테스트를 지원할 수 있다. Intro 라라벨은 JSON으로 변환하기 위해 컨트롤러 메서드로부터 모델들을 바로 반환하게 한다. 이건 API를 구성하기 위해 빠른 방법이지만 DB column들이 드러나게 된다. Fractal은 transformers로 이 문제를 해결했다. 하지만 프레임워크와 통합하는 것은 좀 번거로울 수 있다. public function index() { // 사용자 모델들을 다 조회..
laravel with() vs load() with() : 호출될 때 한번에 연관된 모델들을 가져온다. eager loading. 2개의 쿼리만 날린다. N+1 쿼리 문제를 해결해준다. N+1 쿼리 문제? 1:N인 관계에서 1인 모델을 조회한 뒤 연관된 N개의 모델을 가져오려면 1+N개의 쿼리가 DB에 요청되는 문제.
Laravel env() vs PHP getenv() env()는 환경 변수의 값 또는 기본 값을 반환한다. $env = env('APP_ENV'); // Returns 'production' if APP_ENV is not set... $env = env('APP_ENV', 'production'); in .env file APP_ENV = 'test' getenv()는 환경 변수의 값을 가져올 때 사용한다. 값이 존재하면 반환하고 환경 변수 이름이 없는 경우는 false를 반환한다. 환경 변수 이름이 지정되어 있지 않으면 모든 환경 변수들은 연관 배열로 반환된다. 대소문자 구분이 없다. 결론 laravel의 env()는 getenv()를 발전시킨 헬퍼이기 때문에 laravel에선 env()를 활용해 환경 변수에 접근하면 좋을 것 같다. default 값..
Laravel optional helper 라라벨 회사에서 애플 로그인 작업을 하다가 애플 서버 응답이 에러면 처리해야 하는 부분이 있었다. PR을 날리고 코드 리뷰를 받는데 개발자분께서 optional을 쓰라고 하셨다. -> (object operator)로 A라는 객체의 값에 접근하려고 할 때 A가 사실 객체가 아닌 경우(non object)라면 error가 나게 된다. 아래 예시에서 $exception->getResponse()->getBody()->getContent()를 통해서 특정 값에 도달 해 json_decode를 하고 error key에 접근을 시도한다. $errorDescription = json_decode(optional(optional($exception->getResponse())->getBody())->getContents()..
null coalescing operator ?? double question in php 널 병합 연산자 회사 코드를 보다가 ?? 이 있는 걸 봤다. ?만 붙은 경우는 보통 함수 return 시 nullable 또는 삼항 연산자에서 값이 false냐 true냐에 따라 분기해서 값을 정할 때 사용한다. php에서의 ??의 명칭은 null coalescing operator라고 한다. 사용법은 다음과 같다. $_GET['user']의 값이 null이 아닌 경우는 그대로 $_GET['user']의 값을 쓰고 null인 경우에는 'nobody' 문자열을 $username에 할당한다. isset() 헬퍼 메서드와 삼항 연산자를 써서 $_GET['user']에 값이 있는 지 판단하고 있으면 $_GET['user'], 없으면 'nobody'. 즉, 값이 set 되었는지에 따라 :를 기준으로 전자를 할당하느냐 후자를 할당..
PHP 기호 모음집 & =& &= && !! @ ?: ?string ?int ?array ?bool ?float : :: \ -> => 등등 다양하고 생소한 기호들이 있다. 출처 https://stackoverflow.com/questions/3737139/reference-what-does-this-symbol-mean-in-php
PhpStorm 공식 홈페이지 단축키 모음 페이지 상단으로 올리면 Windows, macOS 등 환경에 따른 단축키를 볼 수 있다. Keyboard Shortcuts By Category는 카테고리에 따라 단축키를 분류한 것이고 Keyboard Shortcuts By Keystroke는 키보드 버튼에 따라 단축키를 분류한 것이다. https://www.jetbrains.com/help/phpstorm/keyboard-shortcuts-and-mouse-reference.html?keymap=primary_default_for_macos Keyboard Shortcuts and Mouse Reference - Help | PhpStorm Keyboard Shortcuts and Mouse Reference Using shortcuts is a ma..
Laravel tests, RefreshDatabase RefreshDatabase는 각각의 테스트가 서로 영향을 주지 않으면서 DB를 깨끗하게, 독립적으로 사용하기 위해 쓰인다. 라라벨에서의 테스트 생명 주기 PHPUnit과 유사하다. 테스트 전에 각각 setUp 메서드가 실행된다 setUp()은 라라벨 앱을 생성하고 refresh한다. traits를 설정한다. afterApplicationCreatedCallbacks, sets up events, clears facade’s resolved instances 등을 호출한다. 실제 테스트가 실행된다 각각의 테스트가 종료될 때 tearDown 메서드가 실행된다. beforeApplicationDestroyedCallbacks가 호출된다. mockery를 종료하고 변수를 초기화 한다. RefreshDataba..