Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用Thrift生成的文件中的PSR-4命名空间_Php_Namespaces_Thrift_Psr 4 - Fatal编程技术网

Php 使用Thrift生成的文件中的PSR-4命名空间

Php 使用Thrift生成的文件中的PSR-4命名空间,php,namespaces,thrift,psr-4,Php,Namespaces,Thrift,Psr 4,我使用Apache Thrift生成php文件 thrift -out / --gen php:nsglobal=src\\Application\\Package\\Thrift package.thrift 上面的命令在下面的路径src/Application/Package/Thrift中生成代码,并为命名空间设置src\Application\Package\Thrift,但我在我的项目中使用了Psr-4(带composer),我们将src称为App,所以命名空间应该是App\Appl

我使用Apache Thrift生成php文件

thrift -out / --gen php:nsglobal=src\\Application\\Package\\Thrift package.thrift
上面的命令在下面的路径
src/Application/Package/Thrift
中生成代码,并为命名空间设置
src\Application\Package\Thrift
,但我在我的项目中使用了Psr-4(带composer),我们将src称为App,所以命名空间应该是
App\Application\Package\Thrift

我的项目结构

src |
    | Application |
    |             | Package |
    |             |         | Thrift
我在Thrift文件夹中生成文件,名称空间如下所示:

App\Application\Package\Thrift

你有办法解决这个问题吗

我尝试将
名称空间php App.Application.Package
添加到IDL文件并运行以下命令:

thrift -out /src --gen php /data/service.thrift

但它会创建额外的应用程序文件夹=>src/App/Application/Package/Thrift

在IDL文件中声明名称空间:

 namespace php Whatever.You.Want
完整的例子可以找到

另外,删除nsglobal选项,只需执行以下操作

thrift -out / --gen php package.thrift
我需要在名称空间中的应用程序和在文件夹名称中的src

如果您需要文件夹与命名空间所说的不同,请考虑编写一个shell脚本(或批处理文件)来将生成的文件移动到您需要的文件之后,以节省代码生成。



PS:不确定指定根文件夹作为输出目标是否是一个好主意。

谢谢您的回答。但是当将这个名称空间(
namespace php-App.Application.Package.Thrift
)添加到我的Thrift文件并运行generate命令创建其他文件夹=>
src\Application\Package\Thrift\App\Application\Package\Thrift
谢谢,我尝试了这个命令,但是文件夹应用程序被创建了。在我的项目src===App(psr-4 autoloader)中,我需要名称空间中的App和文件夹名称中的src