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 Admin\Controller;
use Think\Controller;
class MainController extends Controller
{
public function showList()
{
echo "大苹果商城";
}
} ?>

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

<?php
namespace Admin\Controller;
use Think\Controller;
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 Admin\Controller;
use Think\Controller;
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:\wamp\www\thinkphp\Application\Admin\Conf\config.php里面修改。将tp框架配置文件D:\wamp\www\thinkphp\ThinkPHP\Conf\convention.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表,要现在Admin\Model目录下新建NationModel.class.php文件,文件的内容如下:

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

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

<?php
namespace Admin\Controller;
use Think\Controller;
class DengLuController extends Controller
{ public function shuJu()
{
//1.new的方式
//$n = new \Admin\Model\NationModel();//这种方法造的是子类对象
//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框架下有一个初始命名空间(相当于根目录)
  初始命名空间:ThinkPHP\Library。

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

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

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

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

  

thinkphp模型的更多相关文章

  1. 错误之thinkphp模型使用发生的错误

    刚接触thinkphp模型的创建,在创建model类时在这里边声明了类的对象.唉,这是不理解的错误啊.什么叫做实例化模型对象,在控制器里边使用才创建. 模型这里写各种用到的函数. 这里我也体会到了查询 ...

  2. thinkphp模型层Model、Logic、Service讲解

    thinkphp模型层Model.Logic.Service讲解 时间:2014-08-24 15:54:56   编辑:一切随缘   文章来源:php教程网 已阅读:771 次       js特效 ...

  3. ThinkPHP 模型(Model)命名规范

    一个小问题搞了好久:如果数据库的表名中有下划线,那么在用thinkphp做自动完成时注意Model类的命名要变成驼峰法,文件名和类名都要变.( 另外注意:只有使用create方法创建数据时才能调用到自 ...

  4. thinkphp模型中的获取器和修改器(根据字段名自动调用模型中的方法)

    thinkphp模型中的获取器和修改器(根据字段名自动调用模型中的方法) 一.总结 记得看下面 1.获取器的作用是在获取数据的字段值后自动进行处理 2.修改器的作用是可以在数据赋值的时候自动进行转换处 ...

  5. thinkphp模型事件(钩子函数:模型中在增删改等操作前后自动执行的事件)

    thinkphp模型事件(钩子函数:模型中在增删改等操作前后自动执行的事件) 一.总结 1.通过模型事件(钩子函数),可以在插入更新删除等前后执行一些特定的功能 2.模型事件是写在模型里面的,控制器中 ...

  6. thinkPHP模型before_insert新增前 before_update更新前 before_write写入前 区别

    thinkPHP模型中有个save方法,可用于新增数据和修改数据,这里容易出现混淆. 经过调试: before_write,不管是插入新数据还是修改数据都会执行: before_insert,只有插入 ...

  7. ThinkPHP模型基础类提供的连贯操作方法

    ThinkPHP模型基础类提供的连贯操作方法(也有些框架称之为链式操作),可以有效的提高数据存取的代码清晰度和开发效率,并且支持所有的CURD操作. 直线电机哪家好 使用也比较简单, 假如我们现在要查 ...

  8. Thinkphp模型问题(一)

    很长一段时间,脑海里没有模型和控制器的区别,几乎把所有代码都敲在控制器里边了. 来自于ThinkPhp3.2.3手册模型定义 ​​​​​​​模型类的作用大多数情况是操作数据表的,如果按照系统的规范来 ...

  9. TP框架---thinkphp模型

    1.获取系统常量信息的方法:在控制器DengLuController里面下写入下面的方法,然后调用该方法. public function test() { //echo "这是测试的&qu ...

随机推荐

  1. Oracle汉字转拼音package

    --函数GetHzFullPY(string)用于获取汉字字符串的拼音 --select GetHzFullPY('中华人民共和国') from dual; --返回:ZhongHuaRenMinGo ...

  2. Spring、hibernate以及struts2三大框架的整合

    1.首先导入整合框架所需要的43个jar包: 2.配置xml文件: <?xml version="1.0" encoding="UTF-8"?> & ...

  3. MySQL 常用命令总结

    http://blog.csdn.net/hanxin1987216/article/details/5976860 一.总结 1.Linux系统下启动MySQL的命令: mysqladmin sta ...

  4. Windows 10下使用U盘安装Ubuntu双系统

    问题描述:在Windows10下安装Ubuntu. 使用工具:Windows10.Ubuntu16.04 LTS安装包.UltraISO.easyBCD. 操作步骤: 1.安装之前要给Ubuntu分出 ...

  5. 史上最全QC学习方案,值得收藏!

    Quality Center是一个基于Web的强大的测试管理工具,可以组织和管理应用程序测试流程的所有阶段,**制定测试需求.计划测试.执行测试和跟踪缺陷.此外,通过Quality Center还可以 ...

  6. ZBrush中的头部模型该如何进行雕刻

    使用ZBrush®能够快速雕刻人物头部模型,教程只是大概介雕刻前的准备工作和一些软件基础,真正的雕刻还需要学习者具备一定的功底,本文向大家展示头部模型制作流程解析,初学者可以以它做参考拓展自己思路. ...

  7. Struts2 讲解笔记

    1.第一个Struts2入门案例 1.找jar包 Struts2-core xwork-core ognl javasist freemarker commons-lang commons-io co ...

  8. [.NET逆向] 破解NET的四大神器

     原本这篇文章可以更早一星期写出来与大家分享,由于某方面的原因耽搁到现在,心里竟有那么一点好像对不住大家的感觉.这当然与神器有关,因为我发现利用这四大神器我似乎觉得几乎所有的NET程序破解都不在话下了 ...

  9. Coursera上一个不错的Java课

    地址:https://www.coursera.org/learn/java-chengxu-sheji/home/welcome 复习天昏地暗,看点视频调剂一下.发现这个讲的还是很不错的.北大毕竟比 ...

  10. mybatis: 利用多数据源实现分库存储

    之前写过一篇mybatis 使用经验小结 提到过多数据源的处理方式,虽然简单但是姿势不太优雅,今天介绍一些更美观的办法: spring中有一个AbstractRoutingDataSource的抽象类 ...