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是真是的文件夹

TP框架---thinkphp模型的更多相关文章

  1. TP框架---thinkphp基础知识

    php框架    发瑞 一.真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维护项目,十分困 ...

  2. tp框架-----Model模型层

    1.Model模型层是用来做什么的呢? 主要是用来做操作数据库访问的.也就说明TP框架自带了一种访问数据库的方式,使用的是Model模型. 2.Model模型怎样使用呢? 要使用Model模型层访问数 ...

  3. TP框架---Model模型层---做模型对象

    TP框架----Model模型层---------------做模型对象 Model模型层是用来做什么的呢???? 主要是用来做操作数据库访问的. 也就说明TP框架自带了一种访问数据库的方式,使用的是 ...

  4. TP框架---thinkphp表单验证

    自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证.验证的代码要写在模型层即Model里面. 数据验证有两种方式: 静态方式:在模型类里面 ...

  5. Tp框架之模型层

    数据模型层是专门针对数据库来操作的 我们在home模块用一下数据模型层 先把配置修改好 我们先来打开这个文件 然后再打开think里面的主配置,把那里面关于数据库的部分,复制到home下的配置文件,然 ...

  6. TP框架---thinkphp使用ajax

    thinkphp使用ajax和之前使用ajax的方法一样,不同点在于之前的ajax中的url指向了一个页面,而thinkphp里面的url需要指向一个操作方法. 一.thinkphp使用ajax返回数 ...

  7. TP框架---thinkphp中ajax分页

    //点击类别后要显示的内容 public function pagechuli3()//这个方法的功能是根据ajax传过来的值查询数据,再将查询出来的数据返回到ajax,返回的默认是JSON类型. { ...

  8. TP框架---thinkphp修改删除数据

    1.在控制器MainController里面写一个方法,调用Nation表中的数据. public function zhuyemian() { $n = D("Nation"); ...

  9. TP框架---thinkphp查询和添加数据

    查询 <?php namespace Admin\Controller; use Think\Controller; class MainController extends Controlle ...

随机推荐

  1. JS中 this 的四种用法

    1.在一般函数中使用 this 指全局对象 window function fn(){ this.x = 1 } fn(); //相当于window.fn() 2.作为对象方法使用 this 指该对象 ...

  2. 创建一个vue-cli项

    一.vue cli脚手架 Vue 提供了一个官方的cli,为单页面应用 (SPA) 快速搭建繁杂的脚手架,通过这个工具我们就可以很方便的来创建一个基于vue的项目. 二.安装一些必要的东西node.n ...

  3. ELK最佳实践

    1.ELK最佳实践解析 a.用户通过nginx或haproxy访问ELK日志统计平台,IP地址为keepalived的vip地址; b.nginx将请求转发到kibana; c.kibana到es获取 ...

  4. 【转】彻底弄懂Java中的equals()方法以及与"=="的区别

    彻底弄懂Java中的equals()方法以及与"=="的区别 一.问题描述:今天在用Java实现需求的时候,发现equals()和“==”的功能傻傻分不清,导致结果产生巨大的偏差. ...

  5. 使用nginx实现的灰度发布思路研究(待实践)

    灰度发布也叫 A/B 测试,原理是一套系统在实现了负载均衡,全国节点都部署了系统之后,可以在新功能上线后,让一小部分用户先使用,从中收集使用信息来做对比和发现bug,及时调整,最终分发到全国的节点. ...

  6. 修改Tomcat服务中的端口配置

    1.修改Tomcat服务中的端口配置: 分别修改安装目录下的conf子目录中的server.xml文件(注意:两个文件中对应的端口号要不一样),修改如下 : a. 修改Shutdown端口(默认为80 ...

  7. struts2拦截器实现session超时返回登录页面(iframe下跳转到其父页面)

    需求:session超时时,返回登录页面,由于页面嵌套在iframe下,因此要跳转到登录页面的父页面,但是首页,登录页面等不需要进行跳转 实现: java文件:SessionIterceptor.ja ...

  8. kindeditor编辑器,获取textarea值

    在获取textarea值的时候,从数据库读出来的值都能获取到,但是新输入的值就得不到,只要是新输入的都得不到值 答案: 我昨天刚用kindeditor,我是使用ajaxForm提交表单的在360浏览器 ...

  9. GLSL逐像素光照 【转】

    转载:http://blog.csdn.net/hgl868/article/details/7872414 逐像素的方向光(Directional Light per Pixel) 这一节将把前面的 ...

  10. ios 之 autoresizing小解

    对于IOS的app开发人员来说,不会像Android开发人员一样为非常多的屏幕尺寸来做界面适配,因此硬编码的坐标也能工作良好,可是从设计模式上来说这不是好的做法. 并且也另一些问题,如iPhone5的 ...