为了账号安全,请及时绑定邮箱和手机立即绑定

请问下php类中定义变量和变量传参哪个更好?

请问下php类中定义变量和变量传参哪个更好?

PHP
牛魔王的故事 2019-03-18 16:59:02
function function a($lyc1,$lyc2,$lyc3){ $a = $lyc1; $b = $lyc2; $c = $lyc3; } function function b(){ $a = $this->$lyc1; $b = $this->$lyc2; $c = $this->$lyc3; } 请问下传参好还是在类中定义$lyc1,$lyc2,$lyc3好? 因为我一个方法中要调用几个函数,并且每个函数都要传几个参数,感觉不好看, 所以想换成方法b这样,但是不知道方法a和方法b哪个效率更好。 由于我对原理不是很懂,但又想知道哪个更优,请大佬们解释一波原理。
查看完整描述

4 回答

?
浮云间

TA贡献1829条经验 获得超4个赞

其实这个不是效率上的问题,因为一定程度上,你很难体现出效率的区别。你的意思是定义成属性来访问是不是会更好。

一个方法中要调用几个函数,并且每个函数都要传几个参数,感觉不好看。

那你就要想了,这几个函数所调用的几个参数,出镜率有多高。如果你一个2000行的类,如果$lyc1只出现了一次,它适合定义成属性吗?显然不太好,因为它是属于这个函数的,而这个类跟他关系不大;也可以从这个属性存在的意义去考虑。

说得粗俗点,一般我们把这个类里通用的变量定义成属性。好处是,在这之上可以区别public,protected和private来做访问控制;以及考虑是否使用static静态属性,等等...

但是不是把所有的参数都扔到前面当属性

可以看一些设计模式的内容。

查看完整回答
反对 回复 2019-03-18
?
神不在的星期二

TA贡献1963条经验 获得超6个赞

除了楼上说的出镜率的问题,还需要注意:

函数参数(最好少于2个)

限制函数参数个数极其重要,这样测试你的函数容易点。有超过3个可选参数参数导致一个爆炸式组合增长,你会有成吨独立参数情形要测试。

无参数是理想情况。1个或2个都可以,最好避免3个。再多就需要加固了。通常如果你的函数有超过两个参数,说明他要处理的事太多了。 如果必须要传入很多数据,建议封装一个高级别对象作为参数。

坏:

function createMenu(string $title, string $body, string $buttonText, bool $cancellable): void
{
    // ...
}

好:

class MenuConfig
{
    public $title;
    public $body;
    public $buttonText;
    public $cancellable = false;
}

$config = new MenuConfig();
$config->title = 'Foo';
$config->body = 'Bar';
$config->buttonText = 'Baz';
$config->cancellable = true;

function createMenu(MenuConfig $config): void
{
    // ...
}
查看完整回答
反对 回复 2019-03-18
?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

感谢两位百忙中回答我的问题!

查看完整回答
反对 回复 2019-03-18
?
莫回无

TA贡献1865条经验 获得超7个赞

是的,函数一般参数不要超过三个,超过的话最好以一个对象的形式传参,这样比较容易控制函数的稳定性,至于你说的不好看,我觉得无所谓啊,编程的思想就是间接,公用的变量抽象出来变成属性,某个函数用的变量当然是传参进去了。

查看完整回答
反对 回复 2019-03-18
  • 4 回答
  • 0 关注
  • 679 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信