【问题标题】:Is it better to set an object value in a function, or return a value from a function?在函数中设置对象值还是从函数返回值更好?
【发布时间】:2013-11-29 09:29:22
【问题描述】:

假设我有一个数据数组,我想处理一些将在这个数组中添加或修改数据的函数。例如

$my_data = array(
    'val1' => 'my value 1',
    'val2' => 'my value 2'
);

传统上我会将数组或值传递给函数并返回一些数据,例如

$my_data['val1'] = $this->get_new_var($my_data['val1']);

我刚开始做一些我认为更好的不同的事情...我在 $this 对象中创建数组,就像这样(我正在使用表达式引擎):-

$this->EE->my_data = $my_data;

然后我只调用一个不需要返回值的set方法(而不是get),因为它在函数中设置值,例如

$this->set_new_var();

在 set_new_var() 函数中,我可以调用 $this->EE->my_data 数组并对其进行操作并将其设置如下:

$this->EE->my_data['val1'] = $my_new_var;

所以在我看来这更干净,不需要在函数之间传递变量。

这也意味着如果需要,我可以在 set 函数中设置多个值,而不是从函数返回一个值(或传递整个数组并返回该值)。

所以我的问题是,这个 set() 方法是否会被认为更好,或者我应该坚持传统的 get() 方法。

谢谢

【问题讨论】:

    标签: php arrays codeigniter object


    【解决方案1】:

    在我自己看来,set() 方法允许我以自己的方式处理输入并对其进行操作,即我可以根据我的用例对输入进行清理,并且只将经过过滤的干净输入值传递给我的函数.此外,set() 方法可用于做的不仅仅是设置变量。例如,在特定用例中,每当为给定变量 (OOP) 设置了新值时,我可能想要运行特定方法或进程,甚至是延迟作业。 set() 方法每次都可以用来做到这一点。每次出现这种行为时,无需重复所有陈述。

    但是,这是我自己的看法。

    【讨论】:

    • 我将代码更改为对象上的 set() 方法越多,通过使已经创建的各种对象在其他方法中可用而无需在它们之间传递变量或使新的数据库调用来获取数据。
    猜你喜欢
    • 1970-01-01
    • 2013-12-25
    • 1970-01-01
    • 1970-01-01
    • 2015-08-17
    • 2020-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多