Computer >> 컴퓨터 >  >> 프로그램 작성 >> PHP

PHP에서 메소드 오버로딩이란 무엇입니까?

<시간/>

메서드 오버로딩은 복합 응용 프로그램을 쉽게 구축하는 데 도움이 되는 객체 지향 프로그래밍의 개념입니다. 함수 오버로딩 또는 메소드 오버로딩은 인수로 받아들이는 입력 매개변수의 유형에서 서로 다르게 작동하는 유사한 이름을 가진 여러 메소드를 만들 수 있도록 하는 기능입니다.

위의 개념은 다른 프로그래밍 언어에 적합하며 정적 다형성(메소드 오버로딩)이라고 합니다.

예시

예를 들어 이해합시다.

<?php
   class machine {
      function doTask($var1){
         return $var1;
      }
      function doTask($var1,$var2){
         return $var1 * $var1 ;
      }
   }
   $task1 = new machine();
   $task1->doTask(5,10);
?>

출력:

Error

설명:

PHP는 이 메소드를 두 번 선언했다고 말하므로 오류가 발생합니다.
그러나 다른 프로그래밍 언어에서는 doTask($var1) 및 doTask($var1,$var2) 가 오버로드된 메서드라고 말합니다. 후자를 호출하려면 두 개의 매개변수가 전달되어야 하지만 전자는 하나의 매개변수만 필요합니다.
따라서 이 동작, 즉 코딩 시 함수를 호출하기로 결정하는 것을 정적 다형성(메소드 오버로딩)이라고 합니다.

PHP5와 관련된 메소드 오버로딩을 달성하는 방법에 대해 논의합시다. PHP의 경우 메소드 오버로딩을 달성하기 위해 PHP의 매직 메소드 __call()을 사용해야 합니다.

PHP에서 오버로딩은 메소드의 동작이 입력 매개변수에 따라 동적으로 변경됨을 의미합니다. 이 튜토리얼에서는 이러한 인식을 이해할 것입니다. __call() 메서드에 대해 논의해 보겠습니다.

__call():

클래스가 __call()을 실행하면 해당 클래스의 객체가 존재하지 않는 메서드로 호출되면 해당 메서드 대신 __call()이 호출됩니다.

예시

예제를 통해 메소드 오버로딩을 이해합시다.

<?php
   class Shape {
      const PI = 3.142 ;
      function __call($name,$arg){
         if($name == 'area')
            switch(count($arg)){
               case 0 : return 0 ;
               case 1 : return self::PI * $arg[0] ;
               case 2 : return $arg[0] * $arg[1];
            }
      }
   }
   $circle = new Shape();
   echo $circle->area(3);
   $rect = new Shape();
   echo $rect->area(8,6);
?>

출력:

9.426
48

설명:

여기서 area() 메소드는 dynamically 생성되고 매직 메소드 __call()의 도움으로 실행되며 매개변수를 객체로 전달함에 따라 동작이 변경됩니다.