2013-03-09 13 views
5

私は(自動ロード付き)PSR-0定義に従って、クラスや関数定義を使用してファイルを持っている:機能とクラス:未定義の機能

namespace Foo; 

function b() {}; 

class Bar {} 

そして私は、そのクラスのテストを持っています同じ名前空間で、場所:

namespace Foo; 

class BarTest {} 

私は、テストクラス内b()機能にアクセスしようとすると、私はundefined functionエラーを取得する:

namespace Foo; 

class BarTest extends PHPUnit_Framework_TestCase 
{ 
    public function testSomething() 
    { 
     b(); 
     Foo\b(); 
     \b(); 
    } 
} 

何も動作していないようです。どのように私はその機能を呼び出すことができますか?

+4

'b'と' Bar'を含むファイルをインクルードしましたか?あなたがそのクラスを使用するまで、 'Bar'を含むファイルを含まないいくつかのオートローディングがあるかもしれません。 – Halcyon

+0

'testSomething()'によって何を達成したいですか? 'b(); Foo \ b(); \ b(); ' –

+0

@FritsvanCampen質問を自動読み込み情報で編集しました。 –

答えて

1

に変更し、身体を持っている必要があります。しかし、それは静的クラスメソッドのために働くん:

namespace Foo; 

abstract class Util 
{ 
    static function doSomething() { 

    } 
} 

をすることはでき、その後useいくつかの他のファイル現在の名前空間と静的メソッドの呼び出しで、そのクラス:このよう

use Foo\Util; 

Util::doSomething(); 

は、クラスメソッドであるとオートローディングはクラス用ですが、これはうまくいきます。

名前空間/クラスの中でメソッドをグループ化する方が正しい場合は、おそらくfinalDocsになりますが、PHPはこれをサポートしていません(参照)。

あなたはこのようにもサイト上でここに以下のQ & A材質で概説見つける:

0

あなたの関数b(); PHPの自動ロードが機能をサポートしていません

function b(){};

+0

実際にはボディがあります。それはタイプミスでした。 –

+0

これを見てください@drgomesp http://codepad.viper-7.com/e5Momf –

+0

事は、私は外部から 'b()'関数を呼び出し、そのクラスのオブジェクトの内部にラッパーメソッドを持たない。 –

関連する問題