gpt4 book ai didi

php - 在其他方法中使用来自 __construct() 的变量

转载 作者:可可西里 更新时间:2023-11-01 13:12:16 24 4
gpt4 key购买 nike

我在 __construct() 中定义了一个新变量,我想在这个 class 的另一个 function 中使用它。但是我的变量在另一个函数中是空的!

这是我的代码:

class testObject{
function __construct() {
global $c;
$data = array("name"=>$c['name'],
"family"=>$c['family']);
}

function showInfo() {
global $data;
print_r($data);
}

}

最佳答案

在构造函数中将变量 $data 声明为全局变量:

 function __construct() {
global $c;
global $data;
$data = array("name"=>$c['name'],
"family"=>$c['family']);
}

然后,它也将在其他功能中可见。

请注意,强烈建议不要大量使用全局变量,请考虑重新设计您的类以将类变量与 getters+setters 一起使用。

更合适的方法是使用

class testObject
{
private $data;

function __construct(array $c)
{
$this->data = array(
"name"=>$c['name'],
"family"=>$c['family']
);
}

function showInfo()
{
print_r($this->data);
}

// getter: if you need to access data from outside this class
function getData()
{
return $this->data;
}
}

此外,考虑将数据字段分离到单独的类变量中,如下所示。然后你就有了一个典型的、干净的数据类。

class testObject
{
private $name;
private $family;

function __construct($name, $family)
{
$this->name = $name;
$this->family = $family;
}

function showInfo()
{
print("name: " . $this->name . ", family: " . $this->family);
}

// getters
function getName()
{
return $this->name;
}

function getFamily()
{
return $this->family;
}

}

你甚至可以用你的全局变量 $c 中的数据构造这个对象,直到你从你的代码中删除它:

new testObject($c['name'], $c['family'])

关于php - 在其他方法中使用来自 __construct() 的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15811232/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com