把spModel和spController打包到一个function里,行得通吗?

#1 ghj386

请问这样行不行?我试过出错
function basemanager($mycontrol,$mymodel,$mytable,$mytitle,$mycontents){
class $mymodel extends spModel
{
  var $pk = "id"; // 每个留言唯一的标志,可以称为主键
  var $table =$mytable; // 数据表的名称
}
class $mycontrol extends spController

function __construct(){ // 公用
  parent::__construct(); // 这是必须的
  $this->tpl_title = $mytitle;
}

function index(){
}
.........(省略)
}


调用的时候这样:

basemanager($mycontrol="material",$mymodel="materials",$mytable="materials",$mytitle=" 基础设置:物资管理",$mycontents="物资管理详细信息");

我这样调用后,系统出错:

Parse error: parse error, expecting `T_STRING' in E:\SpeedAMP\htdocs\modules\base\material.php on line 3



之所以想这样用,是发现几乎所有的基础表格的管理的操作过程都是一样的,想做个函数,写起来就简便多了。

2010-07-21 10:25:53

#2 jake

class $mymodel extends spModel // 这句语法出错,class $mymodel 不能这样定义的。

另外我也不明白打包的意思

2010-07-21 12:17:04

#3 sevil

他的意思是指放到一个文件里吧

2010-07-21 14:25:30

#4 ghj386

打包的原因是物资表对应的操作和中间产品、产品、人员、设备等的对应操作完全一样(除了对应数据表不同和视图位置不同),所以想偷懒,不用为这些表格的维护管理另外都重复写一次

jake,你看还有什么其他的好方法吗?
用重新定义类行得通吗?

2010-07-21 14:39:25

#5 azwl

回复 4 ghj386


    那就用继承是不是比较好

2010-07-21 15:03:09

#6 jake

对,用继承的方式

2010-07-21 15:10:08

#7 ghj386

是的,最后用了继承的方式,得以实现:
我的步骤如下:

将通用的control模块class basecontrol extend spcontroller,保存到一个文件如basecontrol.php

然后在新建的文件里这样调用:
require('basecontrol.php);
class main extend basecontrol{};
然后就ok了

谢谢大家:)

2010-07-21 21:05:56