【原】说说PHP中的求地址符
in 随笔 with 0 comment

【原】说说PHP中的求地址符

in 随笔 with 0 comment

三更灯火五更鸡,正是男儿读书时。黑发不知勤学早,白首方悔读书迟。 --颜真卿

前言

到目前为止我的编程生涯中我会用的只有两种编程语言一个C,一个便是PHP了,在学习C的时候我对指针,地址的理解可谓是云里雾里_。PHP相对于C而言,语言本身弱化了指针的概念(估计对于这个知识点不理解的不止我一个),但是,往深了学,扣效率的时候,这些东西就莫名其妙的又全都出来了,这里的一个典型的应用便是&求地址符。

&在PHP中的应用很多比如foreach中的优雅写法,比如我们在单例中,还有等等的场景中有应用。&虽然名为求地址符,但是我还真的很少很少将这个值打印出来,因为,就算输出来,我也看不懂,只要计算机知道就可以了。这里我将说说几个常用的用法,以及这么用的道理,算是一个小小的优化的方法吧。值得一提的是,在这里我们的单例用法将不做解释,因为单例的主要做法是借助静态变量,所以后面会单独讲讲单例。

用法一:foreach

其实在前面的博客中有提过,这里就不再啰嗦,还是提醒下,这个要慎用,在对PHP的foreach的理解没有那么深刻的时候,请小心!!!

用法二:漂亮的函数参数传递

在某些时候,我们的函数处理了一个逻辑之后我们会得到多个结果,对于这种情况,我们用return返回结果的时候,只能借助数组了,这样的话就将变量变成了数组的一个元素,后期的排错难度就会加大,所以就用到了&

<?php
    doSome($a,$b);
    function doSome(&$a,&$b){
        $a=19;
        $b=20
    }
    echo $a;//19
    echo $b;//20
?>

用法三:唯一的对象

在我目前的游戏项目中,我们会把玩家的一个角色实例化成一个对象,还记得当时我们在初次接触面向对象的时候,老师曾经说过,我们可以定义一个“人”的类,然后不断的实例化出一个个人,但是实例化一个个人是没错,那么我们每一次实例化出一个人必然是个全新的人,但是我们并不希望这样,我们希望一个进程中我们的人就是一个人,不管怎么操作,都是针对这个人的操作,所以在全局的使用中我们并不会单纯的操作“人”这个对象,而是操作的“人”这个对象的这个地址上的这个对象,有点绕,但是确实这样可以确保,我们操作的就是一个人!

最后说两句,其实用法三有点单例的意思,但是在实际应用中我却没有严格的针对概念去死用,下次再说到单例的时候,我会说点我用的“伪单例” ^_^!

Comments are closed.