目前本人正在开发一个钉钉的composer包,目前是有一些问题1.目前我把一些不同的功能封装到了不同的class中,但是呢我希望可以在别人使用我这个包的时候只需要new一次就好,否则用起来new的太多感觉可能不舒服,而且参数还需要从一个class再手工填写另一个class,人写很有可能写错,我看钉钉官方给的文件里面是写一个方法,你直接把class名,函数名,参数传过来,然后在这个方法内new对象,在拼装函数调用,感觉页太敷衍了,这样还不如直接让new对象呢。2.缓存的问题,钉钉的accessToken和jsticket需要缓存7200秒,目前是使用读取文件的方法缓存,有没有更优雅的解决方法呢?我会留出口子可以让用户自定义缓存的函数,但是我认为有很多人都是不会去自定义的,但是这样的话就要求缓存文件有文件读写的权限,但是我遇到过很多人他们使用linux的时候根本不会调整权限。
3 回答
江户川乱折腾
TA贡献1851条经验 获得超5个赞
1.第一个你可以考虑依赖注入容器,这样就可以保证你直接new 一个类,来通过容器的get方法获取得到响应的对象实例.不过,我觉得这种并不太适合你,你可以考虑一下用1楼所说的工厂模式.毕竟一个插件用依赖注入的话.接口一多,自己是不太很好去排查错误的.
2.缓存的方式,我的建议是在composer里面的script里面来执行一些初始化的方法.自行创建自己所需要到目录.当然,配置传参也是可以的.我觉得有一种很好的方式来写这种缓存.适配器.你可以先预订几个适配器,通过适配器来对应不同的缓存方式.然后用户只需要写适配器就行了.给你一个例子吧.市面上有做的好的.例如flysystem的adapters,例如:
use League\Flysystem\Filesystem;
use League\Flysystem\Adapter\Local;
$adapter = new Local(__DIR__.'/path/to/root');
$filesystem = new Filesystem($adapter);
- 3 回答
- 0 关注
- 574 浏览
添加回答
举报
0/150
提交
取消