PHP变量vs数组vs对象

PHP变量vs数组vs对象,php,object,Php,Object,这可能被认为是一个非常愚蠢的问题,但我正在为一个网站建立一个简单的模板系统,并试图跟踪我的变量使用情况,保持一切整洁 您能告诉我以下方法是否有任何优点/缺点: 简单变量: $tpl_title = 'my title' $tpl_desc = 'my text' $tpl['title'] = 'my title' $tpl['desc'] = 'my text' $tpl->title = 'my title' $tpl->desc = 'my text' 数组: $tpl_

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

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

简单变量:

$tpl_title = 'my title'
$tpl_desc = 'my text'
$tpl['title'] = 'my title'
$tpl['desc'] = 'my text'
$tpl->title = 'my title'
$tpl->desc = 'my text'
数组:

$tpl_title = 'my title'
$tpl_desc = 'my text'
$tpl['title'] = 'my title'
$tpl['desc'] = 'my text'
$tpl->title = 'my title'
$tpl->desc = 'my text'
对象:

$tpl_title = 'my title'
$tpl_desc = 'my text'
$tpl['title'] = 'my title'
$tpl['desc'] = 'my text'
$tpl->title = 'my title'
$tpl->desc = 'my text'

我最喜欢object方法,因为它在html中进行echo时看起来很干净,而不是数组,而且它可以像数组一样使用吗?然而,我想知道的是使用这样的对象是否被认为是不好的实践,还是引入了不必要的开销?

< P>我会认为这是不必要的开销。用面向对象的方式来做你所说的,只意味着在你的类中你只需要创建一堆变量就可以了。。。正如您在第一个示例中指定的

在我看来,阵列是最好的方式。您只使用了一个变量。。。你也可以把它融入你的课堂。因此,您可以使用$tpl->text['title']

数组,而不是$tpl->title 我建议在后端部分,将所有内容存储在一个数组中。这允许您只跟踪一个变量,一旦将其传递到前端,您就可以
extract()
数组,将其转换为简单变量

语法 使用
extract()

在后端,您可以设置
$array['title']

一旦提取,模板中的内容将是
$title

后端函数的示例
最后它们是一样的,这取决于偏好,尽管我会使用数组或对象,因为可以在其中分组变量,这样可以更好地进行排序

尽管objects方法有效,但我认为它不是它的自然预期用途

所以我要说数组


此外,还有大量php本机函数可用于数组,如
array\u map()
array\u filter()
数组排序等。

在理想情况下,每个变量都应该属于一个对象,而不是临时方法的局部变量。然而,我们并不是生活在一个理想的世界里,特别是我们的编程语言离理想还很远。根据实际情况,选择最好的方法,让你的生活更轻松。如果您使用things作为模板,通常您会将所有数据保存在一个数组中,然后
提取该数组以获得独立变量

所以,是的,对象方法是最好的,尽量让它发生,而不必花费大量的时间

此外,如果您喜欢对象,并且希望使用整洁的
->
方法,您也可以这样做

$object = (object)$array;
这会将数组转换为对象


希望这能有所帮助。

在我看来,最干净的设置方式是这样的数组:

$tpl = array (
  'title' => 'my title',
  'desc' => 'my text'
);
你也可以把它和赞恩的答案结合起来

祝你一切顺利

$tpl = array (
  'title' => 'my title',
  'desc' => 'my text'
);
正如Goran所说,您还可以在以后将这些数组存储在ini文件中,并根据需要使用


如果您想允许用户写入自己的ini文件,这一点可能很重要。

如果您想在使用后重置大量变量数据,则数组和对象非常有用

您可以简单地取消设置数组或销毁对象,而不是取消设置代码中使用的变量范围


除此之外,数组和对象在代码和解释方面比普通变量更加对称

如何设置/使用数据是您自己的选择。。使用vars/array/object没有区别。让您感到舒适很重要。使用
json
格式的
array
object
。。通过这种方式,您的html可以在多种语言中工作:)当谈论开销和数组与对象时,请注意以下事项:a)当PHP 5.0对象成为引用类型时,即使在PHP的“正常”写入时复制未处理的情况下,也可以避免复制b)使用类中定义的PHP 5.4属性不存储在哈希表中,而是存储在C数组中,这(加上5.3的内部字符串等)使得访问速度更快,需要更少的内存(c)对于“普通”变量,我们从5.1开始就使用“编译变量”。。。本质:在这个级别上讨论IWTH“开销”是复杂的,这取决于所做的事情和PHP版本的其他内容:编写可维护和可理解的代码,除非你知道你有一个性能问题…数组访问风格也是节省的,考虑一下:<代码> $o [愚蠢]键[]
用于设置和检索值,但尝试使用
$o->dumby.key[]
访问这样的值将失败。