2011-08-05 11 views
3

PHPプログラミングで4年間の不在の後、私はそこにいくつかの新しいプロジェクトを作ろうとしています。クラスが見つかりません - "use"を使用

私はいくつかの有用なライブラリを集めています。そして私は "使用"キーワードに問題があります。エラーがスローされるコードの部分です。

<?PHP 

    use Assetic\Asset\AssetCollection; 
    use Assetic\Asset\FileAsset; 
    use Assetic\Asset\GlobAsset; 

    $js = new AssetCollection(array(
    ... 
?> 

そして、私はエラーを取得しています:

Fatal error: Class 'Assetic\Asset\AssetCollection' not found in /home/php/index.php on line 7 

私は多分php.iniのinclude_pathのと間違って何かあると思ったが、それは以下のようになります。

include_path = ".:/usr/share/php5:/usr/share/php" 

はIをしました何かお見逃しですか?

BTW。私はnginx + php-fpmを使用しています。

+0

asseticスタンドアロンを使用していますか、フレームワークですか? – Maerlyn

+0

スタンドアロン。つまり、私はフレームワークを使用していません。 – ThomK

+0

そして、それらのクラスの定義を含むファイルはどこに入れましたか? –

答えて

9

useキーワードには実際にファイルが含まれていません。自動ロード機能をspl_register_autoload()呼び出しに登録するか、手動でファイルをインクルードする必要があります。

http://www.php.net/manual/en/function.spl-autoload-register.php

通常このように、名前空間と同じパス以下のファイルを探します良いデフォルトのオートローダー:

PHPでautloading上
spl_autoload_register(
    function($className) 
    { 
     $className = str_replace("_", "\\", $className); 
     $className = ltrim($className, '\\'); 
     $fileName = ''; 
     $namespace = ''; 
     if ($lastNsPos = strripos($className, '\\')) 
     { 
      $namespace = substr($className, 0, $lastNsPos); 
      $className = substr($className, $lastNsPos + 1); 
      $fileName = str_replace('\\', DIRECTORY_SEPARATOR, $namespace) . DIRECTORY_SEPARATOR; 
     } 
     $fileName .= str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php'; 

     require $fileName; 
    } 
); 

より、構造、多くの(新しい)プロジェクト次のとおりです:http://groups.google.com/group/php-standards/web/psr-0-final-proposal

+0

ああ! :)私はPHPにいくつか初心者スタートを読む必要があると思う...再び。 ;)ありがとう。それは今働いている。 :) – ThomK

+0

グレート:)お楽しみください! – Pelshoff

+0

このオートローダーはasseticとうまくいっています:https://github.com/symfony/symfony/blob/master/src/Symfony/Component/ClassLoader/UniversalClassLoader.php – Maerlyn

関連する問題