PHP报错:: Cannot access protected property

代码如下:<?php/***DefineMyClass*/classMyClass{public$public='Public';protected$protected=... 代码如下:
<?php
/**
* Define MyClass
*/
class MyClass
{
public $public = 'Public';
protected $protected = 'Protected';
private $private = 'Private';

function printHello()
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}

$obj = new MyClass();
echo $obj->public; // 这行能被正常执行
echo $obj->protected; // 这行会产生一个致命错误
echo $obj->private; // 这行也会产生一个致命错误
$obj->printHello(); // 输出 Public、Protected 和 Private

当我访问$project的时候,出现致命错误。project定义的变量,不是可以在自己的类中调用么,为什么还报错呢?
展开
 我来答
nbyh2012
2013-08-04 · TA获得超过3278个赞
知道小有建树答主
回答量:483
采纳率:100%
帮助的人:805万
展开全部

声明为protected、private的变量,只能在类的内部实现中使用。而类的实例(对象)无法直接访问这些变量,会产生致命错误。你没有正确理解这个概念。


私有变量的访问参见下例:

<?php
class Cls {
    private $_foo = null;
    public function setFoo($value) {
        $this->_foo = $value;
    }
}

望采纳,谢谢支持!

xwltmw
2013-08-04 · TA获得超过266个赞
知道小有建树答主
回答量:213
采纳率:0%
帮助的人:127万
展开全部
受访问修饰限定符限制,

protected 是作用在继承链内的,在继承链内可被访问

private 就是单独属于这个类的,类外无法访问
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
rusterx
2013-08-04 · TA获得超过136个赞
知道小有建树答主
回答量:86
采纳率:100%
帮助的人:76.8万
展开全部
你访问保护变量和私有变量,当然会出错。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式