zoukankan      html  css  js  c++  java
  • thinkphp模型

    1.获取系统常量信息的方法:在控制器DengLuController里面下写入下面的方法,然后调用该方法。

    public function test()
        {
            //echo "这是测试的"
            //$this->assign("a","world");
            //$this->show();
            
            var_dump(get_defined_constants());//获取系统常量信息。里面加上参数true,就会按照类把所有的信息显示出来。
            
        }

    系统信息里面比较重要的是user里面的信息,有时候会用到这些信息。下面都是比较重要的信息。

    //'__ROOT__' => string '/thinkphp' (length=9)  //整个tp框架根目录
    //'__INFO__' => string 'Admin/DengLu/test' (length=17)  //获取模块名/控制器名/方法名
    //'__SELF__' => string '/thinkphp/index.php/Admin/DengLu/test' (length=37) //代表自身的路径
    //'__APP__' => string '/thinkphp/index.php' (length=19)  //代表入口文件地址
    // '__MODULE__' => string '/thinkphp/index.php/Admin' (length=25)  //模块文件夹路径
    //'__CONTROLLER__' => string '/thinkphp/index.php/Admin/DengLu' (length=32)  //控制器文件夹路径
    // '__ACTION__' => string '/thinkphp/index.php/Admin/DengLu/test' (length=37)  //找到操作方法

    2.跨控制器的调用

    跨控制器调用就是在某一个控制器里面写了一个方法,要在每一个页面都拿来用。

    例如:新建一个控制器MainController.class.php,控制器的内容如下,里面有一个方法,输出“大苹果商城”。

    <?php
    namespace AdminController;
    use ThinkController;
    class MainController extends Controller
    {
        public function showList()
        {
            echo "大苹果商城";
        }
    }
    
    ?>

    在MainController.class.php同一级目录下有一个控制器DengLuController.class.php,要在里面调用MainController.class.php里面的showList方法。调用方法如下:

    <?php
    namespace AdminController;
    use ThinkController;
    class DengLuController extends Controller 
    {
        public function test()
        {
            //1.造新对象 MainController,调用里面的showList方法。
            //$m = new MainController();
            //$m->showList();
            //2.使用快捷函数A
            //$m = A("Main");//A方法用来实例化控制器对象,控制器前面不加模块名调用的是控制器同级目录下的其它控制器。
            //$m->showList();
            
            //$m = A("Home/Index");//控制器前面加上模块名,就是调取的其它模块下的控制器
            //$m->test();//Index控制器里面有个test方法,调用此方法。
            //3.使用快捷函数R
            //$m = R("Home/Index/test");//R实例化对象同时调用指定方法,直接写控制器和方法名。
        }
        public function _empty()//当访问空方法时执行这个方法,输出一句话。
        {
            echo "您输入的地址不对";
        }
    }

    3.生成路径的方法,可以在任意方法里面生成任何方法的路径,之遥前面加上模块名和控制器名即可。

    <?php
    namespace AdminController;
    use ThinkController;
    class DengLuController extends Controller 
    {
        public function test()
        {
            //快捷函数U方法
            echo U("test");//生成test方法的完整路径。
            echo U("Main/test");//生成Main控制器下test方法的完整路径。
            echo U("Home/Main/test");//生成Home模块下的Main控制器下test方法的完整路径。
        }
        public function _empty()
        {
            echo "您输入的地址不对";
        }
    }
    
    
    ?>

    4.连接数据库配置及Model数据模型层

    (1)修改配置

      做配置要在自己的配置文件里面修改配置,这里是在D:wampwww hinkphpApplicationAdminConfconfig.php里面修改。将tp框架配置文件D:wampwww hinkphpThinkPHPConfconvention.php文件里面讲需要修改的配置复制到config.php里面去修改。修改的内容大致如下,配置信息修改成自己的数据库的信息。由于该配置是在Admin模块下,所以只有该模块下的程序代码才可以访问数据库。

    /* 数据库设置 */
        'DB_TYPE'               =>  '',       // 数据库类型
        'DB_HOST'               =>  '',       // 服务器地址
        'DB_NAME'               =>  '',       // 数据库名
        'DB_USER'               =>  '',       // 用户名
        'DB_PWD'                =>  '',       // 密码
        'DB_PORT'               =>  '',       // 端口
        'DB_PREFIX'             =>  '',       // 数据库表前缀
        'DB_PARAMS'              =>  array(), // 数据库连接参数    
        'DB_DEBUG'              =>  TRUE,     // 数据库调试模式 开启后可以记录SQL日志
        'DB_FIELDS_CACHE'       =>  true,     // 启用字段缓存
        'DB_CHARSET'            =>  'utf8',   // 数据库编码默认采用utf8
        'DB_DEPLOY_TYPE'        =>  0,        // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
        'DB_RW_SEPARATE'        =>  false,    // 数据库读写是否分离 主从式有效
        'DB_MASTER_NUM'         =>  1,        // 读写分离后 主服务器数量
        'DB_SLAVE_NO'           =>  '',       // 指定从服务器序号

    (2)制作model模型

      a.model本身就是一个类文件

      b.数据库中的每个数据表都对应一个model模型文件。

      c.建立model模型:

      例如如果要访问数据库中的nation表,要现在AdminModel目录下新建NationModel.class.php文件,文件的内容如下:

    <?php
    namespace AdminModel;//命名都要改成Model
    use ThinkModel;
    class Nation extends Model//继承自父类Model
    {
        //如果有特殊需求可以在这里写上,正常的话不需要写需求。
    }
    ?>

    下面是新建Nation类的三种方法

    <?php
    namespace AdminController;
    use ThinkController;
    class DengLuController extends Controller 
    {
        
        public function shuJu()
        {
            //1.new的方式
            //$n = new AdminModelNationModel();//这种方法造的是子类对象
            //var_dump($n);
            
            //2.使用快捷方式D方法
            //$n = D("Nation");//这种方法造的是父类的对象
            //var_dump($n);
            
            //3.使用快捷方式M方法
            $n = M("Nation");//这种方法造的是父类的对象
            var_dump($n);
        }
        
        public function _empty()
        {
            echo "您输入的地址不对";
        }
    }
    ?>

    5.命名空间

    命名空间相当于虚拟的目录,意思是做一个虚拟的目录,本来A文件夹下放了一个文件aa,用程序写一个文件目录,把aa文件的上一级当成是B文件夹。(文件aa在A文件夹里面,用程序说aa文件在B文件夹里面)。

      TP框架做虚拟空间是为了能够有一个统一的文件夹管理,比如说把类文件都放在同一个文件夹里面,在调用这些类文件时就不需要用include、require来加载这些类文件了,可以试下自动加载。同时,所有的文件命名规则都一样,同时目录都是定死的,就可以使用自动加载类了,就可以直接new 类了。由此可见,TP框架里面使用命名空间的目的主要是为了自动加载类。  

      TP框架下有一个初始命名空间(相当于根目录)
      初始命名空间:ThinkPHPLibrary。

      在初始空间命名下又包含很多根命名空间。这些根命名空间主要分两类:

      (1)TP核心类里面的根。在Library目录下所有的文件夹都是根。在写命名空间的时候要从根开始写。

      (2)APP里面的根。APP里面的根是以模块名命名的。

      写类时,用use引入命名空间,例如use ThinkController,Think是根目录,Controller是父类也是文件名。而在namespace AdminController;中,Controller是真是的文件夹

      

  • 相关阅读:
    9-10【H5混合实战】基于自定义WebView实现H5混合开发-3
    9-9【H5混合实战】基于定义WebView实现H5混合开发-2
    9-7【实战引用】球区入口实现
    9-5&9-6创建组件,使用组件
    9-4DAO首页大接口Dao层实现和调用-2
    9-4DAO首页大接口Dao层实现和调用-1
    9.3model层设计
    9.2熟悉接口好开发
    8-9 Flutter与Native通信-Android端实战
    8-8 Flutter与Native通信-Android端讲解
  • 原文地址:https://www.cnblogs.com/xiaofox0018/p/6210571.html
Copyright © 2011-2022 走看看