나는 PHP를 반년 동안 프로그래밍 해왔다. 나는 3 개월 동안 객체 지향적이다.
하지만 Abstracted 클래스 나Interface
.
내 동료 중 한 명이 설명했지만 Java에서는 :
Entity로 인터페이스를 구현하는 것과 같이 특정 클래스에 구조를 부여하려는 경우 모든 기본 클래스는 인터페이스에서 메소드를 상속 받아 본문을 제공해야합니다.
하지만 여전히 PHP에서는 이해가되지 않습니다. 인터페이스를 사용할 순간을 찾을 수 없습니다.
사람들은 언제 Interfaces를 유용하다고 생각합니까? 그들은 유용합니까? 아니면 내가없이 살 수 있니? 당신이 나를 사용할 수있는 적절한 순간의 완벽한 예를 보여줄 수 있습니까?인터페이스?
내가 설명서를 읽었지만 이해하지 못했습니다.
다른 질문:
인터페이스에 다른 파일을 사용하려면 다음과 같이하십시오.
Body.interface.php
특정 클래스에서 해당 인터페이스를 사용하려면 include ()를 사용해야합니까?
인터페이스는 클래스에 대한 지침 집합입니다. 인터페이스를 구현할 때 상속 클래스는 인터페이스에 정의 된 규칙을 따라야합니다.
인터페이스에는 상속받은 클래스가 가져야 만하는 모든 메소드와 속성, 인수, 유형 및 모든 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)
인터페이스는 클래스 상속 트리에 맞지 않지만 특정 메서드 호출을 사용하여 사용할 수 있어야하는 동작을 지정할 수 있도록 설계되었습니다. 그것을 능력이라고 생각하십시오.
당신이 무언가를 셀 수 있다면, 그것은 가치가 있고 당신은셀 수 있는인터페이스. 그리고 이러한 것들 중 일부는 정렬 될 수 있으며, 정렬 가능합니다. 당신은 그것에 대한 자신 만의 인터페이스를 정의 할 수 있고 오름차순 정렬과 내림차순 정렬 모두에 대해 강제 메서드를 사용할 수 있습니다.
인터페이스에는 그 메소드에 대한 구현이 없으므로 구현 클래스에서이를 수행해야합니다.
클래스를 포함하는 것과 같은 방법으로 인터페이스를 포함해야합니다. 가장 쉬운 방법은 오토로더를 사용하여 PHP가 필요할 때 클래스와 인터페이스를로드하는 것입니다.
클래스에 인터페이스를 포함하려면 인터페이스를 만들어야합니다.
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
}
}