2012-11-06 4 views
2

나는 자신의 메서드를 가진 클래스가 있고 다른면에는 외부 메서드가 포함 된 PHP 파일이 있습니다. 외부 함수를 포함하는 클래스의 내부는 불가능한 문서에서 명확합니다.클래스의 외부 PHP 파일에서 메서드를 포함

클래스에서이 함수를 어떻게 구현할 수 있습니까? 다른 클래스를 만들고 첫 번째 클래스를 확장하면 옵션이 될 수 없습니다.

+0

포함 할 파일에 ... 클래스의 이러한 실제 메소드 또는 이러한 자유 부동 함수입니까? – prodigitalson

+0

무료 부동 함수입니다. – kakuki

+2

하지 마십시오. 클래스의 요점은 기능을 캡슐화하고 관련 코드를 여러 파일에 전파하지 못하게하는 것입니다. – vascowhite

답변

3

당신은 그들이 자신의 클래스에 동봉되지 않은 경우에도, 클래스에서 외부 함수를 호출 할 수 있습니다 실제 클래스 파일에는 include이 없을 것입니다.

+0

그건 나에게 너무 마술처럼 보입니다. 그러나 당신이 여전히 각 함수에 대한 래퍼를 선언해야하므로 (또는 더 나쁜 경우에는'__call()'을 사용하십시오), 그 점을 다소 상회합니다. –

+0

그것은 위임이라고하지 마술 적이 아닙니다. OP가 단순히 외부 함수를 호출하여 모든 작업을 수행하거나 모든 함수를 클래스의 일부로 감추려는 의도인지 여부는 확실하지 않습니다. 귀하가 후자를 추측하고 있다고 생각합니다. 사실 일 수 있습니다. 당신은'__call()'을 사용할 필요가 없으며 마법이 없다 - 그냥 함수를 호출하고있다. 내 경우에 – Fenton

+0

작동합니다. – kakuki

5

수 없습니다. 메소드 및 필드를 포함하여 모든 클래스 정의는 동일한 파일에 있어야합니다. 동일한 클래스를 서로 다른 두 파일로 선언 할 수 없습니다.

확장하거나 traits (PHP 5.4.x 이상인 경우)을 사용하는 것이 유일한 옵션입니다.

Global.php

<?php 
function doSomething() { 
    return 'Hello'; 
} 
?> 

<?php 
include_once('Global.php'); 

class ExampleClass 
{ 
    public function example() { 
     return doSomething(); 
    } 
} 
?> 

ExampleClass.php

을 :

관련 문제