无法使用 OOP 调用另一个类的函数


Can't call function of another class using OOP

我对php有点生疏,我想知道如何调用login class2中可用的函数,class1内部。这是一个例子:

<?php
    require_once("property2.php");
class Class1 
{
      public function __construct()
      {
         $cls2 = new Class2()
      }
      public function method1()
      {
          $cls2->login() //cl2 is undefined 
      }
} ..
//this is the function
...
class Class2
{
     public function __construct()
     {
     }
     //This is the  function to call
     public function login()
     {
       //Some stuff
     }
} ...

现在PHPSTORM说变量cls2是未定义的。我做错了什么?

当你设置你的变量时,你没有把它设置为一个类属性。在类中定义一个private变量,并使用 $this 关键字"设置并获取它"。

class Class1 {
    private $cls2;
    public function __construct() {
        $this->cls2 = new Class2();
    }
    public function method1() {
        $this->cls2->login();
    }
}

实现此目的的另一种方法是使用继承,其中一个类被视为"父"类。您将通过使用extends来实现此目的

class Class1 {
    public function __construct() {
        //Some stuff
    }
    public function login() {
        //Some stuff
    }
}

class Class2 extends Class1 {
    public function __construct() {
        parent::__construct();
    }
    public function method1() {
        $this->login();
    }
}
class Class1 
{
      public function __construct()
      {
         $cls2 = new Class2();
      }
      public function method1()
      {
          $cls2->login() //cl2 is undefined 
      }
}

当您创建 Class1 并调用 $cls2 = new Class2(); 时,$cls2仅存在于本地。您必须使其成为类属性:

class Class1 
{
    public $cls2;
    public function __construct()
    {
       $this->cls2 = new Class2();
    }
    public function method1()
    {
        $this->cls2->login();
    }
}

然后,您将能够使用$this关键字访问它。

另请注意分号。