url命令 是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。作为一款强力工具,curl支持包括HTTP、HTTPS、 ftp 等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。做网页处理流程和数据检索自动化,curl可以祝一臂之力。
实验楼下载地址: http://labfile.oss.aliyuncs.com/courses/352/ThinkPHP.zip
下载方式:wget  http://labfile.oss.aliyuncs.com/courses/352/ThinkPHP.zip
下载ThinkPHP:
进入目录:unzip ThinkPHP.zip,里面包含了ThinkPHP相关的程序文件以及创建数据表需要的sql文件;
可以去官网下载,或者去git地址下载,然后直接解压
使用composer create-project topthink/thinkphp your-project-name安装
数据库操作:
启动msql服务:sudo service mysql start
登录mysql:mysql -u root
创建数据库:create database think
切换数据库:use think
导入数据:source I:\php_project\ThinkPHP\think.sql
退出数据库:quit/ctrl+d
操作:
thinkPHP框架的所有所有配置文件的定义格式都是返回PHP数组的方式来定义的
return array (
//' 配置项 '=>' 配置值 '
) ;
常用的应用配置:默认在application/common/conf/config.php
配置参数(一级参数)是不区分大小写,因为最后都会转为小写,但是为了规范,建议统一使用大写设置参数,二级配置是区分大小写的,也都是在上述目录配置
配置加载顺序:后加载的会覆盖前面加载的顺序,而生效的只有后加载的顺序文件;
thinkPHP配置加载顺序 : 惯例配置->应用配置->模式配置->调试配置->状态配置->模块配置->扩展配置->动态配置,这些配置都是自动加载,常用的是应用配置,默认就在application/common/conf/config.php文件中,如果不熟悉配置,打开thinkPHP/Conf/convent.php文件查看对应配置项
读取配置项:统一使用C(‘配置参数名’)来读取配置
ThinkPHP路由:
给你一个自定义URL的功能: http://localhost:8999/Home/index/read/id/3
PHP内置服务器启动: php -S localhost:8999,访问 http://localhost:8999/,出现欢迎界面;分析:访问到底额是thinkPHP自带的默认入口文件index.php,也就是IndexController的index方法,这是因为thinkPHP默认设置: 'DEFAULT_CONTROLLER' => 'Index' , // 默认控制器名称
控制器文件位于Application/Home/Controller
使用路由之前,确保URL支持PATH_INFO(普通模式不支持路由功能)和URL_ROUTE_ON=true(要开启),这些在thinkPHP/Conf/convention.php可以找到,满足后就可以配置路由规则了,在配置文件中使用URL_ROUTE_RULES参数配置,格式为数组,格式为:‘路由表达式’=> '路由地址和传入参数',每个元素都代表一个路由规则
URL_ROUTE_RULES:按照配置顺序依次匹配,一旦匹配到就会定位到路由定义的控制器和方法中去执行,而后面的规则不会匹配,:后面跟参数名称,
\d:限制变量是数字
[]:可选参数,可以传也可以不传
URL_MAP_RULES:静态路由,不包含动态参数,不需要遍历路由规则而是直接定位,采用这个定义,同时是完整匹配的原则
ThinkPHP控制器:
控制器文件命名遵守IndexController.class.php方式
控制器定义:
1.使用相同的命名空间,默认为namespace Home\Controller
2.加载Think\Controller
3.新建控制器继承与Controller(或者子类)
4.采用驼峰命名法,注意首字母大写
前置和后置操作:执行某个操作之前和之后自动调用的方法,仅对控制器有效,但是如果当前操作没有定义操作方法,而是直接渲染模板文件,前置和后置都会生效,真正有模板输出的只是当前操作,前置后置不会有任何输出;如果有些方法使用了exit或者错误输出之类的,可能不会执行后置方法;
参数绑定( URL_PARAMS_BIND):直接绑定URL地址的变量作为操作方法参数,简化方法定义和路由解析,原理为将URL中参数和操作方法参数进行绑定,按照变量名绑定,变量顺序绑定,默认变量名绑定;
伪静态 'URL_HTML_SUFFIX' 
URL生成:U方法,url动态生成,定义规则如下:U(‘姿势表达式’,[参数],[伪静态后缀],[显示域名]),[模块/控制器/操作#锚点@域名]?参数1=值1&参数2=值2...,如果不定义模块,就表示当前模块,例子:U('Admin/User/select)//生成Admin模块的User控制器的select操作的url地址,第二个参数支持数组和字符串,例子:U('Article/cate', array('cate_id'=>1, 'statu'=>1)) = U('Article/cate', 'cate_id=1,&statu=1') = U('Article/cate?cate_id=1,&statu=1')
跳转:Think/Controller类内置了(success,默认等1s和error默认等3s)方法,用于页面跳转,第一个参数提示信息,第二个参数为跳转地址;
重定向:redirect实现页面的重定向,改变当前URL地址,重定向到某个模块的操作方法
ThinkPHP模型:
位于Home/Model/目录,通常要继承系统\Think\Model类或子类
和控制器命名规范一样;
作用是操作数据表的,多数情况是可以自动对应数据表的,可以根据自己需求定制数据表设置和操作;
tablePrifix:数据表前缀可以灵活配置你的数据表;如果数据库中有一个没有表前缀的,可以直接定义前缀为空,然后ThinkPHP就会定位到这个表
ThinkPHP实现了ActiveRecords模式的ORM模型,表映射到类,记录映射到对象
自动完成:是ThinkPHP用来完成数据自动处理和过滤的方法,使用create方法创建数据对象会触发自动完成数机制;用来完成默认字段写入,安全字段过滤,业务逻辑自动处理等,通过$_auto属性定义处理规则;还有一种是auto()方法自动设置完成机制;
自动验证:使用create()创建数据对象时候进行自动数据验证,包括数据类型,业务规则,安全判断等;通常用于表单验证,
验证方式:静态(模型里面使用$_validate属性定义验证规则),动态(使用模型类validate方法动态创建验证规则),规则定义格式如下:array(array(验证字段1,验证类型,错误提示,[验证条件,附加规则,验证时间]))
www WEB部署目录(或者子目录)
├─index .php 入口文件
├─README .md README文件
├─Application 应用目录
├─Public 资源文件目录
└─ThinkPHP 框架目录
其中框架目录ThinkPHP的结构如下:
├─ThinkPHP 框架系统目录(可以部署在非web目录下面)
│ ├─Common 核心公共函数目录
│ ├─Conf 核心配置目录
│ ├─Lang 核心语言包目录
│ ├─Library 框架类库目录
│ │ ├─Think 核心Think类库包目录
│ │ ├─Behavior 行为类库目录
│ │ ├─Org Org类库包目录
│ │ ├─Vendor 第三方类库目录
│ │ ├─ ... 更多类库目录
│ ├─Mode 框架应用模式目录
│ ├─Tpl 系统模板目录
│ ├─LICENSE .txt 框架授权协议文件
│ ├─logo .png 框架LOGO文件
│ ├─README .txt 框架README文件
│ └─ThinkPHP .php 框架入口文件
入口文件主要完成:
  • 定义框架路径、项目路径(可选)
  • 定义调试模式和应用模式(可选)
  • 定义系统相关常量(可选)
  • 载入框架入口文件(必须)
注意:APP_PATH的定义支持相对路径和绝对路径,但必须以“/”结束
接下来再看原来空的 Application 目录下面,已经自动生成了公共模块 Common 、默认的 Home 模块和 Runtime 运行时目录的目录结构:
Application
├─ Common 应用公共模块
│ ├─ Common 应用公共函数目录
│ └─Conf 应用公共配置文件目录
├─Home 默认生成的Home模块
│ ├─Conf 模块配置文件目录
│ ├─ Common 模块函数公共目录
│ ├─Controller 模块控制器目录
│ ├─Model 模块模型目录
│ └─View 模块视图文件目录
├─Runtime 运行时目录
│ ├─Cache 模版缓存目录
│ ├─ Data 数据目录
│ ├─Logs 日志目录
│ └─Temp 缓存目录
在各个目录下面我们还看到了index.html文件,这是ThinkPHP自动生成的目录安全文件
Application 默认应用目录(可以设置)
├─ Common 公共模块(不能直接访问)
├─Home 前台模块
├─Admin 后台模块
├─... 其他更多模块
├─Runtime 默认运行时目录(可以设置)
每个模块是相对独立的,其目录结构如下:
├─ Module 模块目录
│ ├─Conf 配置文件目录
│ ├─ Common 公共函数目录
│ ├─Controller 控制器目录
│ ├─Model 模型目录
│ ├─Logic 逻辑目录(可选)
│ ├─Service Service目录(可选)
│ ... 更多分层目录可选
│ └─View 视图目录
控制器类的命名方式是: 控制器名(驼峰法,首字母大写)+Controller
控制器文件的命名方式是: 类名+class.php(类文件后缀)
表示当前类是Home模块下的控制器类,命名空间和实际的控制器文件所在的路径是一致的,也就是说:   Home\Controller\IndexController 类 对应的控制器文件位于应用目录下面的   Home/Controller/IndexController.class.php ,如果你改变了当前的模块名,那么这个控制器类的命名空间也需要随之修改
注意:命名空间定义必须写在所有的PHP代码之前声明,而且之前不能有任何输出,否则会出错

命名规范

使用ThinkPHP开发的过程中应该尽量遵循下列命名规范:
  • 类文件都是以.class.php为后缀(这里是指的ThinkPHP内部使用的类库文件,不代表外部加载的类库文件),使用驼峰法命名,并且首字母大写,例如  DbMysql.class.php
  • 类的命名空间地址和所在的路径地址一致,例如  Home\Controller\UserController 类所在的路径应该是  Application/Home/Controller/UserController.class.php
  • 确保文件的命名和调用大小写一致,是由于在类Unix系统上面,对大小写是敏感的(而ThinkPHP在调试模式下面,即使在Windows平台也会严格检查大小写);
  • 类名和文件名一致(包括上面说的大小写一致),例如  UserController 类的文件命名是 UserController.class.php , InfoModel类的文件名是 InfoModel.class.php , 并且不同的类库的类命名有一定的规范;
  • 函数、配置文件等其他类库文件之外的一般是以 .php 为后缀(第三方引入的不做要求);
  • 函数的命名使用小写字母和下划线的方式,例如  get_client_ip
  • 方法的命名使用驼峰法,并且首字母小写或者使用下划线“_”,例如  getUserName _parseType ,通常下划线开头的方法属于私有方法;
  • 属性的命名使用驼峰法,并且首字母小写或者使用下划线“_”,例如  tableName _instance ,通常下划线开头的属性属于私有属性;
  • 以双下划线“__”打头的函数或方法作为魔法方法,例如  __call  和  __autoload
  • 常量以大写字母和下划线命名,例如  HAS_ONE 和  MANY_TO_MANY
  • 配置参数以大写字母和下划线命名,例如 HTML_CACHE_ON
  • 语言变量以大写字母和下划线命名,例如 MY_LANG ,以下划线打头的语言变量通常用于系统语言变量,例如  _CLASS_NOT_EXIST_
  • 对变量的命名没有强制的规范,可以根据团队规范来进行;
  • ThinkPHP的模板文件默认是以 .html  为后缀(可以通过配置修改);
  • 数据表和字段采用小写加下划线方式命名,并注意字段名不要以下划线开头,例如  think_user  表和  user_name 字段是正确写法,类似  _username  这样的数据表字段可能会被过滤。
特例:在ThinkPHP里面,有一个函数命名的特例,就是单字母大写函数,这类函数通常是某些操作的快捷定义,或者有特殊的作用。例如:A、D、S、L 方法等等,他们有着特殊的含义,后面会有所了解。
由于ThinkPHP默认全部使用UTF-8编码,所以请确保你的程序文件采用UTF-8编码格式保存,并且去掉BOM信息头(去掉BOM头信息有很多方式,不同的编辑器都有设置方法,也可以用工具进行统一检测和处理),否则可能导致很多意想不到的问题。

开发建议

在使用ThinkPHP进行开发的过程中,我们给出如下建议,会让你的开发变得更轻松:
  • 遵循框架的命名规范和目录规范;
  • 开发过程中尽量开启调试模式,及早发现问题;
  • 多看看日志文件,查找隐患问题;
  • 养成使用I函数获取输入变量的好习惯;
  • 更新或者环境改变后遇到问题首要问题是清空Runtime目录;
建议保持大写定义配置参数的规范
需要注意的是,二级参数配置区分大小写,也就说读取确保和定义一致
在ThinkPHP中,一般来说应用的配置文件是自动加载的,加载的顺序是:

惯例配置->应用配置->模式配置->调试配置->状态配置->模块配置->扩展配置->动态配置

应用配置文件也就是调用所有模块之前都会首先加载的公共配置文件(默认位于 Application/Common/Conf/config.php )。
如果更改了公共模块的名称的话,公共配置文件的位置也相应改变
http://serverName/index.php(或者其他应用入口文件)/模块/控制器/操作/ [ 参数名/参数值... ]
ThinkPHP的应用可以支持切换到命令行访问,如果切换到命令行模式下面的访问规则是:
>php.exe index.php(或其它应用入口文件) 模块 /控制器/ 操作 /[参数名/ 参数值...]
名称
描述
应用
基于同一个入口文件访问的项目我们称之为一个应用。
模块
一个应用下面可以包含多个模块,每个模块在应用目录下面都是一个独立的子目录。
控制器
每个模块可以包含多个控制器,一个控制器通常体现为一个控制器类。
操作
每个控制器类可以包含多个操作方法,也可能是绑定的某个操作类,每个操作是URL访问的最小单元。
Common模块是一个特殊的模块,是应用的公共模块,访问所有的模块之前都会首先加载公共模块下面的配置文件( Conf/config.php )和公共函数文件( Common/function.php )。但 Common模块本身不能通过URL直接访问 ,公共模块的其他文件则可以被其他模块继承或者调用。

PHP:ThinkPHP相关推荐

  1. php+jquery实现图片上传预览_和拖动位置值,PHP教程:thinkphp jquery实现图片上传和预览效果...

    <PHP教程:thinkphp jquery实现图片上传和预览效果>要点: 本文介绍了PHP教程:thinkphp jquery实现图片上传和预览效果,希望对您有用.如果有疑问,可以联系我 ...

  2. php中msubstr,PHP学习:thinkphp中字符截取函数msubstr()用法分析

    <PHP学习:thinkphp中字符截取函数msubstr()用法分析>要点: 本文介绍了PHP学习:thinkphp中字符截取函数msubstr()用法分析,希望对您有用.如果有疑问,可 ...

  3. PHP三级联动视频教程,PHP教程:thinkPHP实现的省市区三级联动功能示例

    <PHP教程:thinkPHP实现的省市区三级联动功能示例>要点: 本文介绍了PHP教程:thinkPHP实现的省市区三级联动功能示例,希望对您有用.如果有疑问,可以联系我们. 本文实例讲 ...

  4. 渗透测试之路:ThinkPHP漏洞复现

    1)简介 ThinkPHP是一个免费开源的,快速的,简单的面向对象的国产轻量级PHP开发框架. ThinkPHP遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业级应用开而诞生的,具有 ...

  5. PHP:ThinkPHP使用PHPMailer发送html邮件

    文档 https://github.com/PHPMailer/PHPMailer 安装 composer require phpmailer/phpmailer 代码示例 配置文件 config/m ...

  6. php lts版本,官宣:ThinkPHP发布首个LTS版本

    ### 2018 年 10 月 22 日 发布 `5.1`版本自2018年元旦正式发布以来,在团队和社区的共同努力下,经过近十个月的迭代更新,共计发布了26个版本(更新记录[查看这里](https:/ ...

  7. PHP开发环境配置:ThinkPHP与IDE

    集成环境采用XAMPP 目录 ThinkPHP 配置 PHP IDE 选择 ThinkPHP 配置时遇到的问题及解决 ThinkPHP 配置 一开始参考的是 XAMPP和ThinkPHP 5.0的安装 ...

  8. 勿喷:thinkphp项目怎么跑起来

    只是记录自己的囧事,路过的家人们别喷. 一个新开的小公司用什么框架,往往取决于招到的第一批程序员. 3年前公司官网用的thinkphp,现在用的java,因为语言不一样,现任后台并不愿意动前任后台的代 ...

  9. 12月5日:thinkphp模板

    今天学习ThinkPHP中的模板部分内容 接口开发,看不到dom结构,页面信息都是通过js或者一些其他技术引入 模板:是用来渲染前端页面,在后端的api接口开发中并不会常用到模板,但是后台管理页面却会 ...

最新文章

  1. 国产GPU为何“一夜杀到老黄城下”?
  2. XCode4.3.3 + iOS5.1 无证书开发并生成app、ipa文件
  3. MPMoviePlayerController 电影播放器
  4. JQuery选中的对象和非选中的其他对象分别执行不同动作
  5. vc 代码检查工具_C++网络安全入侵检测技术模块及源程序代码
  6. android定位会出现的问题,Android 定位当前位置可能出现的问题
  7. git菜单形式的_Idea:Git的常用菜单操作和常用命令
  8. Java学习-Overload和Override的区别
  9. 2.1 LibCurl编程流程(转)
  10. 51. Element replaceChild() 方法
  11. 树莓派modelB无法识别exFat格式的SD卡
  12. Ae/Pr数字转胶片调色插件 FilmConvert Pro for Mac v2.40破解版
  13. 无线网络dns服务器是多少,中国移动宽带dns是多少?
  14. Oracle定时任务DBMS_JOB
  15. How to compile a node file?如何编译一个节点文件?
  16. 从一坨「便便」说起,大V亲测iPhone X为什么这么贵!
  17. 怎么用wifi进e站_科普微e站 | 注意!路由器千万别再这样用,当心信号越来越差!...
  18. 支付宝架构有多牛?还没看完我就跪了...
  19. java获取当天星期几
  20. 学校运动会广播稿计算机,学校运动会广播稿

热门文章

  1. [转]网易云音乐API分析
  2. Matlab+Robotic toolbox (各版本免费获取,及安装步骤)
  3. 程序员最值得听的歌曲TOP10
  4. 三菱系统四轴正反转参数_三菱第四轴参数.docx
  5. 为什么要选择网络公关公司压制负面影响,维护好品牌?
  6. omniplan导出html,OmniPlan Pro 3.10.4 最NB的项目管理流程软件
  7. java.sql.SQLSyntaxErrorException Unknown column····
  8. The security strength of SHA-1 digest algorithm is not sufficient for this key size
  9. Oracle将小数转换为百分数;及将小于1的数字to_char()转成字符串后,个位0丢失的解决办法
  10. 利用友元函数与友元类定义复数类,实现基本运算