thinkphp零碎小知识
在使用thinkphp搭建后台的时候,有很多的参数需要去配置,有的记不住还要去查找,这里把一些基本的参数整理一下,还有些零碎的知识点,与大家共勉,希望能方便大家。
友情提示:这些配置是 thinkphp3.2.3的哦~~
1.分离前后台
//定义应用目录
define('BIND_MODULE','Admin');
define('App_PATH','./Application');
为了一个项目的安全性以及便于维护,通常用一个入口文件,而前后台分开的情况,在定义的时,在配置文件中更改代码。可以出现一个后台文件入口,前后台分开,方便管理。也可直接复制Home文件夹,更改控制器和模型里的命名空间。
2.设置视图文件的后缀
'TMPL_TEMPLATE_SUFFIX' => '.php', // 默认模板文件后缀
3.连接数据库
'DB_TYPE' => 'mysql', // 数据库类型
'DB_HOST' => 'localhost', // 服务器地址
'DB_NAME' => 'wish', // 数据库名
'DB_USER' => 'root', // 用户名
'DB_PWD' => 'root', // 密码
'DB_PORT' => 3306, // 端口
'DB_PREFIX' => 'tp_', // 数据库表前缀
4.简单实用的获取服务器信息
$info = array(
'操作系统'=>PHP_OS,
'运行环境'=>$_SERVER["SERVER_SOFTWARE"],
'主机名'=>$_SERVER['SERVER_NAME'],
'WEB服务端口'=>$_SERVER['SERVER_PORT'],
'网站文档目录'=>$_SERVER["DOCUMENT_ROOT"],
'浏览器信息'=>substr($_SERVER['HTTP_USER_AGENT'], 0, 40),
'通信协议'=>$_SERVER['SERVER_PROTOCOL'],
'请求方法'=>$_SERVER['REQUEST_METHOD'],
'ThinkPHP版本'=>THINK_VERSION,
'上传附件限制'=>ini_get('upload_max_filesize'),
'执行时间限制'=>ini_get('max_execution_time').'秒',
'服务器时间'=>date("Y年n月j日 H:i:s"),
'北京时间'=>gmdate("Y年n月j日 H:i:s",time()+8*3600),
'服务器域名/IP'=>$_SERVER['SERVER_NAME'].' [ '.gethostbyname($_SERVER['SERVER_NAME']).' ]',
'用户的IP地址'=>$_SERVER['REMOTE_ADDR'],
'剩余空间'=>round((disk_free_space(".")/(1024*1024)),2).'M',
);
$this->info=$info;
5. thinkphp 构造函数 _ initialize() 和__construct()
在php的内置函数中不存在 _ initialize()的构造方法,只存在 __ construct()构造方法,子类如果有自己的构造函数( __ construct()),则调用自己的进行初始化,如果没有,则调用父类的构造函数进行自己的初始化。当子类和父类都有 __ construct()函数的时候,如果要在初始化子类的时候同时调用父类的 __ constrcut(),则可以在子类中使用parent:: __ construct()。
ThinkPHP中的 _ initialize()的出现只是方便程序员在写子类的时候避免频繁的使用parent:: __ construct(),同时正确的调用框架内父类的构造器,所以,我们在ThnikPHP中初始化子类的时候要用 _ initialize(),而不用 __ construct()。
6. redirect方法
该方法调用了 U 函数来生成实际的 URL 重定向地址,同项目分组中的URL访问一样,redirect 中跨分组跳转只是多了一个分组项目名称的概念,可以在 redirect 中使用路由,redirect 方法的参数用法和 U函数 的用法一致.可参考 U函数 生成URL地址相关部分内容。
与success/error的区别:
redirect 是使用的 PHP header 重定向,而 success/error 是使用的 html meta http-equiv='Refresh' 属性跳转。
redirect 无模板页面,输出的提示信息是直接在函数内 echo 输出的,而 success/error 有对应的模板。
redirect 与 success/error 都可以实现页面的跳转,只是 redirect 可以无延时重定向,具体采用哪种视具体情况而定。
7. thinkphp 文件上传
在使用thinkphp来设置上传文件的目录时,可能会出现错误,显示找不到制定的那个文件夹,但是在配置中却明明已经用savePath来进行设置,但就是不起作用。
错误的原因是仅仅设置upload的savePath的参数是不行的,还要对upload的根目录rootPath进行设置。或者说,仅仅只设置rootPath的参数,这样才能够起作用。
$upload=new \Think\Upload(); //实例化上传类
$upload->maxSize=3145728; //设置附件上传大小
$upload->exts=array('jpg','gif','png','jpeg'); //设置附件上传类型
$upload->savePath='./Public/Uploads/'; //设置附件上传目录
//这个rootPath根目录千万不能忘记设置,要不savePath会找不到相应的文件夹
$upload->rootPath='/.';
thinkphp零碎小知识的更多相关文章
- JS零碎小知识
filter()方法对数组进行过滤,生成新数组 var aqiNewData = aqiData.filter(function(data){ return data[1]>60; }); // ...
- HTML+css零碎小知识
1.设置了float浮动的元素和绝对定位position:absolute的元素会脱离正常的文档流.但是设置absolute的元素不会占据空间,相当于隐形了. 2.相对定位position:rel ...
- 关于JSON的零碎小知识
1.ali的fastjson在将实体类转成jsonString的时候,一些首字母大写的字段会自动修改为小字母,这种字段加 @JsonProperty(value = "DL_id" ...
- springboot之零碎小知识
1.springboot启动类加载yml配置项 主要是如下方法,读取了yml的配置项,赋值为类成员属性 @Autowired public void setEnvironment(Environmen ...
- 关于JAVA的一些零碎小知识
1.经常遇到集合之间需要互相转化的 Array和List转化:Arrays.asList(数组):list.toArray(); List和Set转化:Set<String> set = ...
- 蓝牙Bluetooth技术小知识
蓝牙Bluetooth技术以及广泛的应用于各种设备,并将继续在物联网IoT领域担任重要角色.下面搜集整理了一些关于蓝牙技术的小知识,以备参考. 蓝牙Bluetooth技术始创于1994年,其名字来源于 ...
- HTML+CSS中的一些小知识
今天分享一些HTML.CSS的小知识,希望能够对大家有所帮助! 1.解决网页乱码的问题:最重要的是要保证各个环节的字符编码一致! (1)编辑器的编辑环境的字符集(默认字符集):Crtl+U 常见的编码 ...
- iOS APP开发的小知识(分享)
亿合科技小编发现从2007年第一款智能手机横空出世,由此开启了人们的移动智能时代.我们从一开始对APP的陌生,到现在的爱不释手,可见APP开发的出现对我们的生活改变有多巨大.而iOS AP ...
- Unix系统小知识(转)
Unix操作系统的小知识 2.VI添加行号/翻页/清屏 .在对话模式时(即输完Esc再输入: ),输入“:set number”可以将编辑的文本加上行号.跟玩俄罗斯方块一样方便的上下左右移动箭头的快捷 ...
随机推荐
- python3下搜狗AI API实现
1.背景 a.搜狗也发布了自己的人工智能 api,包括身份证ocr.名片ocr.文本翻译等API,初试感觉准确率一般般. b.基于python3. c.也有自己的签名生成这块,有了鹅厂的底子,相对写起 ...
- word2vec初探(用python简单实现)
为什么要用这个? 因为看论文和博客的时候很常见,不论是干嘛的,既然这么火,不妨试试. 如何安装 从网上爬数据下来 对数据进行过滤.分词 用word2vec进行近义词查找等操作 完整的工程传到了我的gi ...
- 2018 php的flush和ob_flush不起作用 整理解决
2018 php的flush和ob_flush不起作用 整理解决成功解决. 要点 : 使用函数 str_repeat2处配置:检查php.ini.Nginx 中有下面两个设置使用方式:echo str ...
- hdu2050 折线分割平面---递推
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2050 题目大意: 求n条折线分割平面的最大数目 思路: 先看n条直线的时候 一条直线 2个平面 两条 ...
- Java面试题—中级(中)
什么是线程死锁?死锁如何产生?如何避免线程死锁? 死锁的介绍: 线程死锁是指由于两个或者多个线程互相持有对方所需要的资源,导致这些线程处于等待状态,无法前往执行.当线程进入对象的synchro ...
- [论文阅读] ImageNet Classification with Deep Convolutional Neural Networks(传说中的AlexNet)
这篇文章使用的AlexNet网络,在2012年的ImageNet(ILSVRC-2012)竞赛中获得第一名,top-5的测试误差为15.3%,相比于第二名26.2%的误差降低了不少. 本文的创新点: ...
- (CLR-Via-C#) 类型基础
CLR要求每个类型最终都派生自System.Object Object提供的公共方法: Equals: 如果两个对象具有相同的值,就返回true GetHashCode: 返回对象的哈希码 ToStr ...
- Spring(4)——面向切面编程(AOP模块)
Spring AOP 简介 如果说 IoC 是 Spring 的核心,那么面向切面编程就是 Spring 最为重要的功能之一了,在数据库事务中切面编程被广泛使用. AOP 即 Aspect Orien ...
- Windows安装SVN服务器和客户端
我的操作系统版本是windows10 64位.接下来我会先介绍SVN服务器的安装,然后再介绍安装SVN客户端,并进行测试. 下载 首先我们需要到官网上去下载svn服务器程序. [svn官网地址] (h ...
- TCP/IP学习笔记(二):TCP连接的建立与终止
TCP连接的三次握手: (1)请求短发送一个SYN段指明客户打算连接的服务器的端口,以及初始序号ISN(1415535521),报文段中SYN=1:TCP规定:SYN报文段不能携带数据,但是要消耗一个 ...