java를 배우고 spring boot까지 배운 상태에서 어쩌다가 php와 laravel을 배우게되었다. 배우게 되면서 비교하고 느꼈던 점에서 써보겠다.
PHP에서 클래스는 class
키워드를 사용하고, 메서드는 public
, private
, protected
와 같은 접근 제한자를 사용한다. Java와 동일한 방식
PHP에서 네임스페이스는 namespace
키워드로 선언한다. 이는 Java의 package
와 유사
PHP에서 객체를 생성할 때 new
키워드를 사용하며, 객체의 메서드는 >
연산자를 사용하여 호출한다. Java에서는 .
연산자를 사용한다. 예를 들어, $post = new Post();
는 Java에서 Post post = new Post();
와 유사
PHP에서 정적 메서드는 ::
연산자를 사용하여 호출한다. Java에서는 .
연산자를 사용한다. 예를 들어, User::where('userId', $userId)
는 Java에서
public class UserUtil {
public static boolean isUserIdEmpty(String userId) {
return (userId == null || StringUtils.isEmpty(userId));
}
}
와 유사
PHP에서 변수는 $
기호로 시작. Java에서는 변수 타입을 명시해야 하지만, PHP에서는 필요하지 않다.
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
) 부분은 이 메서드의 매개변수를 정의
Request $request
: 이 매개변수는 클라이언트로부터의 HTTP 요청 정보를 담고 있는 Request
객체입니다. 이 객체를 사용하여 요청에 포함된 데이터를 가져올 수 있습니다. 예를 들어, $request->title
과 $request->content
는 클라이언트가 전송한 게시물의 제목과 내용이다
Post $post
: 이 매개변수는 업데이트할 게시물 객체입니다. 이 객체는 Laravel 의 Route Model Binding 기능을 사용하여 URL에서 전달된 게시물 ID에 해당하는 게시물 객체를 자동으로 검색하고 주입한다.
즉, 이 메서드가 호출되기 전에 이미 데이터베이스에서 게시물 객체가 조회하고 이 객체를 사용하여 게시물의 속성을 업데이트하고 저장할 수 있다.
Request $request
: 이것은 Spring Boot에서 @RequestBody
어노테이션을 사용하여 클라이언트로부터의 요청 본문(JSON)을 객체로 변환하는 것과 유사하다.
예를 들어, public ResponseEntity<?> update(@RequestBody UpdateRequest updateRequest)
와 같은 메서드에서 UpdateRequest
객체는 클라이언트로부터의 요청 데이터를 담고 있다.
Post $post
: 이것은 Spring Boot에서 @PathVariable
어노테이션을 사용하여 URL에서 전달된 변수를 가져오는 것과 유사하다.
하지만, Spring Boot에서는 URL에서 가져온 변수를 사용하여 직접 데이터베이스에서 게시물을 조회해야 한다.
예를 들어, public ResponseEntity<?> update(@PathVariable Long postId)
에서 postId
는 URL에서 전달된 게시물 ID이다.