创建动态类这个指针

时间:2018-10-18 11:06:18

标签: php

我在PHP中是菜鸟,因为我主要使用.NET / Java。在代码库中,我正在工作,

class SomeOtherBaseClass{
  public $prop2;
public function __construct(string $prop3)
{
    $this->prop2 = $prop3;
}
 public function __toString()
   {
     return $this->prop2 . ' '. $this->prop2;
   }
}
class SomeClass 
{
 public function __toString()
   {
     return $this->prop1 . ' '. $this->prop1;
   }
    public $prop1;

    public function someMethod() : SomeOtherBaseClass
    {
        return $this->createClass();
    }

    public function __construct()
{
    $this->prop1 = 'foo';
}

    private function createClass(
    ): SomeOtherBaseClass {
        return new class(
            $this->prop1
        ) extends SomeOtherBaseClass {


        };
    }
}
$class = new SomeClass();
echo $class;
echo $class->someMethod();

为什么我遇到找不到prop1的错误。显然,createClass函数是具有SomeClass的{​​{1}}的一部分。为什么我无法访问prop1内部的prop1

1 个答案:

答案 0 :(得分:1)

这是因为$prop1没有价值或意义。

您可以添加__construct()函数来解决您的问题:

public function __construct()
{
    $this->prop1 = 'foo';
}

现在当您调用此类时(例如$foo = new SomeClass();):

$prop1的值为foo,可在您的函数中使用:

public function echoProp()
{
    echo $this->prop1; # will output foo
}

注意:这仅是一个解释性的答案,而不是复制/粘贴的解决方案,但此处提供了所有原理供您在代码中使用。

让我知道这是否不是您想要的东西:)

编辑:

如果prop1中存在SomeOtherClass,则在构造时可以做到

public function __construct()
{
    $this->class = new SomeClass();
    $this->prop1 = $this->class->prop1;
}