2017-02-03 4 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 /" }, "classmap"[ "응용 프로그램/AppKernel.php" "응용 프로그램/AppCache.php" ] 는}, 하지만 클래스 테스트는 여전히 dumpautoload 그리고 파일 후 발견되지 않은 그 자체입니다 src/test.php에 – The50

0

내 수업 파일. 또한 오토로더가 도움이되었습니다. 고맙습니다.