PHP 화살표 함수(arrow function) 이용시 주의사항

한 줄 짜리 익명함수는 화살표 함수로 대체하면 코드가 깨끗해지는 느낌이라 요즘 자주 사용하고 있습니다. 특히 클로저를 쓰지 않고도 외부 변수를 사용할 수 있는게 편리하더라고요. 하지만 컬렉션의 아이템을 하나씩 처리하면서 외부 변수를 조작하려고 아래와 같은 스타일의 …

Continue reading

라라벨, Artisan::output()이 빈 문자열을 반환한다면

아티즌 커맨드를 테스트하기 위해 Artisan::output() 을 호출하여 출력 내용을 확인하는 방식을 사용했었는데요. 라라벨 버전을 올리니 갑자기 테스트가 깨졌습니다. 디버깅을 해보니 Artisan::output()이 빈 문자열을 반환하더군요. 원인은 라라벨 5.7부터 콘솔 테스트 기능이 강화되면서 기본으로 콘솔 출력을 모킹하도록 …

Continue reading

PSR-2 강제하기

오랜만에 모던 PHP 유저 그룹에서 발표를 했습니다. 희대의 폭망 발표가 됐지만, 그래도 준비한 게 있으니 정리해서 정기모임 발표 자료 저장소에 올려두었습니다. 제목은 PSR-2 강제하기입니다. 표준 스타일을 지키자고 합의를 했다고 해도, 매번 상대방이 코딩 표준을 지켰는지 확인하는 …

Continue reading

Laravel 마이그레이션 작성시 index 존재 여부 확인하는 방법

Laravel에 테이블이나 컬럼이 존재하는지 확인하는 메소드는 있는데 index 존재 여부를 확인하는 메소드는 지원하지 않아서 다소 아쉬운 면이 있었습니다. 찾아보니 doctrine schema manager 를 사용하면 확인이 가능하더군요. Laravel로 마이그레이션 작성해보신 분들은 아래 예제 코드 보시면 바로 …

Continue reading

Laravel 테스트 작성중 POST로 리퀘스트 전송시 응답으로 200이 아닌 500이 온다면

csrf 토큰 때문입니다. app/Http/Middleware/VerifyCsrfToken.php 를 public function handle($request, Closure $next) { if (‘testing’ !== app()->environment()){ return parent::handle($request, $next); } return $next($request); } 이렇게 수정해서 test 환경에서는 토큰을 확인하지 않도록 해주는 방법이 있습니다. 다른 더 좋은 …

Continue reading

MAMP 3.1로 업데이트 이후 Codeception 실행시 PDO 생성이 안되는 경우

엊그제까지만 해도 멀쩡히 동작하던 Codeception이 갑자기 PDO 생성이 안된다는 예외를 발생시키더군요. [CodeceptionExceptionModule] (Exception in Db) SQLSTATE[HY000] [1045] Access denied for user ‘root’@’localhost’ (using password: YES) while creating PDO connection 원인은 MAMP 업데이트 였는데, 아마도 MAMP가 …

Continue reading

Composer 인스톨시 Discard changes 를 자동으로 처리하는 방법

배포를 자동화하려면 composer install도 자동으로 완료되어야 합니다. composer install 을 하다보면 자주는 아니지만 가끔씩 discard-changes 에 대해 어떻게 처리를 할지 입력하도록 요구 받는데요, 이때 값을 입력해주지 않으면 더이상 패키지가 업데이트가 진행이 되지 않습니다. discard-changes 가 …

Continue reading