한 줄 짜리 익명함수는 화살표 함수로 대체하면 코드가 깨끗해지는 느낌이라 요즘 자주 사용하고 있습니다. 특히 클로저를 쓰지 않고도 외부 변수를 사용할 수 있는게 편리하더라고요. 하지만 컬렉션의 아이템을 하나씩 처리하면서 외부 변수를 조작하려고 아래와 같은 스타일의 …
Continue readingTag: Modern PHP
라라벨, Artisan::output()이 빈 문자열을 반환한다면
아티즌 커맨드를 테스트하기 위해 Artisan::output() 을 호출하여 출력 내용을 확인하는 방식을 사용했었는데요. 라라벨 버전을 올리니 갑자기 테스트가 깨졌습니다. 디버깅을 해보니 Artisan::output()이 빈 문자열을 반환하더군요. 원인은 라라벨 5.7부터 콘솔 테스트 기능이 강화되면서 기본으로 콘솔 출력을 모킹하도록 …
Continue readingPSR-2 강제하기
오랜만에 모던 PHP 유저 그룹에서 발표를 했습니다. 희대의 폭망 발표가 됐지만, 그래도 준비한 게 있으니 정리해서 정기모임 발표 자료 저장소에 올려두었습니다. 제목은 PSR-2 강제하기입니다. 표준 스타일을 지키자고 합의를 했다고 해도, 매번 상대방이 코딩 표준을 지켰는지 확인하는 …
Continue readingORM 좋네요 좋아
Eloquent ORM을 이용하여 아래의 데이터를 조회하기 위한 코드를 작성했습니다. A가 가진 모든 B들과 그 B들이 가진 모든 C들 중 A와 관련 있는 것만 추린 것들과 그 C들이 가진 모든 D들 그 결과 아래와 같은 코드가 …
Continue readingLaravel 마이그레이션 작성시 index 존재 여부 확인하는 방법
Laravel에 테이블이나 컬럼이 존재하는지 확인하는 메소드는 있는데 index 존재 여부를 확인하는 메소드는 지원하지 않아서 다소 아쉬운 면이 있었습니다. 찾아보니 doctrine schema manager 를 사용하면 확인이 가능하더군요. Laravel로 마이그레이션 작성해보신 분들은 아래 예제 코드 보시면 바로 …
Continue readingLaravel 컨트롤러 테스트 작성 요령
테스트를 작성할 때 무엇을 테스트 할 것인지를 결정하는 것이 참 어려운 것 같습니다. Jeffrey Way 의 조언을 따르니 컨트롤러 테스트 작성에 꽤 도움이 되네요. “Controller tests should verify responses, ensure that the correct database access …
Continue readingLaravel 테스트 작성중 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 readingCodeception 을 이용한 인수테스트 기초 발표자료 공유
어제 XE 오픈 세미나에서 발표했던 자료를 공유해봅니다. ‘테스트 자동화’ 하면 뭔가 되게 어려울 것 같은 느낌이지만 막상 써보면 엄청 사용하기 쉬우니 한 번씩들 사용해보세요. 🙂
Continue readingMAMP 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 readingComposer 인스톨시 Discard changes 를 자동으로 처리하는 방법
배포를 자동화하려면 composer install도 자동으로 완료되어야 합니다. composer install 을 하다보면 자주는 아니지만 가끔씩 discard-changes 에 대해 어떻게 처리를 할지 입력하도록 요구 받는데요, 이때 값을 입력해주지 않으면 더이상 패키지가 업데이트가 진행이 되지 않습니다. discard-changes 가 …
Continue reading