PHP Object Oriented Programming (OOP): Dependency Injection (6/13)

그래서, 이제 우리는 클래스가 무엇인지, 그리고 어떤 메소드와 프로퍼티 상속이 무엇인지 알고 있습니다 우리는 기본적으로 [[? OOP?] 지금까지, 그러나 우리는 그것을 어떻게 활용할 지 아직 모른다

잠재력을 최대한 발휘하십시오 그래서이 수업에서 우리는 의존성 주입 및 가장 쉬운 방법 이것을 당신에게 설명하는 것은 데모입니다 그래서 가슴과 자물쇠라는 두 개의 파일을 만들 것입니다 그리고 이것들은 모두 수업이 될 것입니다 클래스 Chest, 클래스 Lock

이제 lock 메소드에는 보호 된 속성이 포함됩니다 는 lock이라는 메서드뿐만 아니라 잠겨 있습니다 그리고 [? ?]도 고정되어 있습니다 그리고이 모든 일은 돌아오고 잠겨 있습니다 이제 안에, 우리가 할 일 모두가있어

그렇습니다, 우리는 이것이 잠긴 것이 진정한 것과 같다고 말할 것입니다 그래서 우리는 자물쇠를 잠그고 있습니다 다음으로 가슴 안에는 Public Function Close가 있습니다 그리고 이것은 Lock이라는 통찰력을 갖습니다 따라서 이것을 true로 설정하면 자동으로 가슴을 잠그세요

우리가 거짓이라고 말하면 가슴을 닫을 것이고, 자물쇠를 잠그지 마십시오 그래서, 우리는 아직 아무것도 할 수 없습니다 우리는 여기에서이 속성에 접근 할 수 없기 때문에 그래서, 우리가해야 할 첫 번째 일은 그것을 고치는 것입니다 그래서 우리가해야 할 첫 번째 일은 생성자를 만듭니다

그리고 우리는 자물쇠를 끼울 것입니다 그리고 우리는 이것을이 자물쇠로 설정하려고합니다 그리고 우리는 그 속성을 만들 것입니다 여기, 보호 된 자물쇠 이제 우리가 할 수있는 것은, 우리는이 자물쇠를 말할 수 있습니다, 그러나 우리는 그것을하고 싶습니다

가슴을 고정시키는이 기능 따라서 잠금이 true 인 경우 – 사실 동일해야합니다 대신 equals – 그리고 그 모든 잘 작동합니다 우리가 할 수있는 일은 자물쇠가 닫혀 있습니다 – 죄송합니다

그래서 닫힙니다 우리는 [? 게터?] 그것을 위해, 닫힙니다 반환이 닫힙니다 그리고 여기까지, 우리가하는 모든 것은 닫힌 것입니다 그러면 우리가 할 수있는 일은 open이라는 또 다른 메소드를 추가하십시오

그리고 우리는이 자물쇠가 잠겨 있다면, 그런 다음 잠금을 해제하려고합니다 그래서 우리가해야 할 첫 번째 일은 그 방법을 여기에서 만들어야합니다 그래서 공공 기능 잠금 해제 그리고 우리가 할 일은 이것이 locked가 false와 같다고 설정하는 것입니다 이제 우리가 할 수있는 일은 여기 있습니다

이 자물쇠가 열립니다 그래서, 우리는 그 방법을 호출하거나 호출하고 있습니다 그리고 나서 가슴을 열면됩니다 따라서 closed는 false와 같습니다 이제 이것을 시험해 봅시다

Google 색인 파일에는 이 두 파일은 가슴과 자물쇠입니다 그리고 가슴, 가슴 – 새 가슴, 죄송합니다 우리의 구성 매개 변수로, 우리는 잠그고 있습니다 그래서 우리는 새로운 자물쇠가 필요합니다 하지만 우리가 아닌지 확인해 보겠습니다

오류가 발생합니다 괜찮습니다 여기에 오류가 발생했습니다 이제 우리가 할 수있는 일은 가슴 잠금이라고 할 수 있습니다 그리고 이것이 제대로 작동하는지 확인하기 위해, 사실 그것은 가까운 것이어야합니다

그리고 이것이 제대로 작동하는지 확인하기 위해, 우리는 여기서 말하려고합니다 그리고 우리는 똑같은 행동을 할 것입니다 자, 새로 고침을하면, 우리는 실종 된 것입니다 가슴을 고정시키고 자하는 위치를 지정해야합니다 따라서, 우리는 이것을 선택 사항으로 만들 것이라고 말할 것입니다

따라서 기본적으로 true로 설정합니다 그래서 매번 전달할 필요가 없습니다 우리는 거기에 갈 가슴이 닫힙니다 그러면 우리는 가슴을 열어 둘 수 있고 가슴은 열려 있습니다

이제 우리가 여기있는 한 가지 문제는 할 수 있습니다 여기에 객체를 전달하는 대신 우리가 할 수있는 일 문자열을 전달하는 것입니다 그리고 나서 우리는 오류를 일으킬 것입니다 왜냐하면이 자물쇠 여기서 메서드는 문자열에 존재하지 않습니다 우리가 해결할 수있는 방법은 뭔가를하는 것입니다

타입 힌팅이라고하는 하이킹 (hyping) 이것이 의미하는 바는 우리가 지정한 것입니다 인수 이전의 클래스 자 이제 우리가 이것을 다시하고 새로 고침을하면, 잡을 수있는 치명적인 오류가 발생합니다 기본적으로 이것은 우리는이 생성자, 여기, 또는 적어도 전달합니다 첫 번째 인수는 lock의 인스턴스가 될 것입니다

그래서 우리가 이걸 고치면 새로 고침을하고, 우리는 같은 결과를 얻습니다 그리고 이것이 우리가 의존성 주입이라고 부르는 것입니다 자, 저는 여러분에게 정말 간단한 예제를 드리겠습니다 이것은 실제 상황에서 유용 할 수 있습니다 따라서이 파일을 삭제하겠습니다

그들을 닫고이 모든 것을 제거하십시오 새 파일을 만들겠습니다 그리고 이것은 DatabasePHP라고 불리게 될 것입니다 그런 다음 User

PHP라는 새 파일을 만듭니다 그리고 다시, 이것들은 수업이 될 것입니다, 그래서 Class 사용자 및 클래스 데이터베이스 그리고 우리 데이터베이스는 단지 포함 할 것입니다 쿼리라는 한 가지 방법 아마도 우리는 SQL을 전달할 것입니다

우리가 할 일은 Prepare SQL, Execute에서이 PDO와 같은 것을 말할 것입니다 그리고 우리는 테스트를하지 않을 것입니다 이것, 또는 그런 것 이것은 단지 예일뿐입니다 좋아, 그럼 우리가해야 할 일은 사용자 클래스에 메소드를 추가하는 것입니다

그래서,이 예를 들어, 저는 말할 것입니다, 공용 함수, 만들기 그리고 이것은 일련의 데이터를 취할 것입니다 이제 우리가해야 할 일은 우리가 원하는 것입니다 그를 데이터베이스에 삽입하여 사용자를 생성합니다 그러나 우리는 어떻게이 방법에 접근 할 것인가? 왜냐하면 우리는이 클래스 내부에서 질의를 생성하기를 원하기 때문입니다

음, 다시 한번 우리는 의존성 주입을 사용합니다 그래서 생성자를 생성합니다 우리는이 데이터베이스에 입력하고, 우리는 그것을 DB로 짧게 부를 것입니다 그리고 그것을 Protected DB 속성에 할당합니다 그리고 이제 우리가해야 할 일은,이 DB Query – 우리가 전화 한거니? – 응

그리고 우리는 말할 수 있습니다, 사용자의 ㅋ, ㅋ, ㅋ, 그게 다 잘될거야 우리가해야 할 일은이 파일들을 포함시키는 것뿐입니다 DatabasePHP, UserPHP

그리고 우리는 사용자가 새 사용자, 새 데이터베이스와 동일하다고 말할 것입니다 그리고 지금 당장은 이것을 없애고 SQL을 에코합니다 그런 다음 사용자 생성, 배열 사용자 이름 인 Terry를 전달합니다 새로 고침을 누르면이 쿼리가 표시됩니다 물론 이것이 실제 사이트에 있다면, 실제로이 쿼리를 실행하고 있습니다

사용자를 데이터베이스에 저장하는 것 자, 또 다른 이유는 – 나는 이것에 너무 많이 들어가기를 원하지 않는다 비디오가 너무 길어서 의존성 주입을위한 또 다른 이유는, [? 타이트한?] 커플 링 자, 이전에 보았던 것, public static function get instance입니다 그리고이 모든 의존성 삽입 물건을 제거해 봅시다

그리고 여기에 뭔가 같이 말할 것입니다, 제대로 보호 된 정적 인스턴스를 만들 것입니다 정적 인 경우가 아니라면 – 이게 무슨 뜻인지 이해하지 못한다면 걱정하지 마십시오 우리는 앞으로 또 다른 비디오에서 정적을 다루겠습니다 static 인스턴스가 아닌 경우 – null 일 경우, 또는 설정되지 않은 경우이 클래스를 인스턴스화합니다 그 변수에 저장하십시오

따라서 정적 인스턴스는 새로운 자체와 동일합니다 그래서,이 모든 수단은 새로운 데이터베이스입니다 그러나 그것이 동적이라는 것을 의미합니다 그래서 이것을 DB와 같은 것으로 변경하면, 그러면 우리는 이것을 바꿀 필요가 없습니다 그리고 나서 정적 인스턴스를 반환합니다

이제 사용자 클래스 내부에서, 무엇을 우리는 DB가 데이터베이스와 같다고 말하고 싶습니다 Get Instance 그런 다음 DB 쿼리를 말할 수 있습니다 그리고 우리는 같은 결과를 얻을 것입니다 하지만이 문제는 사용자를 긴밀하게 연결한다는 것입니다

데이터베이스에 예를 들어, 스토리지 시스템을 변경합니다 사용자를 파일에 저장하려고한다고 가정 해 봅시다 우리가 데이터베이스 인스턴스를 얻을 때마다, 우리는이 수업을 거쳐 파일로 변경해야합니다 너 알지? 그래서, 의존성 주입은 이것을 제거합니다

우리가 바꾸어야 할 것은 생성자뿐입니다 또한 추가 단계를 수행 할 수도 있습니다 저장소 패턴과 같은 것을 사용하여 나중에 저장 장치를 쉽게 변경할 수 있습니다 체계