在 PHP 中显式声明属性重要吗?

2024-05-05

我按照教程用 PHP 创建了一个简单的博客写作应用程序,并修改了本教程中的类,以便它们具有附加功能。修改这个非常简单的应用程序让我更好地了解了 PHP 的工作原理,但是我遇到了一个有趣的情况。

我的项目中的一个类有大约六个类属性,例如public $id, public $author, public $post。这些属性是在此类的开头声明的,但是我发现,如果删除除其中一个属性之外的所有属性,应用程序仍然可以正常运行。

删除属性声明是否错误,例如public $datePosted从类的开头开始,如果该类仍然将变量分配给该属性,如下所示:$this->datePosted = $someVariableName;


如果你尝试access尚未声明的类属性,PHP 会发出通知:

class Foo { }

var $fu = new Foo();
echo $fu->baz;

Notice: Undefined property: Foo::$baz in blah.php on line 4

如果您先设置一个值($fu->baz = 'blah')那么它就不会抱怨,但这不是一个很好的情况。

您绝对应该声明所有类变量(当然,除非您想享受一些乐趣)魔法方法 https://www.php.net/manual/en/language.oop5.overloading.php#language.oop5.overloading.members)...

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

在 PHP 中显式声明属性重要吗? 的相关文章

  • PHP 中的 NOW() 函数

    是否有 PHP 函数以与 MySQL 函数相同的格式返回日期和时间NOW 我知道如何使用date 但我想问是否有专门用于此的功能 例如 返回 2009 12 01 00 00 00 您可以使用date https www php net m
  • PHP - hash_pbkdf2 函数

    我正在尝试使用此 php 函数执行一个函数来哈希密码 http be php net manual en function hash pbkdf2 php http be php net manual en function hash pb
  • 未捕获的异常“Google_IO_Exception”,消息为“HTTP 错误:无法连接”

    我有一个任务 查询 运行一些从 gmail 邮箱检索数据的 php 代码 直到上周五 2015 年 4 月 10 日 它一直工作正常 现在我收到以下错误日志 E 11 58 26 094 2015 04 15 200 3 38 KB 14
  • 使用PHP套接字发送和接收数据

    我正在尝试通过 PHP 套接字发送和接收数据 一切正常 但是当我尝试发送数据时 PHP 不发送任何内容 Wireshark 告诉我发送的数据长度为 0 我正在使用这段代码
  • 通过JS Laravel访问存储目录

    有没有办法访问storage目录 该目录已经链接到publicJS 中的目录 我正在尝试制作一个上传图片的表单 验证脚本 if request gt hasFile photos marker gt photos request gt ph
  • 如何在php中使用preg添加html属性

    我正在寻找在 php 中编写一个脚本来扫描 html 文档并根据它找到的内容向元素添加新标记 更具体地说 我是扫描文档并为每个元素搜索CSS标记 float right left 如果找到它 它会添加align right left 基于它
  • PHP cURL 在本地工作,在 AWS 服务器上出现错误 77

    最新更新 脚本作为管理员用户通过 SSH shell 作为 php script php 成功运行 当由 nginx 用户运行时 curl 命令无法执行 https 请求 所以我猜测这是nginx用户无法正确使用curl的问题 我已经检查了
  • 如何将行变成列?

    我有一个数据库 其中存储分组到项目中的关键字以及与每个关键字相关的数据 然后我显示每个项目的数据网格 每个关键字一行和几列 全部从同一个表 数据 中检索 我有 4 个表 关键字 项目 group keywords 和数据 keywords
  • 尝试获取 Google accessToken

    看起来 无论我做什么 谷歌都在竭尽全力阻止我完成这个研究项目 我的项目让我使用 Google 电子表格作为数据库 并使用所述电子表格中的数据执行程序化的 Google 图片搜索 并向最终用户显示一些结果 设置说明 我开始按照此处的说明进行操
  • 模拟/存根在 PHPUnit 中实现 arrayaccess 的类的对象

    这是我正在为其编写测试套件的类的构造函数 它扩展了 mysqli function construct Config c store config file this gt config c do mysqli constructor pa
  • 如何在 Twitter Card 中传递动态图像路径?

    我在用
  • 我怎样才能让这个脚本在 WordPress 上运行?

    我有这个脚本 document ready function text1 click function this hide 代码html div class div1 p class text1 text to appear when th
  • magento成功页面变量

    我正在尝试捕获一些 magento 成功页面变量以传递给我们的广告公司 到目前为止 我已经得到了这个 但变量没有输出任何内容 数据需要采用以下格式 price1 price2 price3 qty1 qty2 qty3 sku1 sku2
  • 简单的dom php解析获取自定义数据属性值

    HTML div class something ddsf PHP foreach dom gt find something data rel as this var dump this gt attr 我尝试了这个但错误 在其文档中找不
  • 更改API数据输出的布局

    我是 API 集成和 PHP 的新手 我最近将 VIN 解码器集成到我的应用程序中 在输入框中输入车辆的 VIN 选择提交 然后就会显示 API 数据库中有关该车辆的所有信息 数据存储为关联数组 其中包含类别及其相应元素 例如 对于 VIN
  • 使用 PHP 和 OAuth 访问 SkyDrive

    我想使用 PHP 访问 skyDrive 我想检索文件和文件夹列表 下载 上传和删除文件 我有一个 microsoft dev clientID 和 clientSecret 有人可以帮助我开始使用 OAuth 连接到 skyDrive 并
  • PHP 中的多个插入查询[重复]

    这个问题在这里已经有答案了 我正在尝试创建一个 php html 表单 它将结果插入到狗展数据库中 问题是 无论我做什么 我都会收到此错误 查询失败 您的 SQL 语法有错误 检查与您的 MySQL 服务器版本相对应的手册 了解在 INSE
  • 合并 url 中的 2 个输入值

    我有这样的形式
  • Doctrine DQL 从 join 返回平面数组

    我通过 DQL 中的常规 LEFT JOIN 选择 3 个实体 它们通过连接表关联 连接表还定义了实体以及带注释的关系 查询执行没有问题 但我的结果作为平面数组返回 我期望一个包含三个实体作为每个索引的数组元素的数组 SELECT e1 e
  • 如何在数据列表 HTML PHP 中设置选择

    您好我想知道是否有一种方法可以在数据列表中设置选定的值 我想要这样的东西

随机推荐

  • 如何将新行插入范围并复制公式

    我有一个命名范围 如下所示 覆盖 A2 D3 ITEM PRICE QTY SUBTOTAL 1 10 3 30 1 5 2 10 TOTAL 40 我要使用 VBA 将新行插入到复制公式而不是值的范围中 任何提示 链接都非常感谢 这应该可
  • NSTableView 如何通过代码设置内容模式(基于视图或基于单元格)?

    如题 NSTableView 如何通过代码设置内容模式 基于视图或基于单元格 感谢您的帮助 NSTableView默认为基于单元的 这对于向后兼容性是有意义的 当表视图委托实现时 表视图是基于视图的 tableView viewForTab
  • Pentaho CE 上的地图可视化

    我正在运行 Pentaho ce 5 3 我已经使用星型模式立方体对其进行了测试 并且工作正常 现在我想将 Postgis 中存储的维度 包括空间维度 的 mdx 查询可视化为地图 不知道是否可行 或者我应该为此添加任何插件吗 根据您想要可
  • 如何在 EF4 中获取实体的第一个 EntityKey 名称

    如何获取 Entity Framework 4 实体的第一个 EntityKey 名称 因为我正在构建存储库系统 并且我想通过 Id 获取项目 EF 中的主键是实体的第一个实体键 我正在使用这个代码 public virtual TEnti
  • 当通过音频采样的数据数量超过 AudioRecord 构造函数中设置的“bufferSizeInBytes”时会发生什么?

    public AudioRecord int audioSource int sampleRateInHz int channelConfig int audioFormat int bufferSizeInBytes 这是公共构造函数Au
  • 在 matlab/octave 中将数据集分成两个子集 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 将数据集分为两个子集 例如 训练 和 测试 其中 训练集包含 80 的数据 测试集包含剩余的 20 分裂的意思是生成一个长度等于的逻辑索引
  • 使用 Boost.Asio 进行广播的问题

    如果问题之前已得到解答 我提前表示歉意 但我已经搜索并没有找到任何对我有帮助的东西 正如问题标题所示 我正在尝试将包从服务器广播到一组侦听任何消息的客户端 客户端将计算一秒钟内收到的消息数 服务器端的事情是这样的 class Server
  • 字段名称来自表 1 上的 ID,但来自其他表上的名称

    这是一个 Firebird 数据库 第一张表 联系人 Company ID 职位名称 第二个表 Client id 公司名称 在联系人中 我希望 job title 字段包含 co name client id 和 company id 相
  • 有没有比使用 backtrace() 更便宜的方法来查找调用堆栈的深度?

    我的日志记录代码使用的返回值回溯 http linux die net man 3 backtrace确定当前堆栈深度 出于漂亮的打印目的 但我可以从分析中看到这是一个相当昂贵的调用 我不认为有更便宜的方法吗 请注意 我不关心帧地址 只关心
  • 绘制多个散点图 pandas

    我认为绘制多个图表有很多问题 但不是专门针对这种情况 如下所示 pandas 文档说 重复绘图方法 在单个轴上绘制多个列组 但是 这对于 3 个或更多列组如何工作 例如 如果我们定义第三列 bx df plot kind scatter x
  • 如何更改 PyCharm/Intellij Idea 中的自动完成行为?

    当您从中间重写某些变量 属性或函数而 PyCharm 让旧字符串的其余部分保留在那里时 这是非常烦人的 我的光标位于 s 和 之间 我按了 ctrl space 现在 当我使用建议完成时 它不会删除该函数的其余部分 是否可以让它删除其余的功
  • GSON:如何在保持循环引用的同时防止 StackOverflowError?

    我有一个带有循环引用的结构 出于调试目的 我想转储它 基本上任何格式都可以 但我选择了JSON 由于它可以是任何类 所以我选择了不需要 JAXB 注释的 GSON 但是 GSON 会遇到循环引用并递归直到StackOverflowError
  • CursorAdapter 破坏了 CHOICE_MODE_MULTIPLE 选项

    我有一个ListFragment 我在其中添加一个CursorAdapter to my ListView 并且我希望能够单击几行以使用上下文操作栏 我使用 SherlockActionbar 当我使用一个简单的ArrayAdapter 但
  • 在单元测试中重复的代码是否更容易被容忍?

    前段时间 当我经历并重构它们以使其更加出色时 我破坏了几个单元测试DRY http en wikipedia org wiki Don 27t repeat yourself 每次测试的目的不再明确 测试的可读性和可维护性之间似乎需要权衡
  • 递归 noexcept 规范

    使用 g 4 9 和 clang 3 4 进行测试 为什么此代码无法编译 namespace template
  • 无法在服务器端 NodeJS 启用 CORS

    我无法启用CORS在服务器端 我的前端和后端服务器有不同的端口 服务器端的实现方式如下 http createServer function req res Here you can create your data response in
  • mysqldump 只导出一张表

    我使用 mysqldump 导出数据库 如下所示 mysqldump u root ppassword my database gt c temp my database sql 不知何故 它只导出一张表 我做错了什么吗 尝试这个 一般有三
  • 从时间戳间隔获取缺失的月份

    我从服务器接收时间 以秒为单位 然后使用以下代码将 tjose 秒转换为月份 NSDateFormatter dateFormatter NSDateFormatter alloc init autorelease dateFormatte
  • 存储大 DNA 序列最有效的方法是什么?

    我想用 iOS 应用程序打包一个巨大的 DNA 序列 大约 3 000 000 000 个碱基对 每个碱基对都可以有一个值A C T or G 将每个碱基对存储在一个字节中会产生 3 GB 的文件 这太大了 现在我想将每个碱基对存储在两位中
  • 在 PHP 中显式声明属性重要吗?

    我按照教程用 PHP 创建了一个简单的博客写作应用程序 并修改了本教程中的类 以便它们具有附加功能 修改这个非常简单的应用程序让我更好地了解了 PHP 的工作原理 但是我遇到了一个有趣的情况 我的项目中的一个类有大约六个类属性 例如publ