在学PHP编程时,我们知道有三种方式可以传递参数:直接传数值、传引用和既传值又返回值。这几种方法在FDI(函数依赖注入)中特别重要,因为它们会影响代码的易用程度、可测试性以及日后的维护问题。深入学习这些概念能让你更熟练运用FDI设计模式,写出更舒畅、易于测试、便于维护的PHP代码!
PHP函数支持三种参数传递方式:
传值调用,就是把你原来那啥的值直接塞进函数里头用,不过函数可是搞不定外面那个原始变量滴。
-传引用,其实就是把变量的地址(也叫引用)送给函数去,这样它就可以直接改那个变量。
–传宝贝回家就是:把外面的东西带回家里用,然后换个新宝贝回去,家里的东西就能升级!
函数依赖注入(FDI)
函数依赖注入这招很实用,简单来说就是通过外部力量把函数之间的联系拆开,让它们变成独立的个体。这么做以后,代码就会变得更灵活,测试起来也容易得多。而在PHP里面,借助各种方式传递参数,就可以轻松掌握和运用任何形式的函数依赖注入技巧,不再为处理函数间的关系而发愁。
不同参数传递方式对FDI产生了以下影响:
1.按值传递:
别傻乎乎地用值传递给函数,这样它是无法改变你原有的变量或数字的。想要调整这些东西?那就得换个方式传参数
2.按引用传递:
如果你想让函数能改外部变量,那就要用引用来传参!但这样做的话,在函数里面改外面的参数就得小心点别搞砸了哈~
function get_connection() { $conn = new mysqli('localhost', 'user', 'password', 'database'); return $conn; }
3.按值传递并返回:
,名字变了不代表内容就变!传参这事儿,其实就是说把一个东西交给另一个函数处理,但是它里面装的还是原来那货。所以,就算你在新的变量里瞎捣鼓,对原数据也没啥影响。这招儿挺实用的,搞外商投资的时候用它很稳妥。
实战案例:数据库连接
function get_connection_config(array $config) { $conn = new mysqli($config['host'], $config['user'], $config['password'], $config['database']); return $conn; }
举个例子,咱们假设有个能和数据库相连的小工具,里面要设置各种数据库连接信息。要是想用FDI(外部数据接口)来调整这个工具的数据库连接,使其更加灵活好用的话,那么如何传递这些参数就变得非常重要。
就是说,如果我们把超级强大的连接参数按照值传过去给数据库,那么以后想要在FDI里面微调一下设定就不行。
登录后查看完整文档
$config = ['host' => 'newhost', 'user' => 'newuser', ...]; $conn = get_connection_config($config);
评论0