2013-03-09 3 views
5

I은 ​​(자동 로딩 포함) PSR-0 정의에 따라, 클래스 및 함수 정의를 가진 파일을 가지고기능 및 분류 : 미정 함수

namespace Foo; 

function b() {}; 

class Bar {} 

그리고 그 클래스에 대한 테스트를 같은 공간에 배치 :

namespace Foo; 

class BarTest {} 

을 내가 테스트 클래스 내부의 b() 기능에 액세스하려고하면 내가 얻을 undefined function 오류 :

아무 것도 작동하지 않습니다. 어떻게 그 함수를 호출 할 수 있습니까?

+4

'b'와'Bar'가 포함 된 파일을 포함 시켰습니까? 이 클래스를 사용할 때까지'Bar' 파일을 포함하지 않는 자동 로딩이있을 수 있습니다. – Halcyon

+0

'testSomething()'에 의해 무엇을하고 싶니? 'b(); Foo \ b(); \ b(); ' –

+0

@FritsvanCampen 자동 로딩 정보로 질문을 편집했습니다. –

답변

1

PHP의 자동 로딩으로 변경합니다. 그러나이 정적 클래스 메소드 작동 않습니다

namespace Foo; 

abstract class Util 
{ 
    static function doSomething() { 

    } 
} 

을 할 수 있습니다 다음 use 다른 파일을 현재 네임 스페이스와 정적 메서드 호출에서 클래스 :이로

use Foo\Util; 

Util::doSomething(); 

클래스의 방법이며 자동 로딩은 클래스 용입니다.

네임 스페이스/클래스 안에 메서드를 그룹화하는 올바른 방법은 아마도 finalDocs이 될 수 있지만 PHP는이를 지원하지 않습니다 (참조). 당신이 찾을

뿐만 아니라 다음 Q 여기 사이트에 & A 원재료에 설명 : - 1월 19일 '11
  • autoload functions in php -

  • 0

    함수 b(); 몸이 있어야합니다 기능을 지원하지 않습니다

    function b(){};

    +0

    실제로 그것은 시체가 있습니다. 오타였습니다. –

    +0

    이것 좀 봐주세요 @drgomesp http://codepad.viper-7.com/e5Momf –

    +0

    사실, 바깥 쪽에서'b()'함수를 호출하고 그 클래스의 객체 안에 래퍼 메소드를 넣고 싶지는 않습니다. . –