为什么 php 将空字节添加到私有和受保护的属性名称中?

2024-01-07

我是 PHP 世界的新手,并从中学习php.net http://php.net/。我知道,当将对象转换为数组时,会在私有和受保护的属性名称周围添加空字节班级名称 or 星号键 (*)附加在数组键中私有和受保护的属性名称之前。

但我的问题是WHYphp 添加空字节WHAT是什么原因?

谁能用简单易懂的话来讲述。

例子会有很大帮助。

Thanks


要点是private/protected属性的缺点是您不应该从类本身的外部访问它们。这不是一种安全措施或类似的措施,而是在不同代码片段之间强制执行合同。当您将某物标​​记为private/protected,您明确声明此东西不适合一般公众消费,并且不应将任何外部代码与其耦合。

这主要是对您自己和其他开发人员的提醒,如果您不遵守该标记,最坏的情况是会给您轻微的惩罚;无论如何,这都不是铁定的保护。有很多方法可以解决这个问题,例如使用反射。But,如果它被制成too easy为了访问这些私有部分,开发人员可能会左右移动并否定整个要点。

由于在将对象转换为数组时这些属性包含在数组中,因此至少由于添加了附加属性,如何直接访问它们并不是立即显而易见的NUL字节。如果您花时间弄清楚如何访问它们,您希望真正知道自己在做什么。

TL;DR:(我相信)这是尝试强制执行一些最低编码标准的最低限度尝试,并且一旦新手弄清楚什么是数组转换,就不会让他们违反所有 OOP 原则。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 php 将空字节添加到私有和受保护的属性名称中? 的相关文章

  • Google Drive 服务帐户上传的位置

    我正在尝试使用服务帐户将文件上传到我的 Google 云端硬盘 当我部署此代码时 我不希望用户给予授权 我希望他们上传到我的帐户 我通过 PHP 使用它 下面是我到目前为止的情况 这段代码是基于官方文档给出的例子 当我运行 php 脚本时
  • Yii:使用多重上传文件扩展时如何管理视频

    我是yiibie 正在努力上传视频 我已经用过uploadmultifile扩展并根据此链接进行了更改http www yiiframework com extension uploadmultifiles in my video view
  • 使用邮箱认证注册,只有30%激活?

    我正在使用 php 和 mysql 我的网站是 Flash 的 完整的 Flash 网站 我有一个允许用户注册的网站 注册过程包括发送 激活电子邮件 点击链接激活帐户 前两周还好 在大约 2000 个用户中 有 1800 个用户被激活 此后
  • 考虑到我的图像链接存储在MySQL数据库中,如何通过php显示存储在文件夹中的图像

    作为良好的做法 我只将图像链接存储在数据库中 问题是 我应该如何存储图像的链接 假设它在 c 上 c image jpg 我应该使用哪段 PHP 代码来显示该图像 我只显示路径 我该怎么做才能显示图像 我可以用这个吗 query SELEC
  • 如何使用 Laravel 5.3 注销并重定向到登录页面?

    我正在使用 Laravel 5 3 并尝试实现身份验证系统 我用了php artisan命令make auth来设置它 我根据我的布局编辑了视图 并将其重定向到我的仪表板页面而不是主页 在设置中设置为默认值 现在 当我尝试注销时 它向我抛出
  • mysqli_num_rows 无法正常工作

    I have an admin panel in my website in which the admin creates new pages he provides the page name and then the spaces o
  • 包含 WordPress 之外的 WordPress 内容

    我正在寻找构建 WordPress 网站的移动版本 并将其大部分内置于静态文件中 但我试图从运行移动网站的外部 PHP 文件内部访问 WordPress 内容 如何在不手动编写 SQL 查询的情况下访问循环或数据库 Edit 为了澄清一下
  • 在 WordPress 中挂钩 AJAX

    我一直在深入研究 Javascript 和 AJAX 的世界 我非常接近 但由于某种原因 我认为我没有正确地连接到 wordpress ajax 函数 我已经仔细阅读了文档和这个 认为 99 都在那里 这个应用程序的作用是有一个项目列表 每
  • 在路线中使用中间件的车队购物车,但我在项目中找不到任何 $routemiddleware...甚至在 kernel.php 中也找不到...我在哪里可以找到它?

    在路线中使用中间件的车队购物车 但我在项目中找不到任何 routemiddleware 甚至在 kernel php 中也找不到 我在哪里可以找到它 Laravel 版本 5 7 护照版本 7 5 CMS 舰队购物车 内核 php name
  • 将优惠券百分比添加到 WooCommerce 中的购物车页面

    我试图在购物车页面中显示优惠券百分比 但收到几个错误 这是我的自定义代码 Add Coupon Percentage to Cart function my coupon percentage cart value coupon if co
  • 递归树遍历 - 如何跟踪递归级别?

    我基本上试图从表示树结构的多维数组构建 html ul li 嵌套列表 下面的代码工作正常 但我想改进它 我需要一种方法来跟踪递归级别 以便我可以将不同的类应用于不同的级别 向生成的输出添加缩进等 function buildTree tr
  • MySQL分层存储:搜索所有父母/祖父母等。给定子节点 id 的节点?

    我使用分层模型存储类别 如下所示 CATEGORIES id parent id name 1 0 Cars 2 0 Planes 3 1 Hatchbacks 4 1 Convertibles 5 2 Jets 6 3 Peugeot 7
  • Codeigniter子域路由

    我正在尝试在 CodeIgniter 框架上运行的网站上设置博客脚本 我想在不对现有网站代码进行任何重大代码更改的情况下执行此操作 我认为创建一个指向另一个控制器的子域将是执行此操作的最干净的方法 我设置新设备所采取的步骤Blog涉及控制器
  • 获取 PHP 网站的根 URL

    我目前正在开发一个 PHP 项目 正在寻找一种方法来获取网站根目录的 URL 我的根目录有一个配置文件 所以我正在考虑使用它来找出 基本 URL 我正在寻找一种动态执行此操作的方法 以便我可以找到网站根目录的 URL 即http domai
  • 避免刷新时上传图片

    我正在使用最简单的图像上传形式 我非常希望保持这种方式 只需要一些 php 代码看起来像这样
  • 如何确定网站的语言

    我有一个网站的网址 需要找出该网站使用哪种语言 无论是西班牙语 法语 意大利语等 该网站的顶级域名是 com 这根本没有帮助 我无法简单地检查字符串是否包含 de fr 或任何其他国家 地区代码 我试图得到lang的属性html标签 但有很
  • 我可以使用 vim “star” 搜索来搜索 PHP 类成员和方法吗?

    vim 星号 星号搜索 help star 是一个很棒的功能 它可以让您找到光标所在单词的下一个出现位置 不幸的是 它将美元前缀视为字符串的一部分 因此如果我在类名中的 SearchTerm 上方按 它会在注释中找到 SearchTerm
  • 如何从一行获取数据并移动到模态?拉拉维尔 5.4

    我有一个表 其中列出了数据库中的产品 其中包含 ID 名称 描述以及其他数据类型 我创建了一个按钮 该按钮将调用模态来显示有关产品的更多详细信息 但是模态始终显示表中第一个产品的详细信息 而不是与其相关的 ID 我的桌子 我的表代码 tab
  • 使用 PHP MySql 进行关键字搜索?

    我的 mysql 表中有标题 varchar 描述 text 关键字 varchar 字段 我保留了关键字字段 因为我认为我只会在这个字段中搜索 但我现在需要在所有三个字段中进行搜索 所以对于关键字 word1 word2 word3 我的
  • Laravel 中间件将变量返回给控制器

    我正在对用户进行权限检查 以确定他们是否可以查看页面 这涉及首先通过一些中间件传递请求 我遇到的问题是 在将数据返回到视图本身之前 我在中间件和控制器中复制相同的数据库查询 这是设置的示例 路线 php Route get pages id

随机推荐

  • 非 JSP(独立)上下文中的 JSTL/JSP EL(表达式语言)

    谁能推荐一个框架 用于在独立应用程序中按照 JSP EL 表达式语言 进行模板化 格式化消息 我希望能够实例化某种对象 给它一个模板 Dear customer firstName You order will be dispatched
  • Vue.js 中的嵌套组件:无法安装组件:模板或渲染函数未定义

    我正在使用 Vue CLI 并收到此错误 它被发现于
  • 如何在Python中读取多行.properties文件

    我正在尝试读取 java 多行 i18n 属性文件 有这样的行 messages welcome Hello World messages bye bye 使用此代码 import configobj properties configob
  • OpenGL:将鼠标点击投影到几何体上

    我设置了这个视图 glMatrixMode GL MODELVIEW Switch to the drawing perspective glLoadIdentity Reset the drawing perspective 我通过单击鼠
  • bson 的 javascript/javascriptwithscope 类型有什么用

    我想知道这两种类型的 bson javascript javascriptwithscope 的使用 作为 bson 的基本类型 它的用例是什么以及如何生成 javascriptwithscope 对象以保存在 mongodb 中 类型 编
  • 使用 pug mixin 结果作为属性值

    这是我想要完成的任务的精简版本 mixin foo bar bar html a href foo baz test 我希望将锚标记编译为 a href baz html test a 但我得到的是类型错误 foo不是一个函数 虽然我确实看
  • Lightgallery 中的图像位于单独的 div 中

    我有多个行图像 我想要光廊 https github com sachinchoolur lightGallery捕获我页面上的所有图像 我似乎只能为每一排设置单独的灯光画廊 而不是一个大画廊 出现此问题的原因是我在 div 中有一组图像
  • 使用 pyopengl 渲染 pygame 精灵

    在我的游戏中 我使用 pygame 来渲染精灵 但是该工作是在 CPU 端完成的 对于性能问题 如何使用 pyopengl 绘制这些精灵 那些天我开始学习c 中的opengl 它和python类似吗 如果你只想在 GPU 上渲染精灵 你可以
  • 集会看板 - 隐藏史诗故事

    有没有办法从 Rally 的看板应用程序中隐藏史诗故事 即与儿童有关的故事 大概通过将看板 目录应用程序 代码自定义为自定义应用程序 我发现看板 javascript 应用程序代码的一部分根据 分配给版本 的故事是否隐藏来设置查询 并且我在
  • Python子进程check_output编码特殊字符

    我在 python 编码方面遇到一些问题 当我尝试执行此操作时 subprocess check output ipconfig shell True 它给了我一个包含特殊字符的输出 例如 Statut du m x82dia M x82d
  • RecyclerView 中类似寻呼机的行为

    我正在尝试为水平方向实现类似 ViewPager 的行为RecyclerView 来自适配器的数据应该正常膨胀和绑定 但是通过适配器的导航Recycler应该区别对待 当用户滑动 或尝试滚动 时 我移动Recycler朝该方向的一个项目 将
  • Nodemailer 与 Gmail |出现错误:错误:无效登录:535-5.7.8 用户名和密码不被接受

    我正在尝试使用带有 Gmail 帐户的 Nodemailer 在我的应用程序中设置电子邮件验证 我的问题是它报告错误 指出我的用户名和密码尚未被接受 There was an error Error Invalid login 535 5
  • 如何检查数据库列中存在的字符串? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我有带有字
  • 将 BigDecimal 格式化为最多 2 位小数的字符串,删除小数部分的 0

    我有一个 BigDecimal 数字 我只考虑它的小数点后两位 所以我使用以下方法截断它 bd bd setScale 2 BigDecimal ROUND DOWN 现在我想将其打印为字符串 但如果它是 0 则删除小数部分 例如 1 00
  • 如何解决延迟启用CheckJNI?

    我是 android 新手 正在使用 genymotion 模拟器 但突然我在 log cat 中遇到了延迟启用检查问题 并且我的应用程序崩溃了 我尝试在其他模拟器上运行它 但在 log cat 中仍然收到相同的消息 我搜索了很多网站但仍然
  • Java中如何检测字符集编码?

    有谁知道是否有一种简单的方法来检测Java中的字符集编码 在我看来 有些程序能够检测给定的数据使用哪个字符集 或者至少能够进行近似 我想底层机制必须解码每个字符集中的数据 并选择具有最少未定义字符的字符集 然后选择哪个字符集更常见以打破平局
  • 如何使用node.js和Request包禁用HTTP标头中的“withcredentials”?

    使用 Node js 和Request https github com mikeal request来自浏览器的包 通过浏览器化 http browserify org 我使用 CORS 在单独的域上执行 HTTP GET 请求 在服务器
  • Python 列表可变

    我试图使用Python术语来解释为什么会发生以下情况 有人可以解释为什么吗tmp变成 1 2 3 不保持原样 1 2 arr tmp 1 2 arr append tmp print arr 1 2 tmp append 3 print a
  • 用户注销后 PHP 会话不会销毁

    我正在尝试为我的 PHP 应用程序创建身份验证机制 但我很难销毁会话 我尝试取消设置先前在会话数组中设置的身份验证令牌 并通过以下方式销毁会话 session destroy 以及在销毁会话之前完全重置会话数组 我正在调用标头函数 并在函数
  • 为什么 php 将空字节添加到私有和受保护的属性名称中?

    我是 PHP 世界的新手 并从中学习php net http php net 我知道 当将对象转换为数组时 会在私有和受保护的属性名称周围添加空字节班级名称 or 星号键 附加在数组键中私有和受保护的属性名称之前 但我的问题是WHYphp