본문 바로가기

전체 글

(188)
Laravel Eloquent Static Method Model
Laravel Singleton 구현
Laravel Dependency Injection Container - 1 라라벨의 제어의 역전(Inversion of Control), 의존성 주입(Dependency Injection) 컨테이너에 대해 작성한다. 컨테이너 접근 라라벨의 컨테이너 인스턴스에 접근하는 방법 $container = app(); 라라벨의 공식 문서는 $this->app을 사용한다. 외부에서 Illuminate\Container 사용 1. https://packagist.org/packages/illuminate/container 설치 2. 아래와 같이 사용 use Illuminate\Container\Container; $container = Container::getInstance(); 기본 사용법 의존성 주입을 원하는 클래스에 생성자에 타입 힌트 사용 class MyClass { /** * @v..
TypeScript 정적 타이핑 1. 타입 선언 TypeScript는 아래와 같이 변수명 뒤에 타입을 명시하는 것으로 타입을 선언할 수 있다. // 변수 hello는 string 타입이다. let hello: string = 'hello'; 선언한 타입에 맞지 않는 값을 할당하면 컴파일 시점에 에러가 발생한다. let num1: number = true; // error TS2322: Type 'true' is not assignable to type 'number'. 타입 선언은 개발자가 코드를 예측할 수 있도록 돕는다. 타입 선언은 강력한 타입 체크를 가능하게 하여 문법 에러나 타입과 일치하지 않는 값의 할당 등 기본적인 오류를 런타임 이전에 검출한다. 함수의 매개변수와 반환값에 대한 타입 선언 방법은 아래와 같다. 일반 변수와 마..
TypeScript 환경구축 TypeScript 또한 자바스크립트 대체 언어의 하나로써 자바스크립트(ES5)의 Superset(상위확장)이다. C#의 창시자인 덴마크 출신 소프트웨어 엔지니어 Anders Hejlsberg(아네르스 하일스베르)가 개발을 주도한 TypeScript는 Microsoft에서 2012년 발표한 오픈소스로, 정적 타이핑을 지원하며 ES6(ECMAScript 2015)의 클래스, 모듈 등과 ES7의 Decorator 등을 지원한다. TypeScript는 ES5의 Superset이므로 기존의 자바스크립트(ES5) 문법을 그대로 사용할 수 있다. 또한, ES6의 새로운 기능들을 사용하기 위해 Babel과 같은 별도 트랜스파일러(Transpiler)를 사용하지 않아도 ES6의 새로운 기능을 기존의 자바스크립트 엔진(..
Laravel 6 Auth Login 기존 DB Table 을 활용하여 로그인 기능 구현 1. login 오버라이드 public function login(Request $request) { $id = $request->id; $pwd = md5($request->pwd); // 기존 데이터 md5 // Laravel Auth attempt if(Auth::attempt(['id' => $id, 'pwd' => $pwd])) { // add login passed process return "로그인 성공"; } else { // add login failed process return "로그인 실패"; } } 2. Eloquent Model 구현
SOLID - 개방 폐쇄 원칙 (Open-Closed Principle) 개방 폐쇄 원칙 기존의 코드를 변경하지 않으면서 기능을 추가할 수 있도록 설계가 되어야 한다. 주문내역이나 주문정보에 제품의 정보를 출력하는 기능을 생각해보자. 다음 그림은 New Feature 클래스에서 이 기능을 사용하는 경우를 모델링한 것이다. 만약 주문내역이나 주문정보가 아닌 다른 곳에 제품의 정보를 출력하는 기능의 개발이 필요한 경우 New Feature 클래스가 해당 매체의 기능을 이용하도록 구성할 수 있으나 이 방식은 OCP를 위반한다. OCP를 위반하지 않은 설계를 하기 위해서는 변해야 할 것은 쉽게 변할 수 있게 하고, 변하지 말아야 할 것은 변하는 것에 영향을 받지 않도록 해야 한다. OCP를 만족하기 위해서는 New Feature 클래스가 개별 기능을 처리하도록 하지 않고 인터페이스를..
ORM(Object Relational Mapping) ORM(Object Relational Mapping) 에 대해 작성한다. ORM이란 객체와 관계형 데이터베이스의 데이터를 자동으로 연결해주는 것을 말한다. 오브젝트Relational Database 객체지향 프로그래밍은 클래스를 사용하고 관계형 데이터베이스는 테이블을 사용하기 때문에 객체 모델과 관계형 모델 간에 불일치와 이질성이 존재한다. ORM을 이용하여 객체의 형태로 데이터베이스에 SQL을 자동으로 생성하여 객체를 삽입하고 수정 등이 가능하다. ORM에서 말하는 객체의 의미는 OOP의 객체를 의미한다. 관계는 관계형 데이터베이스를 의미한다. 객체를 통해 간접적으로 데이터베이스 데이터를 다룬다. Persistant API라고도 할 수 있다.(JPA, Hibernate) ORM을 사용하면 객체 지향적..