k t*_*e z 0 model-view-controller yii
我正在用yii框架编写一个mvc web应用程序.我有一个业务逻辑,我不确定在哪里放置它. $usernameid=$model->random_id_gen('5');是我正在谈论的功能.
SiteController:
<!-- snip -->
public function actionIndex()
{
$model = new Users();
if (isset($_POST['Users'])) {
//call the active record table model
$model = new Users();
//massively assign attributes
$model->attributes=$_POST['Users'];
//generate random userid
$usernameid=$model->random_id_gen('5');
<!-- snip -->
Run Code Online (Sandbox Code Playgroud)
用户活动记录类:
<!-- snip -->
public function random_id_gen($length)
{
$characters = '23456789ABCDEFGHJKLMNPQRSTUVWXYZ';
$max = strlen($characters) - 1;
$string = '';
for ($i = 0; $i < $length; $i++) {
$string .= $characters[mt_rand(0, $max)];
}
return $string;
}
Run Code Online (Sandbox Code Playgroud)
我的问题:这个id生成器函数是否属于Active记录模型?它应该在控制器中吗?它应该是一个单独的模型,因为它是"业务逻辑",但与数据库没什么关系?
我正在努力改善我的MVC课程"膨胀".提前谢谢你们.
更新 我正在寻找一个特定的解决方案.如果有这样的约定,似乎问题已经发展成"应该把图书馆放在哪里".
应将MVC重命名为MVCL ..即Model-View-Controller-Library.这些函数应该进入一个独立的库系统.
控制器应该在TOP上.它有两个主要功能:接受用户输入和协调其他元素(控制器/库/视图)以进行输出.传统上,Controller从模型中询问数据.但是数据操作(最常见)应该由库中的函数完成.
可能有两个级别的库,一个可能是复杂的(基于对象),而另一个可能是简单的(基于全局函数),用于最常见的操作.类似于剥离标签,或使数据XML准备就绪,清理URL等等.整个系统可以访问简单的函数库,而无需对特定库对象进行任何实例化.
说得通 ?