3

나는 PHP를 반년 동안 프로그래밍 해왔다. 나는 3 개월 동안 객체 지향적이다. 하지만 Abstracted 클래스 나Interface.

내 동료 중 한 명이 설명했지만 Java에서는 :

Entity로 인터페이스를 구현하는 것과 같이 특정 클래스에 구조를 부여하려는 경우 모든 기본 클래스는 인터페이스에서 메소드를 상속 받아 본문을 제공해야합니다.

하지만 여전히 PHP에서는 이해가되지 않습니다. 인터페이스를 사용할 순간을 찾을 수 없습니다.

사람들은 언제 Interfaces를 유용하다고 생각합니까? 그들은 유용합니까? 아니면 내가없이 살 수 있니? 당신이 나를 사용할 수있는 적절한 순간의 완벽한 예를 보여줄 수 있습니까?인터페이스?

내가 설명서를 읽었지만 이해하지 못했습니다.

다른 질문:

인터페이스에 다른 파일을 사용하려면 다음과 같이하십시오.

Body.interface.php

특정 클래스에서 해당 인터페이스를 사용하려면 include ()를 사용해야합니까?


3 답변


1

인터페이스는 클래스에 대한 지침 집합입니다. 인터페이스를 구현할 때 상속 클래스는 인터페이스에 정의 된 규칙을 따라야합니다.

인터페이스에는 상속받은 클래스가 가져야 만하는 모든 메소드와 속성, 인수, 유형 및 모든 PHP 문서의 목록이 포함됩니다. 그것들은 부모 클래스를 확장하는 개발자에게 일련의 지침을 제공하고 확장 클래스에 따라 규칙을 설정하는 두 가지 주요 목적을 제공합니다.

사용하기 좋은 시나리오는 앞으로 다른 클래스에서 액세스하거나 확장 할 클래스를 만드는 경우입니다. 제 경우에는 Restful 또는 SOAP API와 같은 API를 작성할 때 Interfaces를 자주 사용합니다. 기본 클래스는 구체적이고 중요한 몇 가지 필수 도구를 포함하므로 인터페이스는 다른 개발자에게 부모 클래스와 상호 작용할 수있는 방법을 알려줍니다.

인터페이스의 유효한 사용법

interface MyInterface {
    /**
     * This method is required in your inheriting class
     * @var \stdClass $MyRequiredParameter - A object of options
     */
    public function myRequiredMethod(stdClass $MyRequiredParameter);
}

class MyClass implements MyInterface {
    public function myRequiredMethod(\stdClass $MyRequiredParameter)
    {
        return $MyRequiredParameter->MyValue;
    }
}

class MyExtension extends MyClass implements MyInterface {
    public function myRequiredMethod(\stdClass $MyRequiredParameter)
    {
        return $MyRequiredParameter->MyOtherValue;
    }
}

인터페이스가 잘못된 클래스의 예

class MyBadExtension implements MyInterface {
    public function weDontNeedNoStinkingRequiredMethods()
    {
        return FALSE;
    }
}

우리가 인터페이스 패턴을 따르지 않았기 때문에 치명적인 예외가 발생합니다.

Fatal error: Class MyBadExtension contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (MyInterface::myRequiredMethod)


  • 기본적으로 인터페이스의 요점은 클래스에 대한 규칙입니다. 그래서 우리는 하나의 매개 변수로 myRequiredMethod라는 이름의 공용 함수 (예제에 따라)를 하나만 사용할 수 있습니다. 맞습니까? 내 동료처럼 설명하는 것은 수업의 몸입니까? - Jony Kale
  • 인터페이스 메소드는 항상 public이어야합니다. Protected 및 Private 메소드는 클래스 내부에서만 액세스 할 수 있으므로 & # 39; 인터페이스가 아닙니다. - phpisuber01

0

인터페이스는 클래스 상속 트리에 맞지 않지만 특정 메서드 호출을 사용하여 사용할 수 있어야하는 동작을 지정할 수 있도록 설계되었습니다. 그것을 능력이라고 생각하십시오.

당신이 무언가를 셀 수 있다면, 그것은 가치가 있고 당신은셀 수 있는인터페이스. 그리고 이러한 것들 중 일부는 정렬 될 수 있으며, 정렬 가능합니다. 당신은 그것에 대한 자신 만의 인터페이스를 정의 할 수 있고 오름차순 정렬과 내림차순 정렬 모두에 대해 강제 메서드를 사용할 수 있습니다.

인터페이스에는 그 메소드에 대한 구현이 없으므로 구현 클래스에서이를 수행해야합니다.

클래스를 포함하는 것과 같은 방법으로 인터페이스를 포함해야합니다. 가장 쉬운 방법은 오토로더를 사용하여 PHP가 필요할 때 클래스와 인터페이스를로드하는 것입니다.


0

  • 인터페이스는 질문과 같으며 인터페이스가 생성되고 클래스로 구현되면 클래스는 모든 클래스를 사용해야합니다. 인터페이스의 메소드. 인터페이스가 짧다는 것은 메소드가 선언되지 않았다. 클래스는 외부 (자체) 메소드를 사용할 수 있습니다.
  • 인터페이스 확장 가능
  • 모든 메소드는 인터페이스에서 공개되어야한다.
  • 인터페이스는 Bose이고 클라이언트에게 말하고 싶을 때 유용합니다. 이 방법이나 다양한 유형의 메소드를 사용하려면 작성 또는 인터페이스를 작성한 다음 클라이언트가 수업

클래스에 인터페이스를 포함하려면 인터페이스를 만들어야합니다.

 interface interface_name{
        public function submodule1();
        public function submodule2();
}

이제 구현하거나 클래스에 적용

class class_name implements interface_name{
public function submodule1()
{
//some code
}
public function submodule2()
{
//some code
}
}

연결된 질문


관련된 질문

최근 질문