2013-04-18 2 views
0

declare 기능을 사용하려면없이 을 구현하고 싶습니다. 구현은 다른 파일에 있어야합니다.PHP에서 함수를 선언하는 방법은 무엇입니까?

가능한가요? 그렇다면 까다로운 부분이 있습니까? 이렇게하는 것이 일반적입니까? 내가 C++에서 왔기 때문에 나는 궁금하다.

예 :

----------------- declarations.php -----------

<?php 
function first($name, $age); 
function second($country); 
?> 

- --------------- implementations.php -----------

<?php 
include (declarations.php); 

function first($name, $age) 
{ 
// here is the implementation 
} 

function second($country) 
{ 
// here is the other implementation 
} 
?> 
+0

대신에'required_once'를 사용하십시오. 당신이하고있는 방식은 정확하지만 최적이 아닐 수 있습니다 .. –

+0

함수가 이미 선언 된 후에 다시 선언 할 수 없으므로 위의 작업을 수행하지 않아도됩니다. OO로 스와핑해도 아마 같은 결과를 얻을 수 있습니다. .h :( – Dave

답변

5

구현해야하지만 인터페이스가 필요하다고 생각합니다. 수업에서. PHP는 스크립트 언어이기 때문에

http://php.net/manual/en/language.oop5.interfaces.php

, 당신은 여전히 ​​include와 구현에 대한 직접 참조를해야합니다. C++과 같은 연결 단계가 없습니다.

+0

감사합니다. 인터페이스를 사용해 보겠습니다. –

1

아니요, PHP에는 전역 함수를 선언하고 어딘가에 구현하는 헤더 파일과 동일한 기능이 없습니다.

Daniel이 썼듯이 인터페이스가 비슷하지만 "기능 자리 표시 자"가 아니라 모든 구현 클래스가 준수해야하는 인터페이스를 설명하는 것이 목적입니다.

또한 PHP는 버전 5.4에서 함수 또는 메소드 오버로드를 지원하지 않으므로 다른 매개 변수를 사용하더라도 동일한 함수 또는 메소드를 두 번 이상 선언 할 수 없습니다.

1

이 문제를 해결하기 위해 객체 지향 프로그래밍을 사용할 수 있습니까? 몇 가지 추상 메소드를 가진 추상 클래스는 훌륭한 일을 할 것입니다.

// File: MyClass.php 
abstract class AbstractClass { 

    abstract public function first($arg); 
    abstract public function second($arg, $arg2); 

} 

// File: core.php 
require_once('MyClass.php'); 

class MyClass extends AbstractClass { 

    public function first($arg) { 
     // implementation goes here 
    } 

    public function second($arg, $arg2) { 
     // implementation goes here 
    } 
} 
+0

추상 클래스가 반드시 필요한 것은 아니며 인터페이스는 헤더만으로 충분할 것입니다. –

1

PHP와 C + +는이 점에서 다릅니다. 함수를 선언하고 별도로 구현할 필요가 없습니다. 동시에 (동일한 파일에서 선언 및 구현)이 작업을 수행 한 다음 스크립트에 함수를 포함 (include() 또는 require_once())해야합니다.

관련 문제