比如category的childService,image为什么不继承Image。
菜鸟一枚,说不出所以然,就是感觉怪怪的。
如果是有特别的,望说明解惑。
1.看不懂,说详细,语言勾画的就像一团乱糟糟的缠麻。
2.都是继承的 |fecshop\services\Service;
|fecshop\services\Service;
@Terry #1楼 我是想问 fecshop\services\category\Image 为什么不继承 fecshop\services\Image
你自己追究这三个问题:
1.继承是用来干什么用的?
2.为什么要继承?
3.fecshop\services\category\Image 和 fecshop\services\Image 为什么要继承,为什么不继承?
fecshop\services\category\Image
fecshop\services\Image
先追究一天,然后贴上你的回答。
我感觉你的这个问题怪怪的,相互独立的services,为什么要继承? fecshop\services\category\Image 又不是基类
如果继承,就是强耦合,现在的services,每一个都是独立的,没有耦合,都是可以通过配置替换掉,重新实现里面的方法即可。方便重构扩展。
如果,fecshop\services\Image 我通过配置替换掉了,我重构了一个新的 xxxxx\services\Image ,
xxxxx\services\Image
那么所有继承 fecshop\services\Image 的services 里面的extends都要修改,都要重写,对吧? 譬如,如果按照你说的方式, fecshop\services\category\Image 继承了 fecshop\services\Image,那么这个方法也要重写, 也就是在引入的时候,将 use fecshop\services\Image 改成 use xxxxx\services\Image 对吧?
use fecshop\services\Image
use xxxxx\services\Image
是不是很费劲?所以services都是独立,没有耦合关系。
@Terry #3楼 最近是在写一些东西,所以有很多东西想不明白。 以前都是直接拿别人的过来用。 所以现在写的时候会想一下为什么,自己想不到,就困惑了,暂时不想了,先把东西做完。 谢谢!
@dosenje #5楼 既然想思考,那么你就把你思考的内容贴上来,让我看到你思考的成果,而不是一拍脑袋想出来一个问题,随便思考一下,就贴上来,干巴的贴上来,而看不到任何思考的东西。
把你思考琢磨的思路都贴上来,这才是讨论思考问题的态度。
@Terry [[#6楼](#comment6)](#comment6) 继承可以重写里面的配置和方法
如果我还有一个删除图片的方法 fecshop\services\category\Image.php
protected function actionSaveCategoryUploadImg($FILE) { Yii::$service->image->imageFloder = $this->imageFloder; Yii::$service->image->allowImgType = $this->allowImgType; if ($this->maxUploadMSize) { Yii::$service->image->setMaxUploadSize($this->maxUploadMSize); } return Yii::$service->image->saveUploadImg($FILE); } protected function actionRemoveImg($str) { Yii::$service->image->imageFloder = $this->imageFloder; Yii::$service->image->app = $this->app; return Yii::$service->image->removeImg($str); }
这样的话我需要传递多次配置信息。
如果是继承的Image,只需要属性覆盖就可以了。
1.然后看看我上面回复的内容,重构的问题,我如果新建了一个类来替换掉 fecshop\services\Image ,是不是 所以继承 fecshop\services\Image 的类都需要重构
2.有句话这么说,编码一时爽,重构火x场 ,大致就是这个意思,如果仅仅当时编码方便,service层都不需要加,直接用mvc就可以了。编码更快。
编码一时爽,重构火x场
@Terry #8楼 我又看了一下fecshop\services\category\Image和fecshop\services\product\Image
感觉我还是service层理解不到位,嗯,是这样!