php中的受保护和私有可见性

php中的受保护和私有可见性,php,Php,我一直在网上学习PHP。我已经声明了受保护的类成员。这些成员不应该在课外访问,但我可以访问它们 这是类(class.Address.inc.php) 这是我使用Address类的Demo.php文件 <?php require 'class.Address.inc'; $address=new Address; $address->street_Address_1= "555 Fake Street";//protected but accessible

我一直在网上学习PHP。我已经声明了受保护的类成员。这些成员不应该在课外访问,但我可以访问它们

这是类(class.Address.inc.php)

这是我使用Address类的Demo.php文件

<?php

require 'class.Address.inc';

     $address=new Address;
     $address->street_Address_1= "555 Fake Street";//protected but accessible
     $address->street_Address_2="Hello";
     $address->city_name="Townsville";

不确定,但将尝试再次进行一次小测试

<?php

require 'class.Address.inc'; //require 'class.Address.inc.php';
$address=new Address;
$address->street_Address_1= "555 Fake Street";//protected but accessible
$address->street_Address_2="Hello";
$address->city_name="Townsville";

不确定,但将尝试再次进行一次小测试

<?php

require 'class.Address.inc'; //require 'class.Address.inc.php';
$address=new Address;
$address->street_Address_1= "555 Fake Street";//protected but accessible
$address->street_Address_2="Hello";
$address->city_name="Townsville";

如何访问类外的受保护变量,在这里您可以获得与设置值相同的值

<?php
class myclass{
    protected $myname;
    public function __construct(){
        $this->myname = "myclass class";
    }
}

class childclass extends myclass{

    public function __construct(){
        parent::__construct();
    }

    public function getMyName(){
        return $this->myname;
    }
}

$obj = new childclass();
echo $obj->getMyName();

如何访问类外的受保护变量,在这里您可以获得与设置值相同的值

<?php
class myclass{
    protected $myname;
    public function __construct(){
        $this->myname = "myclass class";
    }
}

class childclass extends myclass{

    public function __construct(){
        parent::__construct();
    }

    public function getMyName(){
        return $this->myname;
    }
}

$obj = new childclass();
echo $obj->getMyName();

对我不起作用:它应该抛出未捕获的错误。你的PHP版本是什么?我无法重现错误。你的真实代码中一定有相关的东西,你没有向我们展示!对我不起作用:它应该抛出未捕获的错误。你的PHP版本是什么?我无法重现错误。你的真实代码中一定有相关的东西,你没有向我们展示!当然,如果这是实际的错误,它会生成一些其他错误,比如
致命错误:找不到类“Address”
我不理解这个答案。你为什么要要求“class.Address.inc”
粗体?问题已经在使用该部分了。我看到你把
require'class.Address.inc.php'作为注释。您是否只是建议在末尾添加
.php
?那你倒过来了,对不起,伙计们,这是我的错。我不知道.inc文件是要包含的文件的扩展名。如果您检查一下,您将了解我已将文件命名为class.Address.inc.php。我没有意识到的是,我还创建了一个class.Address.inc文件,其中每个成员都是公开的。我已将class.Address.inc.php文件的成员更改为protected。代码正在访问class.Address.inc文件,而不是class.Address.inc.php。当然,如果这是实际的错误,它会生成一些其他错误,比如
致命错误:找不到类“Address”
我不理解这个答案。你为什么要要求“class.Address.inc”
粗体?问题已经在使用该部分了。我看到你把
require'class.Address.inc.php'作为注释。您是否只是建议在末尾添加
.php
?那你倒过来了,对不起,伙计们,这是我的错。我不知道.inc文件是要包含的文件的扩展名。如果您检查一下,您将了解我已将文件命名为class.Address.inc.php。我没有意识到的是,我还创建了一个class.Address.inc文件,其中每个成员都是公开的。我已将class.Address.inc.php文件的成员更改为protected。代码正在访问class.Address.inc文件,而不是class.Address.inc.php。