TP 框架 常识
总结: TP框架常识和难点: 1.每个文件夹的作用【MVC】+config文件 是常用的
①应用程序目录【这个可以修改配置后直接运行配置文件系统自己生成(包括内部的文件)】
①控制器:(存放类文件)控制器的命名格式【控制器名字+Controller.class.php】②视图文件:内部由对应控制器的名字命名的文件夹 存放HTML文件【HTML代码的名字为格式:控制器中得方法名.HTML】③模块:【类文件夹】用于连接数据库,文件名字组成 【表名+Model.class.php】
2.文件的命名格式
3.修改配置文件
TP框架
TP 框架显示控制器错误 原因: 1.代码出错 2.名字格式错误 3. 修改下面--->页面属性-->标题/编码-->编码签名 到这里把选项取消掉就可以了
一:===========================================================
1.修改配置【入口文件】,运行入口文件【运行完后会自动创建指定的文件】,
2.TP 框架 内部的 初始的 文件夹名字 能不改就不该; 【应用程序目录和内部的home模块可以根据修改配置内容建立自己的新文件】
3. 文件名字格式 不能改【驼峰样式】
4.
再控制器文件下写 控制器【子类,子类里面加方法,这里命名格式要注意,1驼峰2.方法名+Controller.class.php】 控制器的名字 就是 View 下面文件夹的名字
控制器下面的方法【方法的名字首字母小写但是后面依然保持驼峰样式,方法名字就是 view 里面 HTML文件的名字】
贰: 引用类 【命名空间】
//放在同一个文件里面 $zhuyao = A("Main"); echo $zhuyao->zhuyao(); $zhuyao = new MainController(); echo $zhuyao->zhuyao(); //放在同一个 初始命名空间下面 $kua = A("Rhome/Main"); echo $kua->zhuyao(); $zhuyao = new \Rhome\Controller\MainController();//这里的地址注意一下命名空间 echo $zhuyao->zhuyao(); echo R("Rhome/Main/zhuyao"); echo R("Main/zhuyao"); ====================== 以上只可以调用放在同一个初始命名空间下的类 出下面的特殊 $zhuyao = new \Rhome\Controller\MainController();//这里的地址注意一下命名空间 echo $zhuyao->zhuyao(); 这个可以访问不同初始命名空间的类 根据 路径的不同找到文件
5. 访问的页面不存在的情况 在控制器里面设置一个空方法【系统默认调用该方法】
public function _empty()// 单下划线开头 { echo "页面不存在"; }
6.访问的控制器不存在的情况【重新设置一个空的控制器,命名要注意】
<?php namespace Home\Controller; use Think\Controller; class EmptyController extends Controller { public function _empty() { echo "你访问的控制器文件不存在"; } }
叁: 命名空间
命名空间 相当于虚拟目录 实现自动加载类的机制 初始命名空间:ThinkPHP和Library 初始命名空间下面有很多根命名空间: 1.Library里面的文件夹 2.APP的模块文件夹 在定义的时候: 从根写起,写到该文件所在的文件夹结束 用的时候: 从根开始写,写到类名结束 命名空间里面用反斜杠 new 的时候 要从初始命名空间开始的(\)见上面例子
肆:链接数据库
1.链接数据库首先要设置配置
/* 数据库设置 */ 'DB_TYPE' => '', // 数据库类型 'DB_HOST' => '', // 服务器地址 'DB_NAME' => '', // 数据库名 'DB_USER' => '', // 用户名 'DB_PWD' => '', // 密码 'DB_PORT' => '', // 端口 'DB_PREFIX' => '', // 数据库表前缀 'DB_PARAMS' => array(), // 数据库连接参数 'DB_DEBUG' => TRUE, // 数据库调试模式 开启后可以记录SQL日志 'DB_FIELDS_CACHE' => false, // 启用字段缓存
2.获取数据库的数据
$nh = new \Home\Model\activeModel();//这种方法太麻烦 只针对那种对数据进行修改时 使用 在Model模块下建立activeModel.class.php[表名+Model] //============================== $nh = D("score");//这种方法创建子类 返回一个对象【每个元素都进行介绍】 //M 方法是我们常用的 只需建立一个父类对象 进行简单的增删改操作 $nh = M('score'); //不需要建 Model类就可以直接定义//造父类对象 var_dump($nh->select()); // 返回二维数组可用
3.数据查询
$info = M("Info"); //var_dump($info); //查询数据(所有) //$arr = $info->select(); //查多条数据 //$arr = $info->select("p001,n011");//()内部是主键值,中间用逗号隔开 //查一条数据 //$arr = $info->find("p001"); //条件查询 //$arr = $info->where("code='p001'")->select(); //切换数据表 //$arr = $info->table("nation")->select(); //$arr = $info->table("nation")->where("code='n001'")->select(); //选择操作的字段,查询输出指定列的值 //$arr = $info->field("name,sex,birthday")->select(); //排序 //$arr = $info->order("code desc")->select(); //分页 //$arr = $info->limit("4,2")->select();//跳过4条数据输出两条数据 //$arr = $info->page("3,2")->select();//跳过3页输出两条数据,每页2条数据 //分组 //$arr = $info->table("car")->field("max(price)")->group("brand")->select(); //$arr = $info->table("car")->field("max(price)")->group("brand")->having("max(price)>60")->select(); //连接查询 //$arr = $info->field("info.code as '代号', info.name as '姓名',nation.name as '民族'")->join("nation on info.nation=nation.code")->select(); //去重 //$arr = $info->table("car")->distinct(true)->field("brand")->select(); var_dump($arr);
4.