Когда я использую Thrift для генерации PHP-файла без пространства имен (я хочу дать пространство имен после), так же как:
//namespace php tutorial //don't use namspace
service Calculator {
void ping();
}
Thrift создаст 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 принадлежит корневому пространству имен (или не имеет пространства имен), когда я хочу дать новое пространство имен (например, «namespace MyNS;»), он получит ошибку, потому что \ CalculatorIf не принадлежит моему новому пространству имен. если «CalculatorIf» (без «\») были созданы, я буду менять пространство имен без этой проблемы. Есть много места, что то же самое, ужасно! ‘
Я хочу то же самое ниже:
namespace ;
interface CalculatorIf {
public function ping();
}
//this is "CalculatorIf" and not "\CalculatorIf"class CalculatorClient implements CalculatorIf {
//thrift code ...
}
Поколение PHP предлагает ряд опций, которые thrift --help
показывает вам:
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
Поэтому решение состоит в том, чтобы вызвать Thrift-компилятор следующим образом:
thrift -gen php:nsglobal=wtf yourfile.thrift
что приводит к
interface CalculatorIf extends \wtf\SharedServiceIf {
Других решений пока нет …