다형성 – 4.PHP의 함수 오버라이딩 및 오버로딩

PHP는 느슨한 타입(loosely typed) 검사를 하는 언어로 특별히 자료형을 지정하지 않더라도 자동 자료형변환(type juggling)을 통해 왠만한 연산은 에러 없이 수행할 수 있습니다.

그러나 여기서는 PHP 7부터 제공되는 strict 모드와 클래스 프로퍼티까지 확대 적용되고 있는 자료형 선언(data type declaration)을 도입하여 자료형변환을 엄격하게 제한하도록 하고 함수의 매개변수와 리턴값에 자료형을 지정한 오버라이딩 예제를 작성해 보도록 하겠습니다.

strict 모드로 지정하게 되면 자료형변환으로 느슨하게 처리되던 자료형 검사를 엄격하게 수행하게 되어 해당 위치에 적절한 자료형이 나타나지 않으면 자료형변환을 하지 않고 오류를 발생시킵니다.

앞에서 살펴보았듯이 PHP에서는 다른 일반적인 객체지향 프로그램에서의 오버로딩을 구현하지 못하고 있습니다. 그러나 아직 제약이 있기는 하지만 PHP7 버전 이후에 함수 매개변수와 리턴값 등의 자료형을 엄격히 관리할 수 있도록 정비하였기 때문에, 향후 함수 매개변수와 리턴값의 형식(갯수, 자료형)까지 분별하여 바인딩할 수 있는 기술까지 발전할 수 있을 것으로 보입니다. 만약 이러한 바인딩 기술이 도입된다면(안 할 수도 있지만) 자료형을 구분하여 다형성을 구현하는 정상적인 오버로딩 기능을 구현할 수 있기 때문에 향후에는 아래와 같은 함수 오버로딩도 가능할 것으로 보입니다.

답글 남기기