Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在.php中的类中实例化一个类_Php_Oop_Class - Fatal编程技术网

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

如何在.php中的类中实例化一个类,php,oop,class,Php,Oop,Class,我是OOP新手,我不明白为什么这不起作用。在类中实例化具有的类是否不可以。我尝试过在方法中包含此文件,但没有进行更改 include('Activate.php'); class First { function __construct() { $this->activate(); } private function activate() { $go = new Activate('Approved'); } } $run

我是OOP新手,我不明白为什么这不起作用。在类中实例化具有的类是否不可以。我尝试过在方法中包含此文件,但没有进行更改

include('Activate.php');

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

$run = new First();

您是说要访问
$go
?因为,如果是这样的话,你需要改变它的范围

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

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

您可以使用
$this
调用
$go

private function activate() {
    $this->go = new Activate('Approved');
}
之后,如果希望从类外访问go,则需要创建包装器:

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

希望这有帮助。另外,你可以阅读。

好的,我解决了我的问题。我的代码有两个错误。一个是我的方法被设置为private,第二个是我发送给类的
$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_对象=新车

打印($class_object->getting3())


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



您在哪里实例化
First
(您有
$First=new First();
以后吗?)是的。。我来编辑。我在文档末尾开始上课。
include
有效吗?它可以返回false。您的意思是让
$this->go=new激活(…)
?您创建了一个新的
Activate
,然后由于
Activate()
函数完成而将其丢弃。我不知道这是否是故意的。我动态创建了activate()。我试图通过调用Activate类来打开插件。这更有意义吗?这就是大局。我在跑步的时候跑一节课。在类中,我检测天气与否,该程序已注册。如果它已经注册,那么我需要实例化另一个类。我在飞行中拼凑的方法的名称。
include('Activate.php');

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

$run = new First();
function getting(){
    echo ("Hello World");   
}

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

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