php+component,PHP 中什么时候用 component 什么时候用 Model,特别迷惑

开始使用yii2,但是被里面的弄得很迷惑,component 和 model的区别是什么样的。

以下是一些自己的心得,可能有错误,请指正:

1)发现yii2一些规律,在 @app/models/*文件 有2种类型。比如InfoForm这样以Form结尾的文件都是继承自Model,而Info.php这样的表名的文件都是继承自 ActiveRecord 。但疑问的是在github上看到的一些yii2的程序,里面的全部都写在一个Info.php这样的里面。(不过网络上使用yii2开发的开源程序真的是少得可怜,没有研究)

2)component 与 model的区别到底是在哪里?什么情况下该用component 什么情况下该用model?貌似继承自 ActiveRecord 的 Info.php 这样的就只是一个单独的这样文件:

php<?php

namespace app\models;

use yii\base\ActiveRecord;

class Info extends ActiveRecord {

public function static tableName(){

return '{{%my_post}}';

}

}

然后就没有写其他的功能代码了,其他的写在这个地方似乎不合适了。

3)接到上面第2点,比如当我要实现用户的积分扣除功能。流程逻辑应该如下吧:

1.先检测用户当前的积分是否充足?如果不充足失败且提示。

2.执行积分扣除

3.成功写入积分变更日志

像第3点这样的,该写在那个文件,特别让人疑惑 /models/Member.php 还是 /models/MemberQuery.php 还是 /components/Member/ScoresUse.php

4)如果真的像 【积分扣除】【用户封禁】这样的功能都制作成单独的组件components,那么ActiveRecord models那么岂不就真的就只剩下第2点里面说的这一段内容的?另外如果真的是这样,那岂不component 变得异常的庞大,但问题是执行【积分扣除】【用户封禁】这样的操作,不是单独某个表的,如果放到 /models/Member.php 里面去执行,需要调用额外的其他表,显然又不符合规范,显得很混乱。

5)比如 【积分扣除】【用户封禁】这样的操作必须可以让正在登陆用户自行调用,又可以让登陆的管理员自行登陆,所以,似乎归类到 model来说完全不适合? 归类到 component 却又还不如直接用 function 单独函数更方便?比如执行 【积分扣除变更】功能:

php/**

* @description 操作用户积分!

* @param $mid

* @param $jftype

* @param string $tips

* @param null $jfValue2

* @return bool

*/

function log_jifen_change($mid, $jftype, $tips = '', $jfValue2 = null)

{

global $dsql;

$jfvalue = $jfValue2 && is_numeric($jfValue2) ? $jfValue2 : jifen_value($jftype);

if ($dsql->ExecuteNoneQuery2("UPDATE #@__member SET scores=scores+'$jfvalue' WHERE mid='" . $mid . "' ")) {

$rs = $dsql->GetOne("SELECT `scores` FROM `#@__member` WHERE `mid`='{$mid}' ");

$scoresLeft = $rs['scores'];

$setarr = array(

'mid' => $mid, //会员ID

'jftype' => $jftype, //积分代码

'jftime' => time(), //操作时间

'jfvalue' => $jfvalue, //本次变更积分

'tips' => $tips, //提示内容

'jfleft' => $scoresLeft, //剩余的积分

);

$dsql->ExecuteNoneQuery("INSERT INTO gk_member_jflog SET " . MkSetSql($setarr));

return $scoresLeft;

}

return false;

}

PHP中什么时候该用 component 什么时候该用 model?特别让人迷惑。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值