haikou

第 2108 位会员

会员
个人信息
  • 加入于 2019-12-25 10:27:55
  • 最后登录时间 27天前
个人成就
  • 发表文章次数 3
  • 发布回复次数 10
  • 个人主页浏览次数 7
如何看待国内开源的不可持续性1个月前

@OneSmile #1楼 大佬也是从孙子走过来的,单纯玩技术,真的靠天分和努力了,努力不够,啥也没得说。

关于service文件中为什么要设置protected的action方法,而不是直接使用public的普通方法1个月前

读源码就可以读懂的

1.service类都是继承于父类 @fecshop/services/Service.php ,也就是文件:https://github.com/fecshop/yii2_fecshop/blob/master/services/Service.php

2.打开这个文件可以看到里面有一个魔术方法

/**
     * 通过call函数,去调用actionXxxx方法。
     */
    public function __call($originMethod, $arguments)
    {
        if (isset($this->_callFuncLog[$originMethod])) {
            $method = $this->_callFuncLog[$originMethod];
        } else {
            $method = 'action'.ucfirst($originMethod);
            $this->_callFuncLog[$originMethod] = $method;
        }
        if (method_exists($this, $method)) {
            $this->beginCall($originMethod, $arguments);
            $return = call_user_func_array([$this, $method], $arguments);
            $this->endCall($originMethod, $arguments);

            return $return;
        } else {
            throw new InvalidCallException('fecshop service method is not exit.  '.get_class($this)."::$method");
        }
    }

譬如Yii::$service->order->getxxxx(), 如果找不到函数,就会调用魔术方法__call,去找 actionGetxxxx函数,找到后执行这个函数

这样设置的目的是想在每一次调用services,系统都可以记录

$this->beginCall($originMethod, $arguments);
$return = call_user_func_array([$this, $method], $arguments);
$this->endCall($originMethod, $arguments);

这是为了调试加入的,也是这个设计初衷,您如果二次开发,直接定义public方法即可,不需要按照actionGetxxx来定义

也就是如果定义public的方法,不会走这个魔术方法过程,进行不会将这个调用,以及各个service函数的耗时打印出来。

fecmall JD模式产品辅助工具,让其用起来像淘宝模式产品3个月前

@OneSmile [#12楼](#comment12) 那你自己想办法喽,你们仓库牛逼,几万的假发sku存着

本人也做过假发,零库存,没货就去采购,有采购部分,你们牛逼,第一次见,牛的不能再牛,几万的假发sku存在仓库,真牛!

你这么牛,自己应该可以想出来办法,还上来发帖做什么?

fecmall JD模式产品辅助工具,让其用起来像淘宝模式产品3个月前

@OneSmile [[[#10楼](#comment10)](#comment10)](#comment10)

零库存处理方式并不是没有库存,而是一种处理方式,譬如公司有采购部门或者生产部分,如果仓库有货就直接拿着发货,如果没有货,就自己生产或者采购后发货,因此,商城的所有产品不存在缺货的情况,直接就是零库存处理

真正的库存管理,是在erp里面。

你一定要搞懂,什么是销售库存,什么是实际库存

你还是继续回去做梦吧,梦里不用主动思考抽象解决问题。

fecmall 后台开启缓存后,刷新缓存,前端商城不生效3个月前

将文件@appfront/runtime/cache设置777后,缓存可以用了,多谢

Your Site Analytics