删除第一个“\&引用;在Thrift生成的PHP文件上的类名处

删除第一个“\&引用;在Thrift生成的PHP文件上的类名处,php,namespaces,thrift,Php,Namespaces,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 CalculatorI

当我使用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生成提供了许多选项,这些选项向您展示了:

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 {

所以你没有按预期使用工具,然后抱怨结果?这就是你所说的吗?不,当我将thrift文件生成为java文件(或其他文件)时,它工作正常。因为这些语言在名称空间或类名之前没有“\”。只有PHP使用“\”来指定根命名空间,Thrift总是默认地将“\”添加到类头路径中(可能,对于编译器过程来说很容易)。我只想删除“\”,或者无论如何,帮助file.php中的所有类是相对使用的(由其他类使用),而不是绝对使用的。是的,但这就是。您的问题完全源于随后更改名称空间的方法。你想这么做-好的。但是你有责任正确地做这件事,没有其他人。或者您使用我的答案中建议的方法,这也应该会产生预期的结果。感谢您的帮助,我已经尝试过了,但这还没有解决我的问题(它仍然在类路径的开头添加“\”\wtf\sharedservicecif”-这是绝对类路径)。但是,我可以改变我的工作方法,使用你提供的。PS:我想生成一个文件,我可以移动任何地方重命名“名称空间”只。但是,现在,我必须重命名(删除“\”)很多东西。“我想生成一个可以移动到任何地方的文件”-您可以随时调用thrift编译器,使用您想要的任意多个不同的
nsglobal=
。肯定比手动编辑文件快。好的,我会的。当“类在侧名称空间中相对使用,但它们使用绝对路径”时,我感到不舒服