내가 네임 스페이스없이 PHP 파일을 생성하는 드리프트를 사용하여 생성 된 PHP 파일에 클래스 이름에서와 같은 (I 네임 스페이스 후를주고 싶다) Calculator.php을 생성합니다 :제거 먼저 ""드리프트
namespace ; //error but no problem, i will give namespace after
interface CalculatorIf {
public function ping();
}
//problem at "\CalculatorIf"
class CalculatorClient implements \CalculatorIf {
//thrift code ...
}
문제입니다 "\ CalculatorIf", 그 \ CalculatorIf이 속한 의미 루트 네임 스페이스 (또는 공간) 내가 예 : "네임 스페이스 MyNS으로 새로운 네임 스페이스를 (부여 할 때 "), \ CalculatorIf가 bel가 아니기 때문에 에러가 발생합니다 내 새로운 네임 스페이스를 설정하십시오. "CalculatorIf"("\"제외)이 생성되면이 문제없이 이름 공간이 변경됩니다. 끔찍한 곳이 많이 있습니다! '
내가 아래 동일합니다 :
php (PHP):
inlined: Generate PHP inlined files
server: Generate PHP server stubs
oop: Generate PHP with object oriented subclasses
rest: Generate PHP REST processors
nsglobal=NAME: Set global namespace
validate: Generate PHP validator methods
그래서의 해결책이
는 드리프트 컴파일러를 호출 :namespace ;
interface CalculatorIf {
public function ping();
}
//this is "CalculatorIf" and not "\CalculatorIf"
class CalculatorClient implements CalculatorIf {
//thrift code ...
}
그렇다면 의도 한대로 도구를 사용하지 않고 결과에 대해 불만을 제기하고 계십니까? 그게 당신이 말하는거야? – JensG
아니오, 중고품 파일 (또는 다른 것)에 중고품 파일을 생성하면 정상적으로 작동합니다. 이러한 언어는 네임 스페이스 또는 클래스 이름 앞에 "\"가 없기 때문입니다. PHP는 루트 네임 스페이스를 지정하기 위해 "\"를 사용하고, Thrift는 항상 클래스 경로의 헤드에 "\"를 항상 기본으로 추가합니다 (컴파일러 프로세스의 경우 간단 함). 필자는 "\"만 제거하거나, file.php의 모든 클래스가 (다른 클래스에 의해) 상대적으로 절대적으로 사용되지 않도록 도움을주고 싶습니다. – Deka
그래,하지만 그것이 [작동 방법] (http://php.net/manual/en/language.namespaces.global.php)입니다. 문제는 이후에 * 네임 스페이스를 변경하는 접근 방식에 기인합니다. 당신은 그렇게하고 싶어합니다. 하지만 그 일을 제대로 수행 할 책임은 당신에게 있습니다. 또는 내 대답에 제안 된 접근법을 사용하면 원하는 결과를 얻을 수 있습니다. – JensG