JAVA&SpringBoot PHP&Laravel 비교

조현재·2023년 4월 30일
0

PHP

목록 보기
1/3

java를 배우고 spring boot까지 배운 상태에서 어쩌다가 php와 laravel을 배우게되었다. 배우게 되면서 비교하고 느꼈던 점에서 써보겠다.

1. 클래스와 메서드

PHP에서 클래스는 class 키워드를 사용하고, 메서드는 public, private, protected와 같은 접근 제한자를 사용한다. Java와 동일한 방식

2. 네임스페이스

PHP에서 네임스페이스는 namespace 키워드로 선언한다. 이는 Java의 package와 유사

3. 객체 생성 및 메서드 호출

PHP에서 객체를 생성할 때 new 키워드를 사용하며, 객체의 메서드는 > 연산자를 사용하여 호출한다. Java에서는 . 연산자를 사용한다. 예를 들어, $post = new Post();는 Java에서 Post post = new Post();와 유사

4. 정적 메서드 호출

PHP에서 정적 메서드는 :: 연산자를 사용하여 호출한다. Java에서는 . 연산자를 사용한다. 예를 들어, User::where('userId', $userId)는 Java에서

public class UserUtil {
    public static boolean isUserIdEmpty(String userId) {
        return (userId == null || StringUtils.isEmpty(userId));
    }
}

와 유사

5. 변수 선언

PHP에서 변수는 $ 기호로 시작. Java에서는 변수 타입을 명시해야 하지만, PHP에서는 필요하지 않다.

6. 라우팅 (Routing)

Laravel에서 라우팅은 웹 요청을 애플리케이션에서 처리할 수 있는 메서드와 연결한다. 이는 Java에서 Spring 프레임워크의 @RequestMapping이나 @GetMapping, @PostMapping 등의 어노테이션과 비슷한 기능을 한다.

Laravel의 
Route::post('register', [JWTController::class, 'register']);
java의
@PostMapping("/register")
public ResponseEntity<?> register(@RequestBody RegisterRequest registerRequest) {
    // ...
}

매개변수

public function update(Request $request, Post $post)

(Request $request, Post $post) 부분은 이 메서드의 매개변수를 정의

  1. Request $request: 이 매개변수는 클라이언트로부터의 HTTP 요청 정보를 담고 있는 Request 객체입니다. 이 객체를 사용하여 요청에 포함된 데이터를 가져올 수 있습니다. 예를 들어, $request->title$request->content는 클라이언트가 전송한 게시물의 제목과 내용이다

  2. Post $post: 이 매개변수는 업데이트할 게시물 객체입니다. 이 객체는 Laravel 의 Route Model Binding 기능을 사용하여 URL에서 전달된 게시물 ID에 해당하는 게시물 객체를 자동으로 검색하고 주입한다.

    즉, 이 메서드가 호출되기 전에 이미 데이터베이스에서 게시물 객체가 조회하고 이 객체를 사용하여 게시물의 속성을 업데이트하고 저장할 수 있다.

Java의 Spring Boot와 비교

  1. Request $request: 이것은 Spring Boot에서 @RequestBody 어노테이션을 사용하여 클라이언트로부터의 요청 본문(JSON)을 객체로 변환하는 것과 유사하다.

    예를 들어, public ResponseEntity<?> update(@RequestBody UpdateRequest updateRequest)와 같은 메서드에서 UpdateRequest 객체는 클라이언트로부터의 요청 데이터를 담고 있다.

  2. Post $post: 이것은 Spring Boot에서 @PathVariable 어노테이션을 사용하여 URL에서 전달된 변수를 가져오는 것과 유사하다.

    하지만, Spring Boot에서는 URL에서 가져온 변수를 사용하여 직접 데이터베이스에서 게시물을 조회해야 한다.

    예를 들어, public ResponseEntity<?> update(@PathVariable Long postId)에서 postId는 URL에서 전달된 게시물 ID이다.

profile
내일이 다른

0개의 댓글