пространства имен — сначала удалить & quot; \ & quot; в имени класса в файле PHP, который генерируется Thrift

Когда я использую 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 ...
}

1

Решение

Поколение 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 {
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]