首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP使用变量创建对象以指向正确的类

PHP使用变量创建对象以指向正确的类
EN

Stack Overflow用户
提问于 2022-04-21 00:35:37
回答 1查看 25关注 0票数 1

抱歉,不是最好的标题。我正在构建一个包含许多不同类的应用程序,这些应用程序将由一个document类调用,该类接受定义为段的数组,然后用于引用要构建到文档中的段类。我提供了文档类和SegmentConfig文件,它们引用哪个段指向哪个文件位置。

首先参考下面的内容

对于如何使用它生成段对象,我找不到明确的答案,我可以像use $segmentObjectLocation一样这样做,因为它等于‘Edi\段\AmtSegment’之类的东西。如果有人有洞察力。

其他信息:我尝试这样做的原因是,这将被用于多个地方,尽管应用程序。

代码语言:javascript
运行
复制
$segmentLocation = include('SegmentConfig.php');
class Document{
    public function __construct($structure){
           $this -> documentStructure = $structure;
           foreach($structure as $segment){
                   buildSegment($segment);
          }
    }

    public function buildSegment($segment){
           $segmentObjectLocation = $segmentLocation ->{$segment};   
       }

} 
<?php
namespace Edi;

SegmentConfig.php

return (object) array(
       'AMT' => 'Edi\Segments\AmtSegment',
       'B4' => 'Edi\Segments\B4Segment',
       'BEG' => 'Edi\Segments\BegSegment',
       'CTT' => 'Edi\Segments\CttSegment',
       'DTM' => 'Edi\Segments\DtmSegment',
       'FOB' => 'Edi\Segments\FobSegment',
       'GE' => 'Edi\Segments\GeSegment',
       'GS' => 'Edi\Segments\GsSegment',
       'IEA' => 'Edi\Segments\IeaSegment',
       'ISA' => 'Edi\Segments\IsaSegment',
       'MSG' => 'Edi\Segments\MsgSegment',
       'N1' => 'Edi\Segments\N1Segment',
       'N2' => 'Edi\Segments\N2Segment',
       'N3' => 'Edi\Segments\N3Segment',
       'N4' => 'Edi\Segments\N4Segment',
       'N9' => 'Edi\Segments\N9Segment',
       'PER' => 'Edi\Segments\PerSegment',
       'PID' => 'Edi\Segments\PidSegment',
       'PO1' => 'Edi\Segments\Po1Segment',
       'Q2' => 'Edi\Segments\Q2Segment',
       'R4' => 'Edi\Segments\R4Segment',
       'REF' => 'Edi\Segments\RefSegment',
       'SAC' => 'Edi\Segments\SacSegment',
       'SE' => 'Edi\Segments\SeSegment',
       'ST' => 'Edi\Segments\StSegment',
       'TC2' => 'Edi\Segments\Tc2Segment',
       'TD1' => 'Edi\Segments\Td1Segment',
       'TD4' => 'Edi\Segments\Td4Segment',
       'TD5' => 'Edi\Segments\Td5Segment',
)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-21 00:42:21

这听起来并不是一个特别好的主意,但是:

代码语言:javascript
运行
复制
class Foo {}
$n = 'Foo';
$f = new $n();
var_dump($f);

输出:

代码语言:javascript
运行
复制
object(Foo)#1 (0) {
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71947647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档