一个类可以实例化另一个类吗? (PHP)

我尝试了这一点,当我尝试在类“second”中实例化类“first”时出现错误。

类“second”中的注释部分会导致错误。

class first {
    public $a;

    function __construct() {
        $this->a = 'a';
    }
}

class second {
    //$fst = new first();
    //public showfirst() {
        //$firsta = $this->first->a;
    //  echo "Here is first $a: " . $firsta;
    //}
}

编辑:

这会导致服务器错误,即使我在“second”类中的所有类都是“first”类的实例化。

class second {
    $fst = new first();
    //public showfirsta() {
    //  $firsta = $this->fst->a;
    //  echo "Here is first $a: " . $firsta;
    //}
}

尝试这个:

class First {
    public $a;

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

    public function getA() {
      return $this->a;
    }
}

    class Second {
        protected $fst;
        public function __construct() {
          $this->fst = new First();
        }

        public function showfirst() {
           $firsta = $this->fst->getA();
           echo "Here is first {$firsta}";
        }
    }

    $test = new Second();
    $test->showfirst();

$fst = new first();

你不能声明一个在函数外实例化一个新类的变量。 默认值不可变。 它必须是一个字符串,一个数字或一个数组。 对象被禁止。

public showfirst() {

你忘了那里的单词function

    $firsta = $this->first->a;

您没有$first声明的类变量$first 。 您将其命名为$fst ,并将其引用为$this->fst

    echo "Here is first $a: " . $firsta;
}

为了你的目的(无论那些可能):

class second {
    public function showfirst() {
        $fst = new first();
        $firsta = $fst->a;
        echo "Here is first $a: " . $firsta;
    }
}

你可以在另一个实例化一个类。 就你的情况而言,在你的两个例子中,你总是指向错误的变量。 此外,您不能在属性声明中分配类:

class second {

    public $fst;

    public function showfirsta() {
    $this->fst = new first();
    $firsta = $this->fst->a;
    echo "Here is first $a: " . $firsta;
    }
}
链接地址: http://www.djcxy.com/p/59549.html

上一篇: Can a class instantiate another class? (PHP)

下一篇: { } mark in echo "{$e