usemethodsmodelparameters 初始化模型配置_【201105】模型Model(三)TFModel对象的实现...

介绍

介绍

隔了几天时间,福哥终于有时间了继续推进我们的TFPHP框架的进程了。今天我们继续设计模型模块,上一课我们已经完成了TFDO对象的设计,有了数据连接能力之后就可以进行模型对象TFModel的基本架构的设计了。

大家都知道,模型对象TFModel是用来读取/写入数据的,所以我们需要在TFModel里面进行TFDO对象的初始化操作。但是TFDO对象初始化需要知道连接数据库的各种参数,这些参数是根据项目运行环境而变化的。所以,我们还需要一个地方可以保存项目的环境参数,然后在TFModel里面调用这些环境参数。那么福哥就在TFPHP的System下面建立了一个TFConfig对象,用来设置项目的环境参数。

代码

TFConfig

getGroup

private static function getGroup(string $group):string {    if($group == null){        return "default";    }    return $group;}

set

public static function set(string $key, $value, string $group=null){    $group = TFConfig::getGroup($group);    TFConfig::$items[$group][$key] = $value;}

get

public static function get(string $key, string $group=null){    $group = TFConfig::getGroup($group);    return TFConfig::$items[$group][$key];}

TFModel

init

protected function init(){}

讲解

现在我们来对TFModel对象的设计讲解一下。

TFConfig

配置对象,程序文件保存在SystemTFConfig.inc.php。

getGroup

获取配置分组$group的值,如果传入值为null则设置为默认分组。

set

设置配置参数,可以通过$group分组值进行分组,不同分组可以有相同名称的参数。

get

获取配置参数,可以通过$group分组值进行分组,不同分组可以有相同名称的参数。

TFModel

模型对象基类,程序文件保存在ModelTFModel.inc.php。

init

这个方法是一个空方法,是用来给继承TFModel的具体项目模型对象重载使用的,它会对模型对象进行一些初始化的处理。

使用

下面我们来使用TFConfig和TFModel应用到WEB-INF默认项目里面。

项目自动加载器

建立WEB-INF/Autoload.inc.php程序文件,写入如下内容:

define('FRAMEWORK_DEMO_ROOT_PATH', __DIR__. "/");function TFPHP_Demo_Autoload(string $class):bool {    $classPath = FRAMEWORK_DEMO_ROOT_PATH. substr(str_replace("", "/", $class), 11). FRAMEWORK_CLASS_EXTENSION;    if(file_exists($classPath)){        include_once ($classPath);        return true;    }    return false;}spl_autoload_register("TFPHP_Demo_Autoload");

配置参数

建立WEB-INF/Config.inc.php程序文件,写入如下内容:

use TFPHPSystemTFConfig;TFConfig::set("mysql", array(    'host'=>"127.0.0.1",    'port'=>3306,    'user'=>"root",    'pass'=>"abcdef",    'db'=>"tfse",    'charset'=>"utf8",), "db");

建立模型

默认模型

建立WEB-INF/Classes/DefaultModel.inc.php程序文件,写入如下内容:

namespace TFPHPDemoClasses;use TFPHPDatabaseSQLTFDO;use TFPHPModelTFModel;use TFPHPSystemTFConfig;class DefaultModel extends TFModel{    protected TFDO $TFDO;    public function __construct(){        parent::__construct();    }    protected function init(){        $mysqlArgv = TFConfig::get("mysql", "db");        $this->TFDO = new TFDO(            TFDO::T_MYSQL,            $mysqlArgv["host"],            $mysqlArgv["port"],            $mysqlArgv["user"],            $mysqlArgv["pass"],            $mysqlArgv["db"],            $mysqlArgv["charset"]        );        $this->TFDO->connect();    }}

website模型

建立WEB-INF/Model/website.inc.php程序文件,写入如下内容:

namespace TFPHPDemoModel;use TFPHPDemoClassesDefaultModel;class website extends DefaultModel{    public function __construct(){        parent::__construct();    }    public function getByDomainName($domainName){        $row = $this->TFDO->fetchOne("select * from websites where domainName = @str", array($domainName));        return $row;    }}

控制器

index控制器

修改WEB-INF/Controller/index.inc.php程序文件,写入如下内容:

use TFPHPControllerPageTFController;use TFPHPDemoModelwebsite;class PageController extends TFController{    protected function process(){        $myWebsite = new website();        $website = $myWebsite->getByDomainName("tongfu.net");        var_dump($website);    }}
bd79f0de40cd4544842333e9b2def1d7.png

总结

今天我们建立了模型模块的基础对象Model/TFModel,但是这个对象是一个空对象,里面没有任何具体逻辑。真正的逻辑是在WEB-INF/Model/website模型对象里面实现的,而WEB-INF/Model/website又是继承自WEB-INF/Classes/DefaultModel模型对象。

项目模型对象实现具体模型需要的逻辑

项目默认模型对象用来实现模型对象全局处理逻辑

框架模型对象为基础功能

使用MVC分层之后,控制器层(Controller)只负责将模型层(Model)提取的数据传递给视图层(View)来展示给用户,这里面只有模型层才会去连接数据库。

https://m.tongfu.net/home/35/blog/512859.html

d28e8459755597fa256495398d73e7b6.png
d21f87ea18038abd5c0b5e9b909e6303.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值