如何在.php中实例化类中的类

时间:2012-11-14 03:25:26

标签: php oop class

我是OOP的新手,我无法弄清楚为什么这不起作用。在类中实例化一个类是不行的。我已尝试使用方法中包含的文件并且它没有进行更改。

include('Activate.php');

class First {
    function __construct() {
    $this->activate();
    }       
    private function activate() {
    $go = new Activate('Approved');
    }
}

$run = new First();

3 个答案:

答案 0 :(得分:1)

您是说要访问$go吗?因为,如果是这种情况,你需要改变它的范围。

如您所见,此方法中的$go仅在activate()内可用:

private function activate() {
    $go = new Activate('Approved');
}

要使其可以从班级中的其他位置访问,您需要在activate()之外声明它:

private $go = null;

您使用$go致电$this

private function activate() {
    $this->go = new Activate('Approved');
}

之后,如果你想从外面访问go,你需要创建包装器:

public function getGo(){
   return $this->go;
}

希望这有帮助。另外,您可以阅读documentation about OOP in PHP

答案 1 :(得分:0)

好的,我想出了我的问题。我的代码有两个错误。一个是我的方法被设置为私有,其次我在我$parms发送给班级的错误。

include('Activate.php');

class First {
    function __construct() {
    $this->activate();
    }       
    private function activate() {
    $go = new Activate('Approved');
    }
}

$run = new First();

答案 2 :(得分:0)

您可以在同一类中创建另一个公共函数的帮助下访问私有方法,并在公共方法或函数中调用私有函数。现在,您可以在 $ run 实例的帮助下调用私有函数。

例如:

级轿车{

function getting(){
    echo ("Hello World");   
}

private function getting2(){
    echo ("Hello World Againg");
}

public function getting3(){
    $this->getting2();
}

}

$ class_object =新车;

print($ class_object-> getting3());


您的输出屏幕如下图所示。

enter image description here