>  기사  >  @Bind가 필요하신가요?

@Bind가 필요하신가요?

WBOY
WBOY앞으로
2024-02-11 13:57:08579검색

PHP 편집자 Baicao는 "@Bind가 필요합니까?"라는 일반적인 질문에 답하기 위해 왔습니다. 초보자를 위한 @Bind는 일부 프레임워크와 라이브러리에서 사용되는 일반적인 주석입니다. 그러나 PHP에서는 @Bind 주석을 사용할 필요가 없습니다. PHP는 동적 언어이므로 함수나 메서드 매개변수의 명시적인 바인딩이 필요하지 않습니다. 함수와 메소드의 매개변수는 호출 시 전달된 실제 매개변수에 따라 바인딩됩니다. 따라서 PHP에서는 매개변수 바인딩에 @Bind 주석을 사용할 필요가 없습니다. 도움이 되었으면 좋겠습니다!

질문 내용

스프링부트 프로젝트에서는 아래와 같이 쿼리에 매개변수를 바인딩할 필요가 없다는 사실을 우연히 발견했습니다.

으아악

이것은 작동합니다:

으아악

그러나 3.43.0을 사용하기 위해 다른 프로젝트(스프링 부트 프로젝트 아님)를 업그레이드할 때 바인딩을 제거할 수 없었습니다.

스프링 부트 프로젝트에서는 바인딩 없이 쿼리가 작동하지만 일반 Java 프로젝트에서는 작동하지 않는 이유를 잘 설명할 수 있는 사람이 있습니까? (명백한 설명 외에도 마술). 바인딩을 건너뛰는 데 사용할 수 있는 트릭이 있나요?

해결 방법

이 주석은 javac 플래그-parameters를 사용하여 코드를 컴파일할 때만 생략할 수 있습니다. 첫 번째 프로젝트는 해당 플래그로 컴파일되고 다른 프로젝트는 그렇지 않을 수도 있습니다.

-parameters 标志。如果使用该标志,则方法的变量名称将在运行时可用于反射。当JDBI可以通过反射推断变量名为id时,不需要@Bind注解来明确它是针对查询参数id 플래그는 Java 8에서 도입되었습니다. 이 플래그를 사용하면 메서드의 변수 이름을 런타임 시 리플렉션에 사용할 수 있습니다. JDBI가 리플렉션을 통해 변수 이름 id를 추론할 수 있는 경우 쿼리 매개변수 id@Bind 주석이 필요하지 않습니다. /코드>.

참조 문서의 해당 섹션도 확인하세요: https://www.php.cn/link/8012c0dd4aa84ef92dfa2de0c7163b5a

위 내용은 @Bind가 필요하신가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제