【问题标题】:Property value setting inside constructor构造函数内的属性值设置
【发布时间】:2023-03-21 19:34:01
【问题描述】:

我在构造函数中设置了一个属性值,例如:

class ApiController extends Controller
   {
    protected $start;
    protected $limit;
    protected $string;

    public function __construct(Request $request) {
        $this->request = $request;
        $this->string = 'from: '.$this->start. ', size: '.$this->limit;
    }

并尝试从类内的方法访问$this->string,例如:

    public function test() {
        $this->start = 0;
        $this->limit = 10;
        echo $this->string;
    }

这与以下输出相呼应:

from: , size: 

我如何设置$start$limit 属性,就像我正在尝试做的那样。

【问题讨论】:

标签: php oop properties


【解决方案1】:

在构造函数中,当 $this-string 初始化时,$this->size 和 $this->limit 仍然没有任何值。您必须在初始化 $this->string 之前设置它们的值,或者在 $this->size 和 $this->limit 具有值之后初始化 $this->string。

【讨论】:

    【解决方案2】:

    首先调用您的构造函数,其中您的“字符串”变量(顺便说一句我建议使用不同的名称)设置为“from: , size:”。

    然后在你的 test() 方法中,你设置了 start 和 limit 变量,但是你回显了在你的构造中设置的字符串变量。您的代码尚未使用新值更新“字符串”变量!

    简单的解决方案,将您的 $this -> string = ... 行移动/复制到 echo $this -> string 行的上方。

    我希望这是有道理的:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多