总结: 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.