php-不使用$this->调用受保护的属性
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php-不使用$this->调用受保护的属性,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1350字,纯文字阅读大概需要2分钟。
内容图文
![php-不使用$this->调用受保护的属性](/upload/InfoBanner/zyjiaocheng/665/1afd5ff7bf8d4e1fa05b32bab34e58a8.jpg)
我正在读一本关于用PHP创建MVC框架的书.在第二章中,我们构建了一个有点奇怪的类.让我举例说明.
该类称为检查器.以下是属性:
protected $_class;
protected $_properties = array();
protected $_methods = array();
protected $_meta = array(
"class" => array(),
"properties" => array(),
"methods" => array()
);
如您所见,它们都被声明为受保护的.
但是现在,这是该类的许多方法之一:
public function getClassMethods()
{
if (!isset($_methods))
{
$methods = $this->_getClassMethods();
foreach ($methods as $method)
{
$_methods[] = $method->getName();
}
}
return $_properties;
}
_getClassMethods()是在上面几行声明的方法,但对于我们的示例而言并不重要.
因此,显然$_methods是先前声明的属性.但是为什么它前面没有$this->呢? ?首先,我认为这是因为该属性被声明为受保护的,但是我进行了一些测试以查看该属性是否正常且可以正常工作,但是当然抛出了错误.
我不敢相信错误来自本书:我认为作者是专业的PHP开发人员,并且他们在类中声明的几乎所有其他方法中都犯了相同的错误(?).
因此,PHP是否可以在不使用$this->的情况下调用属性? ?它与php.ini中的配置行有关吗?也许是因为使用了PHP的旧版本.
解决方法:
在函数内部,$_ methods和$this-> _methods将是两个不同的变量/属性.
要访问受保护的$_methods属性,您需要使用$this-> _methods.该类的任何方法均可用.
如果仅使用$_methods,那么您正在创建/访问一个仅存在于该方法内部的变量,该变量将在该方法完成执行后消失.
因此,这本书是不正确的,在您的方法中,您需要使用$this-> _methods和$this-> _properties.
内容总结
以上是互联网集市为您收集整理的php-不使用$this->调用受保护的属性全部内容,希望文章能够帮你解决php-不使用$this->调用受保护的属性所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。