PHP에서 함수를 이와 같이 덮어쓸 수 있나요?

Barbara Streisand
풀어 주다: 2024-11-16 20:07:03
원래의
914명이 탐색했습니다.

Can I Overwrite a Function in PHP Like This?

PHP에서 함수 덮어쓰기: 연습

PHP에서는 원래 질문에 지정된 방식으로 함수를 덮어쓸 수 없습니다. 그러나 유사한 결과를 얻을 수 있는 다른 방법이 있습니다.

원래 접근 방식:

function ihatefooexamples() {
  return "boo-foo!";
};

// Redeclaration
if ($_GET['foolevel'] == 10) {
  function ihatefooexamples() {
    return "really boo-foo";
  };
};
로그인 후 복사

PHP에서는 동일한 기능을 사용하여 함수를 재정의하는 것을 허용하지 않으므로 이 접근 방식은 실현 가능하지 않습니다. 이름 및 매개변수.

OOP를 사용한 대체 접근 방식:

객체 지향 프로그래밍(OOP)을 통한 다형성이 더 나은 솔루션입니다.

인터페이스 만들기 Fooable과 이를 구현하는 두 클래스 Foo 및 FooBar.

interface Fooable
{
    public function ihatefooexamples();
}

class Foo implements Fooable
{
    public function ihatefooexamples()
    {
        return "boo-foo!";
    }
}

class FooBar implements Fooable
{
    public function ihatefooexamples()
    {
        return "really boo-foo";
    }
}
로그인 후 복사

foolevel을 기반으로 적절한 클래스를 인스턴스화하고 ihatefooexamples 메서드를 호출합니다.

$foo = new Foo();

if (10 == $_GET['foolevel']) {
    $foo = new FooBar();
}

echo $foo->ihatefooexamples();
로그인 후 복사

이 OOP 접근 방식을 사용하여 우리는 함수 이름 일관성을 유지하면서 입력 매개변수를 기반으로 ihatefooexamples 함수의 동작을 동적으로 변경할 수 있습니다.

위 내용은 PHP에서 함수를 이와 같이 덮어쓸 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿