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


How to access member variables of a constructor outside of it in php

我创建了下面的例子class

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

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

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

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

在您的示例中,函数中有两个局部变量。您应该创建类字段,以便通过object:

访问它们。
class a {
    public $a;
    public $b;
    function __construct() {
        $this->a = 10;
        $this->b = 9;
    }
} 

$z = new a();

echo $ z ->,

echo $ z -> b;

即使返回了,也不能在构造函数中返回:

    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 =>

<?php
function getA()
{
   return $this->a;
}
?>

或者将它们声明为public并访问它们:

$z->a+$z->b;

这取决于你的应用架构或者你可能有或者想要施加的限制