繁体   English   中英

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

[英]How do I Instantiate a class within a class in .php

我是 OOP 的新手,我不明白为什么这不起作用。 在一个类中实例化一个类是否可以。 我已经在方法中使用包含的文件尝试过这个,但它没有做任何改变。

include('Activate.php');

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

$run = new First();

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

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

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

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

private $go = null;

你使用$this调用$go

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

之后,如果要从外部类访问 go,则需要创建包装器:

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

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

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

include('Activate.php');

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

$run = new First();

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

例如:

类汽车{

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

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

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

}

$class_object=新车;

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


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

在此处输入图片说明


暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM