ThinkPHP学习记录Word文件下载.docx
- 文档编号:19077808
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:34
- 大小:136.60KB
ThinkPHP学习记录Word文件下载.docx
《ThinkPHP学习记录Word文件下载.docx》由会员分享,可在线阅读,更多相关《ThinkPHP学习记录Word文件下载.docx(34页珍藏版)》请在冰豆网上搜索。
配置参数以大写字母和下划线命名,例如HTML_CACHE_ON;
语言变量以大写字母和下划线命名,例如MY_LANG,以下划线打头的语言变量通常用于系统语言变量,例
如_CLASS_NOT_EXIST_;
对变量的命名没有强制的规范,可以根据团队规范来进行;
ThinkPHP的模板文件默认是以.html为后缀(可以通过配置修改);
数据表和字段采用小写加下划线方式命名,并注意字段名不要以下划线开头,例如think_user
表和user_name字段,类似_username返样的数据表字段可能会被过滤。
另外有一点非常关键,ThinkPHP默认全部使用UTF-8编码,所以请确保你的程序文件采用UTF-8编码格式
保存,并且去掉BOM信息头,否则可能导致许多意想不到的问题。
ThinkPHP单一入口文件:
<
?
php
define('
APP_NAME'
'
App'
);
APP_PATH'
/App/'
APP_DEBUG'
true);
require'
../ThinkPHP/ThinkPHP.php'
;
>
APP_NAME是指项目名称,不可随意设置,通常是项目的目录名称,如果直接部署在Web根目录下面,那需
要设置APP_NAME为空。
APP_PATH是指项目路径(必须以“/”结束),项目路径是指项目的Common、Lib目录所在的位置,而不
是项目入口文件所在的位置。
(在类Unix戒者Linux环境下面Runtime目录需要可写权限。
)
项目发布:
ThinkPHP系统目录
App项目目录
Public网站公共目录
Uploads网站上传目录
index.php网站的入口文件
项目的模板文件这是放到项目的Tpl目录下面,叧是将外部调用的资源文件,包括图片JS和CSS
统一放到网站的公共目录Public下面,分Images、Js和Css子目录存放,如果有可能的话,甚至也可
以把返些资源文件单独放一个外部的服务器远程调用,并进行优化。
事实上,系统目录和项目目录可以放到非WEB访问目录下面,网站目录下面叧需要放置Public公
共目录和入口文件,仍而提高网站的安全性。
虽然编译缓存很优秀,但是并不利于开发阶段中调试和排错,所以开发阶段始终应开启调试模式,方便及
及时发现隐患问题和分析、解决问题。
惯例配置---项目配置---调试配置---分组配置---扩展配置---动态配置
以上是配置文件的加载顺序,因为后面的配置会覆盖之前的同名配置(在没有生效的前提下),所
以优先顺序仍右到左。
系统的配置参数是通过静态变量全局存取得,存取方式简单高效。
配置参数不区分大小写(因为无论大小写定义都会转换成小写)。
系统内置有一个惯例配置文件(位亍系统目录下面的Conf\convention.php);
项目配置文件位于项目Conf\config.php
一、ThinkPHP的URL重写。
1、默认是智能模式,即pathinfo模式http:
//localhost/入口文件/控制器/方法/username=lin&
userpwd=123456(它的GET传值与普通模式一样的。
2、可以在配置文件中修改(Conf/config.php),'
URL_PATHINFO_MODEL'
=>
2,即为URL智能模式;
修改后一般需要删除~runtime.php和~app.php两个文件。
3、'
URL_PATHINFO_DEPR'
'
-'
即可以把URL分割符改为'
;
true,开启模式,将对大小写敏感,方便将项目布署到linux主机上。
二、控制器内容如何用指定模板来解析。
1、在控制器中用$this->
display();
即可调用默认的模板(即控制器名的文件夹下的方法名.html文件,例如User控制器
下的Add方法,默认模板就是Tpl/User/Add.html)
2、在控制器中用$this->
assign('
变量'
值'
);
的方式指定要在模板中显示的变量信息。
如:
$this->
assign
('
myname'
我的名字是李斯特'
如果是需要调用方法名以外的模板文件,可以在$this->
display('
newtpl'
中指定,注意不要加.html。
如果调用的模板不在当前控制器目录下,则可以用$this->
Index:
即制作器名:
模板名,即可。
如果需要跨皮肤,即不调用当前default下的模板,可以用$this->
skin@Index:
即“皮肤名@控制
器名:
模板名”
如果需要按照一定的顺序找到其它的模板文件,可以写全路径,如:
D:
\APMServ5.2.6
\www\htdocs\videodemo\Public\ss.html'
也可以写与入口文件相对的相对路径,如$this->
./Public/ss.html'
即可调用项目文件夹下的
Public/ss.html文件合为本方法的模板。
另外,在$this->
中还可以有两个参数:
指定模板位置'
编码'
文件类型'
例如:
index'
utf-8'
text/xml'
可以输出到xml的模板。
3、在模板的html文件中用定界符{$myname}即可调用变量。
其中的定界符可以在配置文件中修改(因为它和javascript中
的函数花括号冲突),具体为:
TMPL_L_DELIM'
{'
'
TMPL_R_DELIM'
}>
两个配置项。
ThinkPHP系统定义常量:
1、示例程序地址:
http:
//localhost/tptest/index.php/user/sysarr
即执行tptest目录下的home应用项目,中的User控制器下的sysarr方法。
__ROOT__
网站根目录
/tptest
__APP__
项目入口文件地址
/tptest/index.php
__URL__
当前控制器
/tptest/index.php/user
__ACTION__
当前操作
/tptest/index.php/user/sysarr
__SELF__
当前URL
/tptest/index.php/user/sysarr
__CURRENT__
当前模块(控制器)的模版目录
/tptest/home/Tpl/default/user
ACTION_NAME
当前操作名称
sysarr
APP_PATH
当前项目的目录
./home/
APP_NAME
当前项目名称
home
APP_TMPL_PATH
当前项目的默认模版目录
/tptest/home/Tpl/default/
APP_PUBLIC_PATH
当前项目公共文件目录
/tptest/home/Tpl/default/Public
CACHE_PATH
当前项目模版缓存目录
./home//Runtime/Cache/
CONFIG_PATH
项目的配置文件地址
./home//Conf/
DATA_PATH
项目的数据文件地址
./home//Runtime/Data/
COMMON_PATH
项目的公共文件地址
./home//Common/
WEB_PUBLIC_PATH
整个网站的公共文件目录
/tptest/Public
在代码段中用./Public即相对于主入口文件的地址。
其他可参考手册。
2、模板替换:
以上这些常量都可以在模板中进行直接替换。
注意几个问题:
A如果需要将网站logo等全站都用到的图片放到全站公共目录中可以用__PUBLIC__/images/logo.gif来获取,即:
/tptest/Public/images/logo.gif。
而不能用../Public来,它的结果是找模板目录下的public,即:
/tptest/home/Tpl/default/Public。
B
在模板中提交用户注册数据,action="
__URL__/add"
提交路径应该用__URL__先定位到当前控制器,再加上接收此表单数据的方法名,即可。
不要用绝对路径。
C
在写后台上左右的分帧结构的时候,指定分帧地址时,也需要用这种方式,指定到控制器的某个方法,而不是解析这个方法的模板。
framesetrows="
20%,*"
framesrc="
__URL__/top"
name="
top"
framesetcols="
__URL__/left"
left"
__URL__/right"
right"
/frameset>
这里需要注意一个问题:
当开启APP_DEBUG后,它出来的调试信息是在body体里面,而上面这种分帧结构当中不能有body,所以显示会空白。
(各浏览器表现不同。
D
系统常量也可以自己定义:
在Conf/Config.php文件中加入下面的数组,注意配置文件本身就是数组,所以此数组定义要以“,”号结束。
TMPL_PARSE_STRING'
=>
array(
'
__GOOGLE__'
//定义了一个自定义常量,可以在模板任何位置使用它。
),
1、默认情况下,'
true,开启调试模式后,系统会按照ThinkPHP\Common\debug.php中定义的配置项进行调试。
其中定义了如下配置项:
DB_FIELDS_CACHE'
false,
//关闭了字段缓存,以便于程序中修改表字段入时能反映出来。
还开启了运行时间等信息。
LOG_RECORD'
true,
//进行日志记录
SHOW_RUN_TIME'
//运行时间显示
SHOW_ADV_TIME'
//显示详细的运行时间
SHOW_DB_TIMES'
//显示数据库查询和写入次数
SHOW_CACHE_TIMES'
//显示缓存操作次数
SHOW_USE_MEM'
//显示内存开销
SHOW_PAGE_TRACE'
//显示页面Trace信息由Trace文件定义和Action操作赋值
APP_FILE_CASE'
true,
//是否检查文件的大小写方便Windows下开发移植到Linux服务器中。
如果觉得些信息不需要,或不够,可在Conf/config.php中关掉调试模式,然后直接写上面的配置,就可以显示需要的信息。
信息会自动追回到模板中。
2、调试模式会显示页面Trace信息,提供了丰富的页面加载情况,模板缓存等实用信息,但如果需要扩展,比如加上IP、session值等,就需要在Conf文件夹下新建一个trace.php文件,return一个array,用'
当前的server信息'
$_SERVER['
REMOTE_ADDR'
],这样的形式自定义增加显示的Trace信息。
从而方便调试。
也可以在Action中直接输出Trace信息:
用$this->
trace('
名称'
3、APP_DEBUG不会显示所有的数据库操作语句,需要模型调试,显示数据库操作类中执行的具体SQL语句。
如用$User=newModel('
User'
实例化一个User模型,用$User->
find
(1);
查找其中一个行;
然后就可以用$User->
getLastSql();
来获得刚才的SQL语句。
帮助我们排错。
4、显示代码执行时间:
debug_start('
run'
无数行代码.....
debug_end('
就可以输出中间代码的执行时间。
5、调试过程中可以用
halt('
提示语'
来中断程序运行,并显示提示语。
6、日志记录。
记录不同级别的日志信息。
日志的级别及注释可以在ThinkPHP/Lib/Think/Core/Log.class.php文件中查看。
在项目配置文件中用'
true,来开启日志记录。
用'
LOG_RECORD_LEVEL'
array('
EMERG'
ALERT'
ERR'
),即可设置记录哪些级别的日志信息。
也可以在Action中手动写日志。
Log:
:
write($message,$level,$type,$file);
参数分别指日志信息、级别、类型、文件存储位置。
7、另外,在项目中添加自定义的debug.php的时候,需要用“防跳墙”,即加上这句:
if(!
defined('
THINK_PATH'
))exit();
在输入数据组时,thinkphp提供了dump($arr);
方法,显示更友好。
1、thinkphp为我们提供了各种数据库抽象层,自动调用数据库函数。
只需在Conf/Config.php中增加配置。
如果有前台后台不同的应用项目,就需要在两个应用项目分别进行配置文件,而其中有部分配置是相同的,且必须保持一致性,可以这样处理:
(1)在与入口文件同级的目录下建一个config.inc.php文件,写上数据库配置等共用配置:
returnarray(
DB_DEPLOY_TYPE'
1,
//开启分布式数据库,主从数据库,比较适合高并发、高负载。
DB_TYPE'
mysql'
DB_HOST'
localhost,192.168.1.2,192.168.1.9'
//可配置多个数据库服务器,需要在不同的数据库中进行相应的配置。
系统读取写入的时候会自动连接相应的数据库,同步信息。
DB_NAME'
videodemo,videodemo1,videodemo2'
//此处数据库名如果完全相同可以不定义,如果不同,定义与上面的数据库地址一一对应。
下面的数据库用户名,密码,端口号,表前缀同理。
建议最好全部用一样的。
DB_USER'
root'
DB_PWD'
liwenkaihaha'
DB_PORT'
3306'
DB_PREFIX'
think_'
DB_RW_SEPARATE'
//读写分离,默认第一台为写服务器,其他的都是读服务器。
因为互联网应用中,写的数据比较少(且仅仅是管理员来操作),而读的数据是海量的话。
DB_CHARSET'
utf8'
//默认字符编码。
true'
//默认字段缓存。
如果启用了字段缓存,会在Runtime\Data\_fields\User.php中以数组方式记录表字段。
其中用0、1、2……项记录字段,用'
_autoinc'
true,项表示自增,‘_pk’=>
id'
项表示主键。
DB_FIELDTYPE_CHECK'
false'
//是否进行字段检测。
(2)在前台后台的配置文件中用include包含共公配置文件,再返回给一个数组变量,前台自定义配置可以再用一个数组变量记录,然后再用array_merge函数将它们合并起来,成为前台配置文件,后台同理。
$arr1=array(
//前台自定义配置:
URL_MODEL'
2,
//URL方式为rewrite。
$arr2=include'
config.inc.php'
returnarray_merge($arr1,$arr2);
2、大部分情况推荐使用以上数据库配置形式。
但有时需要在Action里连接一个临时的独立数据库,可以用以下两种方式:
(1)DSN方式(数据源名方式):
$dsn='
mysql:
//username:
password@localhost:
3306/DBName'
//新建一个数据库连接字符串。
$db=newDb($dsn);
//实例化一个数据库操作类。
(2)数组方式:
$dsn=array(
dbms'
username'
google'
password'
googlepwd'
hosname'
hostport'
database'
googledns'
3、用大C方法,读取配置文件的信息。
C('
配置项'
即可,例如读取服务器地址:
ThinkPHP实例化模型(第9课时)
1、只有实例化模型才能够对数据库和表来进行操作.而thinkphp提供了四种实例化模型的方法:
(1)创建一个基础模型。
thinkphp会自动根据我们的表,创建数据库操作类,直接用表名,就可以创建一个模型。
$User=newModel('
user'
//此处等价于:
$User=M('
)。
注意,这里操作的表命名应该是think_user。
但如果表名是think_user_massage传递'
user_massage'
和'
UserMassage'
是一样的,thinkphp会自动在大写的首字母前加一个'
_'
再把大写字母改为小写,从而找到相应的表名,因为表前缀think_中已经带了'
,所以第一个首字母可大写也可小写。
实例化之后,我们就可以用$List=$User->
select();
dump('
$list'
即可遍历输出所有数据到一个数组。
即直接调用Model中的方法,操作数据库。
(2)自定义模型类。
在实例化一个表的模型的时候,也可以同时实例化另一个自定义模型类:
首先需要在应用项目的Lib\Model目录下自定义一个CommonModel.class.php,里面定义一个类:
classCommonModelextendsModel{...}
这里可以写上一些自定义的操作方法。
$user=M('
CommonModel'
//这样$user对象不仅可以用Model进行数据库操作,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ThinkPHP 学习 记录