PHP 变量 vs 数组 vs 对象

2023-11-23

这可能被认为是一个非常愚蠢的问题,但我正在为网站构建一个简单的模板系统,并试图跟踪我的变量使用情况并保持一切整洁。

您能告诉我以下方法是否有任何优点/缺点:

简单变量:

$tpl_title = 'my title'
$tpl_desc = 'my text'

array:

$tpl['title'] = 'my title'
$tpl['desc'] = 'my text'

Object:

$tpl->title = 'my title'
$tpl->desc = 'my text'

我最喜欢对象方法,因为它在 html 中回显时看起来很干净,而不是数组,而且据我所知它可以以类似数组的方式使用?但是,我想知道以这种方式使用对象是否被认为是不好的做法或引入了不必要的开销?


在理想情况下,每个变量都应该属于一个对象,而不是用于临时目的的方法的本地变量。然而,我们并不生活在一个理想的世界,特别是我们的编程语言离它还很远。根据具体情况,选择最好的解决方法,让您的生活更轻松。如果您将东西用于模板,通常您将所有数据保存在一个数组中,并且extract获取独立变量的数组。

所以,是的,对象方法是最好的,尝试尽可能多地实现它,而不需要花费大量的时间。

另外,如果您喜欢物品并且想要整洁->这样做的方法,你可以做

$object = (object)$array;

这会将您的数组转换为对象。

希望有帮助。

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

PHP 变量 vs 数组 vs 对象 的相关文章

随机推荐

  • Android:列表视图中的指南针+距离

    我想你们都尝试过地图中的 Google Places 这是您附近的 POI 列表 我真的很想在我的应用程序中使用 GPS 坐标列表来实现相同的功能 但这看起来非常复杂 制作带有距离和小箭头的列表视图非常容易 但我不明白如何在用户每次移动手机
  • 我的内部 API 类应该全部放在一个包中吗?

    我正在努力打包供公众使用的 API 因此 我试图限制仅向那些我希望公开且可支持的方法公开的方法 当然 在此之下还有许多受限的访问方法 问题是我有很多内部代码需要访问这些受限制的方法而不将这些方法公开 这会产生两个问题 我无法创建接口 类之间
  • 将声音帧从 8Khz 重新采样/上采样到 48Khz (Java/Android)

    我正在尝试为andriod开发的应用程序 以48Khz PCM 16位和单声道 记录帧并将它们发送到网络 此外 还有 8Khz 的传入音频流 因此 我接收 8Khz 采样帧并播放它们 我的 AudioTrack 对象设置为 8Khz 但是在
  • 在 C++ 中重写成员变量

    我在一些 C 代码中遇到了一些棘手的问题 这最容易使用代码来描述 我有类似的课程 class MyVarBase class MyVar public MyVarBase int Foo class MyBase public MyBase
  • 如何允许 std:string 参数为 NULL?

    我有一个函数foo const std string str 如果你使用它调用它它会崩溃foo NULL 我该怎么做才能防止它崩溃 std string 有一个采用 const char 参数的构造函数 当您将 NULL 传递给它时 该构造
  • C++ 使变量类型取决于用户输入

    我想要一个创建数组用于测试目的的函数 这个想法是让用户选择数组将包含的元素类型 int float double 然后它必须返回所选类型的数组并且main必须将其用作参数 我知道这是使用空指针 但如果有人能为我提供一个例子 我会很高兴 这就
  • 从 python 创建“经济学人”风格的图表

    使用 python 和 marplotlib 以及像seaborn这样的工具 我想创建一个像 经济学人 中的这样的图表 因为我认为这种风格很棒 这是一个时间序列图 我想要重现的关键是水平网格线 其标签与带有刻度线的较低水平轴相匹配 网格线两
  • MongoDB:无法连接到新的副本集主服务器

    尝试为我的 Node JS 应用程序设置 MongoDB 我运行这个命令 mongo mongodb srv cluster0 gjc2u mongodb net test username
  • 更改实例方法内的类实例

    知道是否有办法使以下代码正常工作 class Test object def init self var self var var def changeme self self Test 3 t Test 1 assert t var 1
  • 如何在不知道其名称的情况下删除 SQL 默认约束?

    在 Microsoft SQL Server 中 我知道检查列是否存在默认约束并删除默认约束的查询是 IF EXISTS SELECT FROM sysconstraints WHERE id OBJECT ID SomeTable AND
  • 如何使用 OLEDB 在 Excel 中获取仅包含 Excel 工作表名称的列表;过滤掉元数据中显示的非工作表

    我在使用 OLEDB 从 Excel 电子表格获取工作表名称时遇到问题 问题是 当我使用 GetOleDbSchemaTable 时 生成的 DataTable 不仅仅包含实际的工作表名称 还包含实际的工作表名称 它有额外的 表格 行 我只
  • jQuery - 隐藏元素的最佳方法? (以防止元素在实际隐藏之前闪烁)

    我记得在某个时候歌剧 Mostlikely it was Safari instead 有一个问题 如果你使用 hide 在元素上 它会在实际隐藏元素之前短暂闪烁 现在 如果你不想忽略那些由于某种原因在浏览器中没有打开 js 的人 你就不能
  • PHP - 检查一个字符串是否包含另一个字符串中的任何字符

    如何使用 PHP 检查一个字符串是否包含另一个字符串中的任何字符 a asd b ds if if first string contains any of the chars in second string a b echo Yep 所
  • Taco 路线图 - 更新 11,支持 Cordova 7

    Microsoft 是否计划发布具有原生 Cordova 7 Node 4 x 支持的 Taco Update 11 自从 Taco 以来 Taco 仍然是一个活跃的项目吗 最后更新是两年前吗 我认为可以肯定的是 微软已经放弃了 TACO
  • 如何获取 msbuild 任务来对文件集合进行配置转换?

    我正在尝试转换我拥有的项目中的所有 web config 文件 这是我的树结构 转换 bat Transforms 配置转换 proj Web Transform config Website 网络配置 Views 网络配置 还有更多的 w
  • service.AddScoped() 与 service.AddDbContext()

    假设我想实现不同的 DbContext MySql MsSql 但让应用程序完全不知道它 因此 使用 AddScoped 或任何其他 方法 我可以注册如下内容
  • Rails 5.1 中的 form_with 搜索字段

    在 Rails 5 1 中 所有表单都必须使用form with In http edgeguides rubyonrails org 5 1 release notes html unification of form for and f
  • Heroku 上每分钟调度一个作业 Rails 3.1

    我想在 Heroku 上每分钟运行一个任务 以检查是否满足使某些用户任务超时的条件 我只能每小时运行一次 Heroku cron 作业 那么设置这样的定时任务的最佳方法是什么 我在 Heroku 上使用 Rails 3 1 从今天开始 您可
  • 如何在 UICollectionView 中快速添加分页?

    我有一个显示项目的集合视图 现在我想在集合视图上添加分页 我不想使用任何第三方来实现此功能 请让我知道如何实现这一目标 我有四个一的例子http slicode com bottom refresh control uicollection
  • PHP 变量 vs 数组 vs 对象

    这可能被认为是一个非常愚蠢的问题 但我正在为网站构建一个简单的模板系统 并试图跟踪我的变量使用情况并保持一切整洁 您能告诉我以下方法是否有任何优点 缺点 简单变量 tpl title my title tpl desc my text ar