如何在php中访问构造函数外部的成员变量

如何在php中访问构造函数外部的成员变量,php,class,constructor,Php,Class,Constructor,我在课堂上做了以下示例 class a{ function __construct(){ $a =10; $b=9; } } $z=new a(); 我想知道如何使用对象(或通过其他方式)访问$a和$b以执行单个$a+b加法。我知道这可以使用超级全局数组来完成,但我想知道是否还有其他方法可以完成这项工作,而不是将它们声明为全局 我知道这段代码没有多大意义,但出于示例目的执行它将这些变量改为属性: class a { public $a; pub

我在课堂上做了以下示例

class a{

 function __construct(){
    $a =10;
    $b=9;
    }


}

$z=new a();
我想知道如何使用对象(或通过其他方式)访问$a和$b以执行单个$a+b加法。我知道这可以使用超级全局数组来完成,但我想知道是否还有其他方法可以完成这项工作,而不是将它们声明为全局


我知道这段代码没有多大意义,但出于示例目的执行它

将这些变量改为属性:

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
类,而不是任何实际使用它的代码。

将这些变量改为属性:

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
类,而不是任何实际使用它的代码。

在您的示例中,函数中有两个局部变量。您应该创建类字段以通过对象访问它们:

class a {

    public $a;
    public $b;

    function __construct() {
        $this->a = 10;
        $this->b = 9;
    }
} 
$z=新的a()

echo$z->a


echo$z->b

在您的示例中,函数中有两个局部变量。您应该创建类字段以通过对象访问它们:

class a {

    public $a;
    public $b;

    function __construct() {
        $this->a = 10;
        $this->b = 9;
    }
} 
$z=新的a()

echo$z->a


echo$z->b

您无法在CUNstruct中返回,或者即使您执行了以下操作:

    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;
}
?>

这取决于您的应用程序体系结构或您可能拥有或想要施加的限制

您不能在CUNstruct中返回,或者即使您执行了以下操作:

    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;
}
?>

这取决于您的应用程序体系结构或您可能拥有或想要施加的限制。

按名称构造函数用于对象使用前可能需要的任何初始化。所以如果你按你现在的方式做

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

这里的构造函数将在实例化对象时执行变量的初始化工作。

按名称构造函数用于对象使用前可能需要的任何初始化。所以如果你按你现在的方式做

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

当您实例化对象时,这里的构造函数将完成变量的初始化工作。

如果您想直接访问它们,不应该将属性设置为私有。。。将它们公开,而不是直接访问它们,您不应该将属性设置为私有。。。让他们公开,我知道函数是可以实现的,但我想通过构造函数来实现。实验你为什么要这么做?如果您想将一个新变量“d”设置为a和B的和,并访问它或编写一个函数来检索它。我知道可以生成函数,但希望通过构造函数来实现。实验你为什么要这么做?如果要将新变量“d”设置为a和B的和,并访问它或编写函数来检索它。