ps:php快速框架
准备工作首先确认已搭建好php开发环境,刚入手可选择appserv 、phpStudy(快速环境搭建)。(也可选择自己可配置的单独安装方式)(不推荐)。
通过appserv方式一键安装好环境
安装完成之后通过localhost访问,此时就安装完成了。
那么此时怎么知道php的工作目录呢?如何访问项目中的php文件!
显然,我们要去apache的安装目录下去找,一般都在配置文件中,找到httpd.conf文件进行编辑搜索 < Directory > 标签
<Directory "D:/my_soft/AppServ/www">
即为php的工作目录,我们可以进行修改,重启apache即生效。
thinkphp5.0框架集成
git clone https://git.oschina.net/liu21st/thinkphp5.git
切换到刚刚下载的目录下下载framework
https://git.oschina.net/liu21st/framework.git
确认thinkphp在工作目录下,访问方式(访问之前修改public目录下index.php)
// 加载框架引导文件
require __DIR__ . '/../framework/start.php';//确认与目录结构相对应
访问地址
http://localhost/thinkphp5/public/
project 应用部署目录(来自thinkphp)
├─application 应用目录(可设置)
│ ├─common 公共模块目录(可更改)
│ ├─index 模块目录(可更改)
│ │ ├─config.php 模块配置文件
│ │ ├─common.php 模块函数文件
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录
│ │ ├─view 视图目录
│ │ └─ … 更多类库目录
│ ├─command.php 命令行工具配置文件
│ ├─common.php 应用公共(函数)文件
│ ├─config.php 应用(公共)配置文件
│ ├─database.php 数据库配置文件
│ ├─tags.php 应用行为扩展定义文件
│ └─route.php 路由配置文件
├─extend 扩展类库目录(可定义)
├─public WEB 部署目录(对外访问目录)
│ ├─static 静态资源存放目录(css,js,image)
│ ├─index.php 应用入口文件
│ ├─router.php 快速测试文件
│ └─.htaccess 用于 apache 的重写
├─runtime 应用的运行时目录(可写,可设置)
├─vendor 第三方类库目录(Composer)
├─thinkphp 框架系统目录
│ ├─lang 语言包目录
│ ├─library 框架核心类库目录
│ │ ├─think Think 类库包目录
│ │ └─traits 系统 Traits 目录
│ ├─tpl 系统模板目录
│ ├─.htaccess 用于 apache 的重写
│ ├─.travis.yml CI 定义文件
│ ├─base.php 基础定义文件
│ ├─composer.json composer 定义文件
│ ├─console.php 控制台入口文件
│ ├─convention.php 惯例配置文件
│ ├─helper.php 助手函数文件(可选)
│ ├─LICENSE.txt 授权说明文件
│ ├─phpunit.xml 单元测试配置文件
│ ├─README.md README 文件
│ └─start.php 框架引导文件
├─build.php 自动生成定义文件(参考)
├─composer.json composer 定义文件
├─LICENSE.txt 授权说明文件
├─README.md README 文件
├─think 命令行入口文件
将下载的thinkphp拷贝到项目目录下即可。最终的项目结构为
namespace my;//命名空间
class Test{
public function sayBay(){
echo "bay";
}
}
?>
在公共文件中手动注册
application--common.php //添加注册内容
\think\Loader::addNamespace([
'my' => '../application/extend/my/',
]);
应用配置文件中修改
application--config.php //注册
//注册命名空间
'root_namespace'=>[
'my'=>'../application/extend/my/',
],
5.4php版本需要依赖系统助手函数来导入
load_trait('controller/Jump');
5.4版本以上
省略load_trait
use \traits\controller\Jump;//使用
先修改默认输出类型在 config.php
// 默认输出类型
'default_return_type' => 'json',
编写一个简单的函数
public function index()
{
$data=['id'=>01,'name'=>"你好"];
return ['data'=>$data];
}
config.php中添加:
//独立配置数据库
'extra_config_list' => ['database'],
database.php文件配置:
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => '127.0.0.1',
// 数据库名
'database' => 'uzer',
// 用户名
'username' => 'root',
// 密码
'password' => 'root',
共有模式:普通模式、混合模式、强制模式。
// 是否开启路由
'url_route_on' => true,
// 是否强制使用路由
'url_route_must' => true,
路由定义在route.php中定义:
动态注册
Route::rule('路由表达式','路由地址','请求类型','路由参数(数组)','变量规则(数组)');
use think\Route;
// 注册路由到index模块的Index控制器的index操作(方法)
Route::rule('new/:id','index/Index/index');//路由表达式为空可通过之前的地址访问
批量路由注册:(只有一个模块可以省略模块名)
Route::rule(['new/:id'=>'Index/index',
' '=>'User/sayHello',
···
]);
不为空的访问方式:
http://localhost/phpDemo/public/new/3
空的访问方式为
http://localhost/phpDemo/public
配置定义
'new/:id'=>'Index/index',
':name' =>['User/sayHello',['name'=>'']],
取消public
访问带着public看着很别扭,那么怎样进行修改呢!?
通过nginx代理转发解决
修改nginx的conf--nginx.conf文件
location /phpDemo {
proxy_pass http://localhost/phpDemo/public;
}
将nginx的端口设置成80,apache的端口设置成其它端口
现在通过 http://localhost/phpDemo/ 访问项目
public function login(){
$user_name=isset($_GET["username"])?$_GET["username"]:'';//检测参数是否为空
$pwd=isset($_GET["password"])?$_GET["password"]:'';
if ($user_name!=null && $pwd!=null){
$data=['name'=>$user_name,'password'=>$pwd];
return ['data'=>$data,'code'=>200];
}else{
$data=['result'=>"用户名密码不能为空"];
return ['data'=>$data,'code'=>203];
}
}
首先先了解几个函数
var_dump();//打印出当前类型
print_r();//直接打印易理解的信息
echo()//在数据库查询没有进行编码之前不能用echo进行显示.
之前数据库连接已在conf中配置完成了,这里直接进行数据库的操作,采用不建模型的方式
public function select(){
$res=Db::query('select * from uzer');
$arr=json_encode($res);//转换成json字符串
return ($arr);//返回json对象
}
助手函数查询
5.0.9版本之前db助手函数会每次重新连接不是通过单例来获取
$res=db('uzer')->where('id',1)->find()[select()];
public function add(){
$user_name=isset($_GET["username"])?$_GET["username"]:null;
$pwd=isset($_GET["password"])?$_GET["password"]:null;
$data=["name"=>$user_name,"password"=>$pwd];
$sum=Db::table('uzer')->insert($data);
}
Db::table('think_user')->where('id','<',10)->delete();
助手函数
db('uzer')->where('id',1)->delete();
$resCount=Db::table('uzer')->where('id',2)->setField('name',"神仙");//更新name字段
数据中包含主键
$resCount=Db::table('uzer')->update(['name'=>"神仙",'id'=>1]);
助手函数
$resCount=db('uzer')->where('id',2)->update(['name'=>'think']);
关于模型的查询操作,参考文档即可……
现在可以愉快的进行业务逻辑的编写了!