我正在读一本关于用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.

标签:properties,oop,php

来源: https://codeday.me/bug/20191118/2029910.html

php 公共的 受保护的,php-不使用$this-gt;调用受保护的属性相关推荐

  1. 【壹刊】Azure AD(二)调用受Microsoft 标识平台保护的 ASP.NET Core Web API (上)

    ---------Grant_Allen 是一位博客园新晋博主,目前开始专注于Azure方向的学习和研究,是我认识不多的.打算长时间研究Azure的群友,因此打算帮他开个专栏,同时也希望并祝愿他能一直 ...

  2. wps怎么关闭视图保护_怎么在PPT2013中清除编辑受保护视图功能?

    软件大小: 67.82MB 软件版本: 10.1.0.7400 软件类型: 办公工具 查看详情 直接下载 怎么在PPT2013中清除编辑受保护视图功能?下面小编就为大家带来了在PPT2013中清除编辑 ...

  3. 代码保护软件 VMProtect 用户手册:分析,破解和保护软件

    是一款虚拟机保护软件,是目前最为流行的保护壳之一.VMProtect将保护后的代码放到虚拟机中运行, 这将使分析反编译后的代码和破解变得极为困难.除了代码保护,VMProtect 还可以生成和验证序列 ...

  4. 【Android应用保护技术探索之路系列】之一:Android应用保护技术开篇

    [Android应用保护技术探索之路系列]章节目录 [Android应用保护技术探索之路系列]之一:Android应用保护技术开篇  [Android应用保护技术探索之路系列]之二:对抗反编译  [A ...

  5. 计算机位置隐私保护的书,清华大学出版社-图书详情-《隐私保护数据发布:模型与算法》...

    隐私保护数据发布: 模型与算法前言 随着数据挖掘和信息共享等数据库应用的出现与发展,如何保护隐私数据和防止敏感信息泄露成为当前面临的重大挑战.作为数据挖掘与信息共享应用中的重要环节,数据发布中的隐私保 ...

  6. Fmoc-NH-PEG-MAL,芴甲氧羰基保护氨基-聚乙二醇-马来酰亚胺;内附FMOC脱保护条件

    芴甲氧羰基-氨基-聚乙二醇-马来酰亚胺Fmoc-NH-PEG-MAL聚乙二醇可以增加溶解度和稳定性,减少多肽和蛋白质的免疫原性 Fmoc-NH-PEG-MAL,芴甲氧羰基-氨基-聚乙二醇-马来酰亚胺 ...

  7. jh锂电保护电路_干货 | 分享几款常用的保护电路

    原标题:干货 | 分享几款常用的保护电路 鉴于电源电路存在一些不稳定因素,而设计用来防止此类不稳定因素影响电路效果的回路称作保护电路.在各类电子产品中,保护电路比比皆是,例如:过流保护.过压保护.过热 ...

  8. 分布式电源(风电、光伏)对配电网保护的影响分析与仿真-电流速断保护-PSCAD、matlab

    分布式电源(风电.光伏)对配电网保护的影响分析与仿真-PSCAD.matlab     分布式电源接入配电系统后势必会改变配电网络的拓扑结构和潮流方向,并有可能变为多端电源的供电系统.现有的基于单端电 ...

  9. c#尝试写入或者读取受保护的内存_C# 尝试读取或写入受保护的内存,这通常指示其他内存已损坏。错误类型为:System.AccessViolationException。...

    报错 dll文件应该是C++写的.封装了之后供我的C#程序调用,结果就提示了错误:尝试读取或写入受保护的内存.这通常指示其他内存已损坏.错误类型为:System.AccessViolationExce ...

最新文章

  1. 最小乘积生成树和最小乘积最大匹配
  2. 一篇文章教会你创建vue项目和使用vue.js实现数据增删改查
  3. vue从入门到精通之高级篇(一)vue-router的高级用法
  4. vba 不等于_EXCEL中VBA基础语句(1)
  5. php 星号邮箱,PHP以星号隐藏用户名手机号码和邮箱实例
  6. Oracle 触发器(一)
  7. 地形瓦片地图TiledMap AutoTiles自动图块
  8. 模糊数学(一):模糊集及其表示
  9. Python批量移动文件到指定目录
  10. 单片机实验四 矩阵键盘实验
  11. Alibaba Cloud Linux 搭建Frp内网穿透服务(兼容Centos)
  12. 百度云是如何做到甄别用户上传到网盘的违规内容并删除用户上传的资源的?
  13. RK3566和S905X3/S905X4对比哪个好?
  14. Latex声调(一声、二声、三声等)
  15. 【解决报错原因分析】画图plt.contourf(X,Y,Z)报错TypeError: unhashable type: ‘numpy.ndarray‘(含详细示例讲解)
  16. Java 之父:找Bug最浪费时间,现在不是开源的黄金时代!
  17. pfa100_PFA 的主要性能
  18. 2017php免杀大马,cs 免杀 payload 绕过 360 全家桶
  19. 黑苹果安装 未能与恢复服务器取得联系,联想M73小主机黑苹果 篇二:系统安装及BIOS设置...
  20. open edx: ubuntu 16.04原生native 安装部署

热门文章

  1. android视频拷到iphone6s,爱思助手怎么把电脑视频导入iphone6s
  2. oracle数据库 gbk,oracle 数据库编码转换(转GBK) | 学步园
  3. linux dhcp 论文,毕业论文—基于linux的dhcp服务器配置.doc
  4. linux显示不在sudoers文件中,Ubuntu无法使用sudo提权提示当前用户不在sudoers文件中...
  5. web服务器和应用服务器的区别以及负载均衡---学习笔记
  6. mysql 8+ 忘记root密码 解决方案
  7. 个人博客三|首页后台开发
  8. 每天五分钟linux(8)-cp
  9. eclipse 环境下 FreeMarker 编辑器插件
  10. 使用git进行源代码管理