Tao

第 5103 位会员
注册于 2016-07-28 10:10:31
活跃于 2017-09-24 23:33:37


To do better
专栏文章
没有任何数据~~
最近话题
最新评论
  • 综合性的前端技术社区来啦,欢迎给予意见 at 2017-09-23 10:01:36

    在社区回复过,再这回复下,ui再酷炫点

  • 分享下一点创业小心得以及创业项目运营情况 at 2017-09-20 09:22:02

    在vue项目readme上看到了小专栏的推广,敢问咋做倒的

  • 感觉 ThinkPHP5.1 越来越像 Laravel 啦 at 2017-09-19 11:42:57

    讨论的人越来越多,认真说两句;跟大家一样都是用tp过来的,没怎么写过tp项目便转向了其它框架,虽然不再用但还是很关注tp的发展;当tp5发布的时候还是有点期待的,兴冲冲地看了代码实现又绝望了,给官方提了俩issue表达了我的愤怒5896;从此走上了喷TP的道路,不是为了喷而喷,有种恨铁不成钢的感觉;

    后来刘晨邀请我加入开发组,我同意了不过很不合格的是到现在也没怎么做过贡献,早期弄了个thinkng后来也留坑了,核心代码一行也没有;一是“看不上”tp的代码,这个实现的太糙,那个实现的不合理,核心代码要分包,命名空间大小写混用,DI容器要加上,模板引擎要分离...等等。一直在吐槽,并没有 把自己融入tp的代码生态里;二来我离开了原来的公司开始创业渐渐地也没有时间聚焦在一件事上。

    然而后来改变了,吐槽和抱怨都是解决不了问题的,提问题的人永远没有解决问题的人受欢迎,这个不仅在国内在国外也一样,如果可以的话最好带着你的pr来提问题,tp就在那里,你觉得不好你可以fork提pr,当然我做的也并不好但已经在改观了;任何一个框架的发展都是人在努力的结果,laravel也是有v3版本的,我相信它早期的版本并不会让你觉得优雅,虽然到现在我也没觉得它优雅,同样的symfony、cake、yii都是有历史的。与其抱怨为什么不参与到其中来呢?要知道抱怨和吐槽并不会让你变成大牛或者看起来像大牛,参与一个开源项目会让你受益匪浅即使是tp这样你们瞧不上的项目。

  • Laravel 5.5 的 debug 挺有意思. at 2017-09-12 16:09:29

    和laravel无关,whoops自带的功能

  • 感觉 ThinkPHP5.1 越来越像 Laravel 啦 at 2017-09-12 15:56:59

    @fatrbaby 实现了的,跟laravel的类似

  • [北京][2k~3k] HIGO:最好的全球时尚购物平台 招 PHP 开发实习生 at 2017-09-06 12:44:13

    别闹了,我14年毕业,南京这边当时公司给的本科生实习工资2.5k,硕士生3.5k, 供参考;
    ps: 楼主要是好意思的化自己删帖吧

  • [远程][10k-20k] Team247 招聘全栈工程师 at 2017-08-30 13:41:04

    @overtrue

    有人说话就会有争论

    我再升个级,“有人的地方就会有争论”

  • [远程][10k-20k] Team247 招聘全栈工程师 at 2017-08-30 11:20:26

    @Summer 我并不是要为@zhangwei900808 说什么话,但你一言不合就小黑屋的做法确实不恰当,一个注册一年的人,我不相信他只是来找喷的,每个人都有情绪失控的时候我也不相信你一直都这么理性。没有不吵架的朋友,也不会有一团和气的社区,既然是社区就是畅所欲言的地方,有人说话就会有争论,可以引导但不能堵截;

  • 介绍一款【没 Laravel 优雅】也【没有 Laravel 强大】, 但简单易用的框架 at 2017-08-24 20:35:25

    是个不错的创意,不过对annotation的支持最好还是支持通用的准则,现在也算是有标准了;

  • Laravel 字符串辅助函数新成员 at 2017-08-22 10:07:02

    一楼加一,不知有何用

  • 可能是我用过的最优雅的「 Alipay 和 WeChat 的支付 SDK」了 at 2017-08-19 22:01:05

    为什么要先到 $credential 再去到 client ?同时,像您说的那样 $credential 为 凭据 的意思,用在 登录,认证等 凭据 统一的情景中较多

    不是,可以想象一下和官方API交互的被称作Client,那么API怎么信任Client的身份呢?那就是Credential;所以不是过度设计,你(Client)拿着通行证(Credential)和我(API)交互,很合理。

    配置项在配置文件中,一般配置过一次就不会再更改了,业务代码中也只需要通过 config() 等辅助函数去或许配置项即可

    不冲突你依然可以把配置写在配置文件里; 配置和服务是分开的,把服务注册到DI容器的时候读取配置就行

    $container->share('payment.alipay', function(){
        $credential = new Credential(config('APPI_ID', config('PUBLIC_KEY')));
         $client = new Payment\Alipay\Client();
        return $client;
    });
    //需要用到该对象的时候直接从容器获取
    $alipay = $container->get('payment.alipay');

    ps: 示例代码不是标准的laravel di用法

    Variables 使用 underscore ,method 使用 CamelCase 。我个人认为这样更加易读

    两个方式没有可读性的差别,习惯问题;psr没有强行要求不过总有惯例,开源项目一般来说都是camel的用法;楼主可以去packagist看看

    关于 composer.lock 文件的问题

    没仔细看,不过我想那个应该是说使用sdk的项目(project),不是library

  • 可能是我用过的最优雅的「 Alipay 和 WeChat 的支付 SDK」了 at 2017-08-18 23:11:47

    几个小建议

    • 同四楼,标题再升华下;
    • 代码的风格,underscore的方式受众还是少于camel
    • 单元测试补上,对于长期维护的项目来说单元测试很重要,不止是规范,还是用来检查别人pr的基础验证
    • composer.lock 文件从版本库中移除
    • 继续抽象 这个得细说明下,和业务无关和代码生态设计有关:

    第四点说明

    • 配置问题,下面代码,将不同驱动的写在一个大数组里传给SDK, 这样确实够简单但也是典型缺乏设计的表现
      $config = [
      'alipay' => [
          'app_id' => '2016082000295641',
          'notify_url' => 'http://yansongda.cn/alipay_notify.php',
          'return_url' => 'http://yansongda.cn/return.php',
          'ali_public_key' => '',
          'private_key' => =',
      ],
      ];
      $config_biz = [
      'out_trade_no' => '1',
      'total_amount' => '1',
      'subject' => 'test subject',
      ];
      $pay->pay($config_biz );

    如果研究过amazon和paypal登公司sdk的话,你可能会经常遇到一个对象Credential 这个单词执意过来就是“凭据”,sdk和api交互的身份信息;所以如果这么改一下,我会觉得好一点

    $credential = new Pay\Alipay\Context\Credential(APP_ID,  ALI_PUBLICK_KEY);
    $payment= new  Pay\Alipay\Client($credential);
    
    $payment->purchase(new Product(Currency::RMB, 10.20)); //收款
    
    $order = new Order('TRADE_NO',  new Amount(10.2));
    $payment->pay($order);
    $payment->refund($order,  new Amount(10.2)); //退款

    ps:类是我随手写的可能不符合支付宝和wechat实际所需要的,因为我接触的跨境支付比较多,设计到多币种,所以才价格上习惯用Amount对象; 国内的话直接给个数字就可以了,毕竟都是人民币;

    也许有人会说了class那么多,抛出来的api必然也很复杂,性能也差,这句话是对的,当开发者使用一款sdk的时候,遇到数组配置的时候很有亲切感,因为写得最多的就是数组,但数组缺乏设计感也是事实,它像是一个黑盒,照着抄把参数扔进去,不用考虑生态; 能够优雅的调用才是优雅的代码。所以包括超哥的wechat,sms, 同样的问题, 简单优雅但还不是足够的优雅。

    • 策略模式

    使用策略模式去屏蔽各个渠道的差异性是非常常见的设计方式,但很多sdk都做错了一件事,为了追求对外接口的统一性牺牲部分平台的细节;
    当前的项目之前paypal支付一直用的omnipay,优点是接口很简单,付款的时候给个数字完事,但后来由于业务要求需要把用户的订单信息传给paypal做风控,查了很久才发现这个sdk给阉割了因为要维持统一性;无奈换回了官方sdk,非常庞大的sdk,调用起来要写很多代码,但很舒服;
    提这个是希望广大的开发者不要真的为了屏蔽细节去阉割官方的功能,interface是必须要实现的但也是可以继承的;100%移植是个基础要求。

    以上纯属个人意见,不对的话欢迎指正;ps: 写这么多是因为楼主做了我一直想做的事,无奈一直没机会接触国内的支付,没经验去动工,楼主加油。后面我就写一些海外版支付。:smile:

  • 【心得】CodeIgniter 與 Laravel 的比較 at 2017-08-16 10:34:59

    不接受公共马桶,不卫生;实在只有马桶的话我一般会在上面垫上一层卫生纸

  • Laravel 5~嵌套评论的实现 at 2017-08-10 17:37:58

    不错

  • 分享一个 WangEditor 的轮子 at 2017-08-01 13:59:08

    这种前端的东西本没有必要集成到后端的包里面;前后端本来就是独立发展的,强行连在一起降低灵活性

  • 一个可以分享作品的网站 at 2017-08-01 13:54:06

    简洁了些

  • [求教] Laravel china 是怎么做到这么快的, 求各位大神和站长大人指导啊? at 2017-07-26 12:53:02

    把你的代码放到服务器上,如果没什么逻辑上的错误的话也不会慢到哪去

  • [无锡][8K-15K] 江苏萌小明智能科技有限公司 + 后端工程师 at 2017-07-25 12:49:11

    待遇 福利不写说面议的都是耍流氓

  • PHP 生成更好的随机数 at 2017-07-18 15:06:32

    感觉像个二维码

  • 一个搜歌下载的小功能 at 2017-07-15 20:45:34

    酷狗竟然把这样的接口公开。。