【问题标题】:PSR-4 namespace in generated files with Thrift使用 Thrift 生成的文件中的 PSR-4 命名空间
【发布时间】:2020-11-09 09:02:41
【问题描述】:

我用 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 文件夹中生成文件,命名空间如下:

应用\应用\包\Thrift

你有解决这个问题的想法吗?

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

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

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

【问题讨论】:

    标签: php namespaces thrift psr-4


    【解决方案1】:

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

     namespace php Whatever.You.Want
    

    完整的例子可以在here找到

    另外,删除 nsglobal 选项并执行

    thrift -out / --gen php package.thrift
    

    我需要命名空间中的 App 和文件夹名称中的 src

    如果您需要不同于命名空间所说的文件夹,请考虑编写一个 shell 脚本(或批处理文件)以在 Thrift 代码生成后将生成的文件移动到您需要它们的位置。


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

    【讨论】:

    • 感谢您的回答。但是,当将此命名空间 (namespace php App.Application.Package.Thrift) 添加到我的节俭文件并运行生成命令时,会创建其他文件夹 => src\Application\Package\Thrift\App\Application\Package\Thrift
    • 谢谢,我试过这个命令,但是文件夹 App 被创建了。在我的项目 src === App (psr-4 autoloader) 我需要命名空间中的 App 和文件夹名称中的 src
    猜你喜欢
    • 2014-11-12
    • 2015-09-22
    • 2023-03-25
    • 2015-12-01
    • 2023-04-02
    • 2019-03-09
    • 1970-01-01
    • 2019-08-27
    • 2015-08-23
    相关资源
    最近更新 更多