php汇总 (28)

可以通过上传的文件名获取到文件后缀,然后使用时间戳+随机数+文件后缀的方式为文件重新命名,这样就避免了重名。可以自己设置上传文件的保存目录,与文件名拼凑形成一个文件路径,使用move_uploaded_file(),就可以完成将文件保存到指定目录。

128、在Smarty模板语法中如何获取php的全局环境变量

$smarty.get.变量#显示通过get方式传过来的指定变量的值

$smarty.post.变量#显示通过post方式传过来的指定变量的值$smarty.cookies.变量#显示通过cookie中指定变量的值

$smarty.server.SERVER_NAME#显示server变量值,$_SERVER系列变量$smarty.env.PATH#显示系统环境变量值,$_ENV系列变量$smarty.session.变量#显示session中指定变量的值

$smarty.request.变量#显示通过post、get、cookie中指定变量的值

129、禁用COOKIE后SEESION还能用吗?

可以,Cookie和session都是用来实现会话机制的,由于http协议是无状态的,所以要想跟踪一个用户在同一个网站之间不同页面的状态,需要有这么一个机制----会话机制。

Cookie:将会话信息的保存到浏览器端。Session:将会话信息保存到服务器端。

session默认情况下是基于cookie的,对于session来说,每生成一个sessionid,都会将其发送到浏览器端,让后将其保存到cookie当中。

如果禁用了cookie,则基于cookie的session不好使了,我们可以使用get,传递SID。

130、PHP7有哪些新特性?

PHP7在PHP5的基础上又做了一次质的提升,当然改变很多,我这里以我的总结简单说下,主要发生了下面这些更改:

移除了一些旧的特性

ZEND引擎升级到Zend Engine 3,也就是所谓的PHP NG

增加抽象语法树,使编译更加科学

64位的INT支持

统一的变量语法

原声的TLS - 对扩展开发有意义

一致性foreach循环的改进

新增 <=>、**、??、\u{xxxx}操作符

增加了返回类型的声明

增加了标量类型的声明

核心错误可以通过异常捕获了

增加了上下文敏感的词法分析  

131、什么是JS中的闭包,什么是PHP中的闭包函数?

JS的闭包:

所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。

先看下下面这段代码

这段代码有两个特点:1、函数b嵌套在函数a内部;2、函数a返回函数b。

这样在执行完var c=a()后,变量c实际上是指向了函数b,再执行c()后就会弹出一个窗口显示i的值(第一次为1)。这段代码其实就创建了一个闭包,为什么?因为函数a外的变量c引用了函数a内的函数b,就是说:
  当函数a的内部函数b被函数a外的一个变量引用的时候,就创建了一个闭包。

①这里首先得说下JS的垃圾回收机制:

在Javascript中,如果一个对象不再被引用,那么这个对象就会被GC回收。如果两个对象互相引用,而不再被第3者所引用,那么这两个互相引用的对象也会被回收。因为函数a被b引用,b又被a外的c引用,这就是为什么函数a执行后不会被回收的原因。

②闭包有什么作用呢?

1)可以在全局作用域实现对局部变量的引用

2)可以一直保存我们的变量或函数驻留在内存中,而不会被GC回收

③闭包的应用场景

1、保护函数内的变量安全。以最开始的例子为例,函数a中i只有函数b才能访问,而无法通过其他途径访问到,因此保护了i的安全性。
  2、在内存中维持一个变量。依然如前例,由于闭包,函数a中i的一直存在于内存中,因此每次执行c(),都会给i自加1。

我眼中的闭包:

函数中函数,且该函数捆绑了一些局部变量,又由于全局变量的引用,会导致函数与变量都不会被回收,这就是我眼中的闭包。

PHP中的闭包函数:

在PHP5.3以后,允许创建匿名函数,中匿名函数,也叫闭包函数(closures ),允许 临时创建一个没有指定名称的函数。最经常用作回调函数(callback)的参数。

用好闭包,可以帮我们

1 减少foreach的循环的代码

2 减少函数的参数

3 解除递归函数

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwpyyp.html