Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从另一个类调用一个类的变量的逻辑_Php_Oop_Logic - Fatal编程技术网

Php 从另一个类调用一个类的变量的逻辑

Php 从另一个类调用一个类的变量的逻辑,php,oop,logic,Php,Oop,Logic,我有几个问题: 因此,我有一个a类,如下所示: class A { protected $ _blah = 'blah'; public __construct { $this-> setPath ('test'); new B; } public setPath ($ path) { $ This -> _ blah = $ path; } } class B extends A { `echo $ this -> _ blah`; } 我的B级成绩如下:

我有几个问题: 因此,我有一个a类,如下所示:

class A {   
protected $ _blah = 'blah';   

public __construct {
$this-> setPath ('test');
new B;
}

public setPath ($ path) {
$ This -> _ blah = $ path;
}
}
class B extends A {
`echo $ this -> _ blah`;
}
我的B级成绩如下:

class A {   
protected $ _blah = 'blah';   

public __construct {
$this-> setPath ('test');
new B;
}

public setPath ($ path) {
$ This -> _ blah = $ path;
}
}
class B extends A {
`echo $ this -> _ blah`;
}
不,为什么输出在B类中是“blah”而不是“test”。
但是,在我的类B实例之前,我已将类A中的变量更改为“test”。

根据您发布的代码,问题可能是因为您调用的是$This而不是$This

作为参考,请看一下PHP是如何处理的。因为变量是区分大小写的,所以实际上并没有在发布的代码中更改类的属性

下面是一个更好的例子:

class A
{
    public $property = 'foo';
}

class B extends A
{
    public function __construct()
    {
        $this->property = 'baz';
    }
}

// 'foo';
echo A::$property;

$b = new B;

// 'baz'
echo $b->property;

不要在$后面加空格。它可以工作,但它不是通用样式,并且使您的代码更难让其他人阅读。在->周围的空格也不是通用样式。是否有理由在echo语句周围使用反勾号?