gitHub地址: http://t.cn/RDO9luX
1)类加载的问题--命名空间
但是我们在做的过程中碰着的第一个问题便是命名空间的问题,由于公司老的框架是不支持也没有利用命名空间的,我仿照之前的一个业务实现的策略,在一个php文件中有多个类文件,但是利用了php的命名空间之后,外部就调用不到这些类了,否则是多个类,命名多个命名空间,但是由于新框架利用的自动加载是默认文件名和类名是同等的,否则也是不好加载进来。于是想到了拆分类,将基类BaceStrategyClass,BaceCooperationClass,接口Interface,和工厂类ClassFactory放到了一个文件ClassFactory.php中,将与第三方进行连接交互的类Cooperation放到了一个文件xxxCooperatioin.php中,还有一个这次互助的策略类XXXStrategy 放到了一个文件XXXStrategy.php中,这样就办理了类加载的问题。

01 测试脚本test.php
2)公司内部外系统的访问—层级调用
我们碰着了第二个问题便是我们这个别系须要公司其他系统,比如用户系统的数据,但是新框架定义与公司外系统的交互,都在service层完成,领域层domian中只完成与自己系统业务干系的内容,所以为了符合层级调用和符合规范,就将这些domian中的策略整体进行了迁移,重新定义了命名空间,也修正了干系地方的调用的命名空间类use引用。
02 02 工厂基类 FacultyClass.php
3)必须走工厂方法—唯一入口,封装性
然后我们碰着的第三个问题是,之前都是通过工厂方法的布局方法,将策略类的实例作为其属性,利用 (new classFaculty(‘xxx’))->strategyClass 得到策略实例,然后这个策略实例里,可以调用 xxxCooperatioin类中的干系方法,这个是可以走通的,但是如果我只是想测试 xxxCooperatioin类中的方法,就弗成,包括测试xxxStrategy类中的方法都是弗成的,都分别报 不存在其 基类 BaceCooperationClass 和BaceStrategyClass不存在,这个就比较尴尬了,百思不得其解,我和潇同学“抓耳挠腮”,再仔细看看 三个文件 ClassFactory.php , xxxCooperatioin.php 和 XXXStrategy.php, 终于创造原来走工厂那种访问的时候,ClassFactory.php 中已经包含了 xxxCooperatioin 类和xxxStrategy类所须要的基类了,以是一起走下来,是可以加载各个类的,但是如果是 直接外部测试脚本调用 xxxCooperatioin类 和xxxStrategy类是弗成的,由于他们的基类在 ClassFactory.php中,而你又无法利用命名空间将其加载进来(由于BaceCooperationClass 和BaceStrategyClass 和文件ClassFactory.php的文件名不一样,无法加载),这样就逼迫外部必须走工厂ClassFactory类 来访问到 xxxCooperatioin类,和xxxStrategy类,这样就提高了安全性,实现了封装性。
03 详细策略类 XXXStrategy
4)布局方法返回的永久是自己—走单例模式吧
还有便是看走工厂方法 (new classFaculty(‘xxx’))->strategyClass 得到策略实例,实际上我们直接new classFaculty类的时候,在布局中直接return strategyClass 不就直接得到这个策略类示例了吗,不须要在多一层属性的指向调用,后来创造我们在布局里error_log输出的好好的,strategyClass 便是xxxStrategy的示例,但是走落成厂的布局方法返回的还是 工厂 classFaculty的实例,后来仔细一思考,才创造实在 布局方法永久返回的是类自己的实例,而不管你在 布局方法里return 返回的是什么。
04 交互类XXXCooperation
我们实际上也只是想走单例模式,不用重复实例化类,没想到创造布局中返回不了策略类的实例,于是在工厂类classFaculty中写了一个 getStrategyInstance的一个静态方法,在那里实现单例模式,并返回了这策略类的实例。惠同学说还有便是这个策略类的实例的一个属性cooperation便是 xxxCooperatioin类的一个实例。这样就能拿到 策略类在脚本里做一些测试,也能拿到xxxCooperatioin类的一些方法做测试,避免直接 去实例化这两个类时,报他们的基类不存在的尴尬问题。
05 自动加载类的函数
至此,我们的这一次的技能谈论完美结束了,潇同学和惠同学和我都露出了欣慰的笑颜,虽然已经是晚上11点多了,但是能有这样自发的深入的细致的卓有成效的谈论还是很值得的,哪怕将来我们各奔东西了,但是一想到那天晚上我们的这次故意义的,精彩的技能探究之旅,便会以为格外亲切,技能在我们看来也变得熠熠生辉起来。
虽然在大神或者外人看来我们的这次谈论一样平常般或者是我们该当早节制的东西,但是毕竟我们整日在位实现业务需求去并行着,加班加点完成业务的需求,鲜有韶光仔细负责去思考这技能个中的细节,也就无法体会到思考技能,形成“心流”,终极办理问题,有所收成和提高的那种乐趣了,如果我们能每天或者每周多一些这样的谈论和收成,那我们的技能水平的提高就指日可待了。
程序猿的友情
可以,可以,一次有时的谈论竟然也成为了彼此心中探究研讨技能的出发点,不错啊。
作文纪念之。
2018.08.11 周六
于北京西直门