如何对SP类进行扩展
发布于:2022-01-17 09:50:54
#1 redguan
SP提示两个公共类。SPMODEL SPCONTROLLER
如何实现对这两个类的
标准扩充?
例如一些获取基本数据(获取IP,获取客户端信息),已有现成函数如何正确的扩展?
2010-02-23 11:43:33
#2 redguan
目前可行的有两种方法。
第一种是直接将类或函数写入SP的核心文件。
第二种是在相应目录建立一个新文件。并且通过
$BC = spClass("BaseClass");
可能还有其它方法。希望得到一个正确的,标准的方法。
2010-02-23 12:05:01
#3 php
我是用的第一种方法,直接把函数写在spFunctions.php末尾,这样可以直接使用
2010-02-23 13:28:16
#4 jake
MVC的一个要素就是可以对基类进行继承,用继承的方式扩展基类的功能。
比如说
http://speedphp.com/bbs/thread-142-1-1.html 这个例子里面,就扩展了用户model和留言model的基类spmodel,使得它们都有了新的功能。
而spcontroller可以说是语言结构,可以最好不要对spcontroller进行扩展,spcontroller更适合归总的逻辑。
2010-02-23 13:41:10
#5 redguan
这个事情感觉变复杂了,主要是对SP的结构还不是太了解。
总结一下:
一、
增加一个基础类 spBaseClass
$spConfig = 'auto_load_model' => array('spPager','spVerifier','spCache','spLinker','spBaseClass'), // 模型自动加载的扩展类名
但这样要将类代码写入 speedphp.php 这个核心文件。这样就没有OOP的优势了。以后升级也很麻烦。
========================
二、
在model 目录建立一个 文件,并且通过 spclass("类名"); 调用,但是类名内如果又有变量需要传入,那么书写代码就比较麻烦也比较累缀,不利于阅读。
========================
三、写一个公共类文件(或多个)
class XXX extends spModel 这样的形式继承。但是PHP不如JAVA,可以多种继承。(或者PHP6会出,这个不清楚了)
========================
最终目的,我希望的流种是这样:
程序加载=》SP控制类(暂称呼为SP1)或 SP模型类(SP2)、或 SP视图类(SP3)
程序加载=》SP基础扩展类1(P1)或|和(P2)
程序加载=》继承SP1 或 SP2 或 SP3 的子类。
1、不需要改SP版本中的任何文件。
2、增加一个或多个同级的底层类,而非继承原有两个基础类。
2010-02-24 10:42:32
#6 redguan
无法编辑,对上面再补充一点。
为什么我需要新增加一个同级基础类,而不是继承SPMODEL类呢?
因为:
1、我需要一个获取客户端IP的函数。方法是
class XXX extends spModel{
public function getip(){
}
}
这样是可以实现的。如果多个页面需要获取客户端IP。那么我就要在每个相应文件都增加getip 这个函数。
这种方法显示行不通。
但是PHP又没有类似的
class XXX extends spModel, spBaseClass, spPlusClass {
的语句。
2010-02-24 10:55:52
#7 jake
没有那么复杂,其实就在model目录建个top.php,class top extends spModel{}
然后其他的model继承类都是 class xxx extends top{}就好
有什么要全局用的就写到top类里面吧
2010-02-24 12:33:06
#8 redguan
看来很多代码要重写了。包括SP的核心代码。
因为我想用SP做一个复杂的
应用群。
/
/speedphp
/templates
/temp
/cache
/app1(info) => info.xxx.com
/app2(shop)=> shop.xxx.com
/app3(aticle)=>article.xxx.com
2010-02-24 17:30:57