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 - Fatal编程技术网

PHP:无法访问受保护的变量

PHP:无法访问受保护的变量,php,oop,Php,Oop,我为这两门课写练习: abstract class SocialNetworks { abstract protected function getFacebookGraph(); } // class SocialNetworks class GetSocialNetworks extends SocialNetworks { protected $fbData; public function setFacebookData($facebookData) {

我为这两门课写练习:

abstract class SocialNetworks
{
    abstract protected function getFacebookGraph();

} // class SocialNetworks

class GetSocialNetworks extends SocialNetworks
{
    protected $fbData;
    public function setFacebookData($facebookData) {
        $this->fbData = $facebookData;
        $this->getFacebookGraph($this->fbData);
    }
    protected function getFacebookGraph() {
        print_r($this->fbData);
    }
}
$facebookData
是一个数组)

在这种模式下,这个类正确地打印我传递的数组

但我无法在任何模式下“直接”访问
$fbData
,只能使用
$this->fbData
。否则我会

Undefined variable: fbData
这是正常的还是有直接使用的方法
$fbData


我重复一遍。。。这些是我在OOP中的第一个练习,所以我需要学习越来越多的内容。

在其他语言中,您可以不使用“this”访问类成员。php并非如此。在这里,您必须始终使用“$this”。

取决于范围:

$this->variable
用于对象内部

self::$variable
用于静态类内部

parent::$variable
用于在子对象内部访问父类

$variable
在本地范围内使用


类成员不是本地的,它们是相对超级的。

这很正常,不用担心。
$this->fbData
是指对象属性时的语法<代码>$fbData是指自由变量。这是。在阅读Jon关于属性的链接后,请阅读可见性