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

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

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

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

2.跨控制器的调用

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

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

  1. <?php
  2. namespace Admin\Controller;
  3. use Think\Controller;
  4. class MainController extends Controller
  5. {
  6. public function showList()
  7. {
  8. echo "大苹果商城";
  9. }
  10. }

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

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

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

  1. <?php
  2. namespace Admin\Controller;
  3. use Think\Controller;
  4. class DengLuController extends Controller
  5. {
  6. public function test()
  7. {
  8. //快捷函数U方法
  9. echo U("test");//生成test方法的完整路径。
  10. echo U("Main/test");//生成Main控制器下test方法的完整路径。
  11. echo U("Home/Main/test");//生成Home模块下的Main控制器下test方法的完整路径。
  12. }
  13. public function _empty()
  14. {
  15. echo "您输入的地址不对";
  16. }
  17. }

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

(1)修改配置

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

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

(2)制作model模型

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

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

  c.建立model模型:

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

  1. <?php
  2. namespace Admin\Model;//命名都要改成Model
  3. use Think\Model;
  4. class Nation extends Model//继承自父类Model
  5. {
  6. //如果有特殊需求可以在这里写上,正常的话不需要写需求。
  7. }

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

  1. <?php
  2. namespace Admin\Controller;
  3. use Think\Controller;
  4. class DengLuController extends Controller
  5. {
  6.  
  7. public function shuJu()
  8. {
  9. //1.new的方式
  10. //$n = new \Admin\Model\NationModel();//这种方法造的是子类对象
  11. //var_dump($n);
  12.  
  13. //2.使用快捷方式D方法
  14. //$n = D("Nation");//这种方法造的是父类的对象
  15. //var_dump($n);
  16.  
  17. //3.使用快捷方式M方法
  18. $n = M("Nation");//这种方法造的是父类的对象
  19. var_dump($n);
  20. }
  21.  
  22. public function _empty()
  23. {
  24. echo "您输入的地址不对";
  25. }
  26. }

5.命名空间

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

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

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

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

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

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

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

thinkphp model模块的更多相关文章

  1. thinkPHP 空模块和空操作、前置操作和后置操作 详细介绍(十四)

    原文:thinkPHP 空模块和空操作.前置操作和后置操作 详细介绍(十四) 本章节:介绍 TP 空模块和空操作.前置操作和后置操作 详细介绍 一.空模块和空操作 1.空操作 function _em ...

  2. Django之model模块创建表完整过程

    Django中,与数据库相关的模块是model模块,它提供了一种简单易操作的API方式与数据库交互,它是通过ORM映射的方式来操作数据库,一个类对应数据库一张表,一个类属性,对应该表的一个字段,一个实 ...

  3. Backbone事件机制核心源码(仅包含Events、Model模块)

    一.应用场景 为了改善酷版139邮箱的代码结构,引入backbone的事件机制,按照MVC的分层思想搭建酷版云邮局的代码框架.力求在保持酷版轻量级的基础上提高代码的可维护性.   二.遗留问题 1.b ...

  4. ThinkPHP 跨模块调用操作方法(A方法与R方法)

    ThinkPHP 跨模块调用操作方法(A方法与R方法) 跨模块调用操作方法 前面说了可以使用 $this 来调用当前模块内的方法,但实际情况中还经常会在当前模块调用其他模块的方法.ThinkPHP 内 ...

  5. thinkphp跨模块调用

    thinkphp跨模块调用 跨模块调用模板 return $view->fetch('admin@user/add'); 全路径模板调用: return $view->fetch(APP_ ...

  6. [ThinkPHP]MVC模块和URL访问

    ## ThinkPHP 3 MVC模式和URL访问#讲师:赵桐正微博:http://weibo.com/zhaotongzheng 本节课大纲: 一.什么是MVC                 // ...

  7. thinkphp model层外挪,以便多个站点可以通用

    /ThinkPHP/ThinkPHP.php  增加如下代码 //非原始代码defined('BASE_LOGIC') or define('BASE_LOGIC', THINK_PATH . '.. ...

  8. thinkphp Model的使用

    4.1 放在哪儿?项目/模块/Model目录下以本教程为例,Home模块的Model/Home/Model/目录下 4.2 model类文件叫什么?模型名: DemoModel.class.php 4 ...

  9. ThinkPHP Widget模块开发流程

    初识ThinkPHP的Widget,现把模块开发的流程发布如下,也方便以后自己查阅: 一.新建数据库表self_modules,sql代码如下 CREATE TABLE `self_modules` ...

随机推荐

  1. 在IIS7中ASP.NET MVC3网站中建立gcc编译服务时要注意的问题

    1. 正常配置下调用gcc总是失败,虽然在环境变量中配置了gcc路径,但提示找不到gcc编译程序: 2. 使用全路径调用gcc,也是失败,提示cc1.exe编译失败,失败代码53: 3. 通过远程桌面 ...

  2. Druid安装-单机

    单机版安装 下载安装包http://static.druid.io/artifacts/releases/druid-0.9.1.1-bin.tar.gz 安装  解压缩 安装zookeeper cu ...

  3. log level

    ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF

  4. linux 查看系统信息

    一.查看内存信息 可以使用free命令显示系统的物理内存和交换分区的总量,以及已使用的.空闲的.共享的.在内核缓冲内的和被缓存的内存数量. 使用free命令可以显示计算机系统的内存容量. [root@ ...

  5. 优化servlet

    在最开始的时候我们写一个servlet(LoginServlet)对应一个请求(Login.jsp),这样的话就会产生很多的servlet,使其以后维护变得麻烦,所以我们可以考虑将同一类型(Login ...

  6. php 判断文件或目录是否存在

    判断文件或目录是否存在有自带的函数 file_exists:文件是否存在 $file = "check.txt"; if(file_exists($file)) {     ech ...

  7. javascript 闭包最简单理解

    首先说3点与闭包有关系的东西. 一.变量的作用域 变量的作用域不难理解. 1.函数内部可以访问函数外部的变量,而函数外部不能访问函数内部的变量. 2.如果在函数内定义变量的时候,不加var,那么是全局 ...

  8. for 小曦

    安装GO 当前版本1.6.2 http://blog.163.com/hehaifeng1984@126/blog/static/690011362013101044011568/ 教程 https: ...

  9. SSDP

    SSDP:Simple Service Discover Protocol,简单服务发现协议,PC机只要网口UP,就会通过该协议寻找可用的网络服务.PC机发出的报文基于UDP协议的1900端口发送组播 ...

  10. iBatis的SQL注入

    sqlMap中尽量不要使用$;$使用的是Statement(拼接字符串),会出现注入问题.#使用的是PreparedStatement(类似于预编译),将转义交给了数据库,不会出现注入问题:.前者容易 ...