我对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
未定义。我做错了什么?
答案 0 :(得分:3)
设置变量时,不要将其设置为类属性。在您的课程中定义private
变量,&#34;设置它并使用$this
关键字获取&#34; 。
class Class1 {
private $cls2;
public function __construct() {
$this->cls2 = new Class2();
}
public function method1() {
$this->cls2->login();
}
}
实现此目的的另一种方法是使用 Inheritance ,其中一个类被视为&#34;父级&#34;类。您可以使用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();
}
}
答案 1 :(得分:2)
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
关键字访问它了。
另请注意分号。