我制作了以下示例类
class a{
function __construct(){
$a =10;
$b=9;
}
}
$z=new a();
我想知道如何使用对象(或通过其他方式)访问$ a和$ b来执行单个$ a + $ b添加。我知道这可以使用超全局数组来完成,但我想知道有没有其他方法可以做到这一点而不是声明它们是全局的。
我知道代码没有多大意义,但是为了示例目的而这样做
答案 0 :(得分:3)
改为使用这些变量属性:
class a
{
public $a;
public $b;
public function __construct() {
$this->a = 10;
$this->b = 9;
}
}
$z = new a();
echo $z->a;
但更好的是,将您的操作抽象为函数:
echo $z->addProperties();
// Inside a class
public function addProperties() {
return $this->a + $this->b;
}
稍后,如果你想添加你需要添加到其他两个属性的第三个属性(甚至减去或乘以),那么你所要做的就是改变你的a
类,而不是任何实际使用它的代码。
答案 1 :(得分:1)
通过名称构造函数用于对象在使用之前可能需要的任何初始化。所以,如果你按照自己的方式行事
function __construct(){
$a =10;
$b=9;
}
变量$ a& $ b范围仅限于函数__construct()。
您可能需要$ a& $ b作为类变量而不是函数
class a{
public $a;
public $b;
function __construct(){
$this->a =10;
$this->b=9;
}
}
$z=new a();
// access a & b as
$z->a ; $z->b
这里的构造函数将在您实例化对象时执行变量的初始化作业。
答案 2 :(得分:0)
在您的示例中,函数中有两个局部变量。您应该创建类字段以通过对象访问它们:
class a {
public $a;
public $b;
function __construct() {
$this->a = 10;
$this->b = 9;
}
}
$ z = new a();
echo $ z-> a;
echo $ z-> b;
答案 3 :(得分:0)
即使你这样做,你也不能在结构中返回:
class a{
public $a;
public $b;
function __construct(){
$this->a =10;
$this->b=9;
return 19;
}
}
$b = new a();
var_dump($b);
你会得到一个a的实例,因此你有其他选择: 制作一个新方法:
<?php
function add()
{
return $this->a+$this->b;
}
?>
或生成getter`s(两者)=&gt;
<?php
function getA()
{
return $this->a;
}
?>
或者将它们公开并访问它们:
$z->a+$z->b;
这取决于您可能拥有或想要施加的应用程序架构或限制