0

我是 OOP 的新手,我不知道为什么这不起作用。在一个类中实例化一个类是不是可以的。我已经在方法中使用包含的文件尝试了这个,它没有做出改变。

include('Activate.php');

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

$run = new First();
4

3 回答 3

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;
}

希望这有帮助。此外,您可以阅读PHP 中有关 OOP 的文档

于 2012-11-14T03:39:44.617 回答
0

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

include('Activate.php');

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

$run = new First();
于 2012-11-16T03:44:10.747 回答
0

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

例如:

汽车类{

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

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

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

}

$class_object=新车;

打印($class_object->getting3());


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

在此处输入图像描述


于 2020-04-13T22:37:11.480 回答