如何看网站是否优化,介绍美食的网站模板免费下载,上传网站中ftp地址写什么,网络销售工作怎么样TP框架主要是通过URL实现操作
http://servername/index.php/模块/控制器/操作/参数/值..
index.php 为入口文件#xff0c;在 public 目录内的 index.php 文件; 模块在 application 目录下默认有一个 index 目录#xff0c;这就是一个模块; 而在 index 目录下有一个 contro…TP框架主要是通过URL实现操作
http://servername/index.php/模块/控制器/操作/参数/值..
index.php 为入口文件在 public 目录内的 index.php 文件; 模块在 application 目录下默认有一个 index 目录这就是一个模块; 而在 index 目录下有一个 controller 控制器目录的 Index.php 控制器; Index.php 控制器的类名也必须是 class Index否则错误: 而操作就是控制器 class Index 里面的方法比如: index 或 hello; 那么完整形式为: public/index.php/index/index/index 晕了吗? 官方给的默认模块默认控制器默认操作都是 index
环境变量 ThinkPHP5.1 提供了一个类库 Env 来获取环境变量: return Env::get(app_path); 系统路径 Env 参数名称 应用根目录 root_path 应用目录 app_path 框架目录 think_path 配置目录 config_path 扩展目录 extend_path composer 目录 vendor_path 运行缓存目录 runtime_path 路由目录 route_path 当前模块目录 moudle_path 控制器
定义控制器即 controller控制器文件存放在 controller 目录下; 类名和文件名大小写保持一致并采用驼峰式首字母大写) ;
use think Controller;
class Index extends Controller
继承控制器基类可以更方便使用功能但不是必须的: 系统也提供了其它方式在不继承的情况下完成相同功能; 前面我们知道如果是一个单词首字母大写比如 class Index; URL 访问时直接 public/index 即可;那么如果创建的是双字母组合比如 class Helloworld; URL 访问时必须为: public/hello_world; 如果你想原样的方式访问 URL则需要关闭配置文件中自动转换: url convert false, 此时URL 访问可以为: public/Helloworld; 如果你想改变根命名空间 app 为其它可以在根目录下创建.env 文 然后写上配对的键值对即可app_namespaceapplication;
渲染输出
?php
namespace app\index\controller;
use think\facade\Env;class HelloWorld{public function test1(){return view();}
}
配置在模块目录下controller同级目录创建view目录在该目录下创建相同控制器名的文件夹在控制器文件夹里创建 方法名.html 一 般来说正常页面都是 html 输出用于模版AJAX 默认为 json; 如果继承了基类控制器那么可以定义控制器初始化方法: initialize(); initialize()方法会在调用控制器方法之前执行:且不能用return返回否则无效果
protected function initialize(){
//parent::initialize();
echo init;
} 前置操作
1. 继承 Controller 类后可以设置一个$beforeActionList 属性来创建前置方注
use think\Controller;
class Before extends Controller
{protected $beforeActionList[first,second[exceptone],third[onlyone]];protected function first(){echo first;}protected function second(){echo second;}protected function third(){echo third;}public function index(){if ($this-flag){$this-success(注册成功,../);}else{$this-error(失败);return index;}}
public function one(){return one;
}
public function two(){return two;
}
public function three(){return three;
}
}
此时我们可以分别 URL 访问不同的方法来理解前置的触发执行;
跳转和重定向
Controller 类提供了两个跳转的方法success(msg,ur)和 error(msg) protected $flag false;public function index(){if ($this-flag){$this-success(注册成功,../);}else{$this-error(失败);return index;}}
成功或错误有一个固定的页面模版:thinkphp/tpl/dispatch jump 在 app.php 配置文件中我们可以更改自己个性化的跳转页面; //默认跳转页面对应的模板文件 dispatch success tmpl Env::get(think path)
Controller类提供了 _empty()方法用于对应不存在的方法访问
public function _empty($name){return 不存在方法.$name;}
控制器不存在的对应
?php
namespace app\index\controller;
use think\Request;
class Error{public function index(Request $r){return 不存在.$r-controller();}
}?
模型定义
1. 在 MVC 中,我们已经使用过 Controller(c),View(V),剩下一个就是 Model(M); Mode1 即模型就是处理和配置数据库的相关信息; 2 .在项目应用根目录创建 model 文件夹并且创建 User.php;
数据库查询链式查询
查询规则 1。 前面课程中我们通过指向符号“-”多次连续调用方法称为: 链式查询: 当 Db::name(user)时返回数据库对象即可连缀数据库对应的方法: 2 .而每次执行一个数据库查询方法时比如 where()还将返回数据库对象; 3 .只要还是数据库对象那么就可以一直使用指向符号进行链式查询:如果想要最后得到结果可以使用 find()、select()等方法结束查询; 而 find()和 select()是结果查询方法(放在最后) 并不是链式查询方法; Db::name( user)-where( id27)-order( iddesc)-find() 除了查询方法可以使用链式连贯操作CURD 操作也可以使用 (下节课研究) :
?php
namespace app\index\controller;
use think\Controller;
use think\Db;
use app\index\model\Info;
class DataTest extends Controller{public function t(){#SELECT * FROM info LIMIT 1$data Db::table(info)-find();return Db::getLastSql();}public function t0(){#SELECT * FROM info$data Db::table(info)-select();return Db::getLastSql();}public function t1(){#SELECT * FROM info WHERE name admin LIMIT 1$data Db::table(info)-where(name,admin)-find();return Db::getLastSql();}public function t2(){#SELECT name FROM info LIMIT 1$data db(info)-value(name);echo $data;return Db::getLastSql();}public function t3(){#SELECT name FROM info$data db(info)-column(name,id);return json($data);}public function getModelData(){$dataInfo ::select();#return json($data);}
}?