thinkphp5.1基础:
我的环境是使用phpstudy搭建的,具体安装步骤在这里就不说了,可百度。
首先了解一下项目的目录:
application:项目目录
config:应用配置目录
extend:扩展类库目录
public:web目录(对外访问目录)
route:路由定义目录
runtime:应用的运行时目录(可写,可定制)
thinkphp:框架系统目录
vendor:第三方类库目录(Composer依赖库)
build.php:自动生成定义文件(参考)
composer.json:composer 定义文件
LICENSE.txt:授权说明文件
README.md:README 文件
think:命令行入口文件
ThinkPHP5.1在没有定义路由的情况下典型的URL访问规则是:
http://serverName/index.php(或者其它应用入口文件)/模块/控制器/操作/[参数名/参数值…]
为了更清晰的了解url路径的执行过程,自己创建一个url来进行测试:
1.在application目录下创建一个test目录
2.在test目录创建controller控制器目录
3.在controller下面创建一个Test.php,内容如下:
<?php
namespace app\test\controller;
class Test
{
public function say($who = 'aa'){
return $who.'hello,world';
}
}
如果使用的是phpstore会自动写入命名空间,别的我没试过。
在浏览器输入url测试:http://localhost/test/test/say
(localhost是自己定义好的根目录)
这里考虑的是多目录情况下可以使用的方法,对于单个模块和空模块这里就不说了可以去看一下官方文档。
控制器定义
- 控制器,即 controller,控制器文件存放在 controller 目录下;
- 类名和文件名大小写保持一致,并采用驼峰式(首字母大写);
- 继承控制器基类,可以更方便使用功能,但不是必须的;
- 系统也提供了其它方式,在不继承的情况下完成相同功能;
- 前面我们知道如果是一个单词,首字母大写,比如 class Index;
- URL 访问时直接 public/index 即可;
- 那么如果创建的是双字母组合,比如 class HelloWorld;
- URL 访问时必须为:public/hello_world;
- 如果你想原样的方式访问 URL,则需要关闭配置文件中自动转换; ‘url_convert’ => false,
- 此时,URL 访问可以为:public/HelloWorld;
- 如果你想改变根命名空间 app 为其它,可以在根目录下创建.env 文件;
- 然后写上配对的键值对即可,app_namespace=application;
- 渲染输出:
1.ThinkPHP 直接采用方法内 return 返回的方式直接就输出了;
2.使用 json 输出,直接采用 json 函数; d a t a = a r r a y ( ′ a ′ = > 1 , ′ b ′ = > 2 , ′ c ′ = > 3 ) ; r e t u r n j s o n ( data = array('a'=>1, 'b'=>2, 'c'=>3); return json( data=array(′a′=>1,′b′=>2,′c′=>3);returnjson(data);
3.使用 view 输出模版,开启错误提示,可知道如何创建模版; return view();
4.默认输出方式为 html 格式输出,如果返回的是数组,则会报错;
5.可以更改配置文件里的默认输出类型,更改为 json;
6.一般来说,正常页面都是 html 输出,用于模版,AJAX 默认为 json;
7.如果继承了基类控制器,那么可以定义控制器初始化方法:initialize()
8 initialize()方法会在调用控制器方法之前执行; `
protected function initialize()
{ //parent::initialize();
echo 'init';
}
9.initialize()方法不需要任何返回值,输出用 PHP 方式,return 无效;