PHP变量与阵列对象

Jam*_*mes 9 php object

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

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

简单的var:

$tpl_title = 'my title'
$tpl_desc = 'my text'
Run Code Online (Sandbox Code Playgroud)

数组:

$tpl['title'] = 'my title'
$tpl['desc'] = 'my text'
Run Code Online (Sandbox Code Playgroud)

宾语:

$tpl->title = 'my title'
$tpl->desc = 'my text'
Run Code Online (Sandbox Code Playgroud)

我喜欢对象方法最好,因为它看起来很干净,当html中的echo而不是数组和afaik它可以以类似数组的方式使用?但是,我想知道的是,以这种方式使用对象是否被视为不良做法或引入不必要的开销?

doc*_*ryZ 5

我会认为这是不必要的开销。以面向对象的方式做你正在谈论的事情只意味着在你的类中你只会创建一堆变量......就像你在第一个例子中指定的那样。

在我看来,数组是最好的方法。您只使用一个变量……您也可以将其集成到您的类中。所以不是 $tpl->title,你可能有 $tpl->text['title']

  • 在谈论开销和数组 vs 对象时,请注意以下几点:a) 随着 PHP 5.0 对象成为引用类型,即使在 PHP 的“正常”写时复制无法处理的情况下,这也避免了复制 b) 定义了 PHP 5.4 属性在类中不存储在哈希表中,而是存储在 C 数组中,这(与 5.3 的内部字符串等相结合)使访问速度更快并且需要更少的内存 c)另一方面,对于“正常”变量,我们有“编译变量” “从 5.1 开始……本质:在这个级别上争论“开销”很复杂,取决于正在做的确切事情和 PHP 版本 (2认同)
  • 换句话说:编写可维护和可理解的代码,除非你知道你有性能问题...... (2认同)

Sab*_*lik 5

在理想情况下,每个变量都应该属于一个对象,而不是用于临时目的的方法的本地变量.然而,我们并不是生活在理想的世界中,特别是我们的编程语言远非如此.根据具体情况,选择最佳方式,让您的生活更轻松.如果您正在使用模板的东西,通常将所有数据保存在数组和extract数组中以获得独立变量.

所以是的,对象方法是最好的,尝试尽可能多地使它发生而不花费大量时间来做这件事.

此外,如果你喜欢物体,并希望有巧妙的->方法,你可以做到

$object = (object)$array;
Run Code Online (Sandbox Code Playgroud)

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

希望有所帮助.