2017-02-03 12 views
0

私はOrders.phpというファイルを持っており、その中にクラス "Test"関数を使いたいと思います。問題は、クラスファイルがプロジェクトのルートフォルダにあることですが、使用できません。Symfony2クラスの使用

orders.php:

<?php 
namespace AppBundle\Command; 
use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand; 
use Symfony\Component\Console\Input\InputArgument; 
use Symfony\Component\Console\Input\InputInterface; 
use Symfony\Component\Console\Input\InputOption; 
use Symfony\Component\Console\Output\OutputInterface; 
use Test; 

protected function execute(InputInterface $input, OutputInterface $output) 
{ 
    ini_set('memory_limit', '4000M'); 
    $test = new \Test(true); 
    exit; 
} 

とクラスファイルtest.phpをは次のとおりです。

<?php 

namespace Test; 

class Test 
{ 
    public function __construct($connect = null, $query = null) 
    { 
     if ($connect) 
     { 
      $this->connect(); 
     } 

     if ($query) 
     { 
      $this->query($query); 
     } 
    } 
} 

は今test.phpをクラスファイルは、プロジェクトのルートフォルダにあります。 orders.phpファイルはpublic_html \ project \ src \ AppBundle \ Command \ order.phpにあります

クラステストがプロジェクトのルートまたは他のディレクトリにある場合はどうすればよいですか?私は "/"で名前空間を書くので、ルートディレクトリを参照する必要がありますか?

+1

なぜ、AppBundleの下にtest.phpを置くことができないのですか? – Jeet

答えて

2

すでに定義されているPSR-0/PSR-4ディレクトリの外からロードする場合は、test.phpを自動ロードする必要があります。あなたはautoload single filesあなたcomposer.jsonファイル更新することができます:composer.jsonを更新した後

{ 
    "autoload": { 
     "files": ["src/test.php"] 
    } 
} 

を、次のコマンドを実行する必要があります:私は名前空間を使用する必要はありませんでしたことが判明

$ composer dumpautoload 
+0

composer.jsonマイオートロード部: "オートロード":{ \t \t "ファイル" [ "SRC/test.phpを"]、 "PSR-4":{ "": "SRC /" }、 "クラスマップ":[ "アプリ/ AppKernel.php"、 "アプリ/ AppCache.php" ] }、 しかしdumpautoload そして、ファイル自体は後にクラスのテストはまだ発見されませんin src/test.php – The50

0

私のクラスファイル。また、オートローダが助けになりました。ありがとうございました。

関連する問題