php笔记
PHP错误抑制
@执行语句,即便是该语句出错,忽略错误继续执行,且不报错。
PHP常用函数
有关输出的函数
print(); 类似于echo输出提供的内容,本质是一种结构(不是函数),返回1,可以不需要使用括号
print_r();类似于var_dump();,但是比var_dump简单,不会输出数据类型,只会输出值(数组打印使用)
有关时间的函数
time();获取当前时间对应的时间戳
microtime();获取微秒级别的时间
php文件包含
include 'xxx.php'
将指定文件包含在该php文件中,执行时按顺序执行。
include_once 'xxx.php'
被包含时,仅执行一次。
include与require
include包含一个不存在的文件时,不影响代码执行,返回一个warning
require包含一个不存在的文件时,影响后续代码执行,视为error
函数
function 函数名(参数)
{
//函数体 code
//返回值
}
函数的调用:只要系统能在内存里面找到这个函数,那么就可以调用这个函数;换句话说,函数的调用可以在函数的定义之前。
其实不仅仅是 php 可以,JavaScript 也可以这个样子;那么在 PHP 里面为什么可以呢?
其实也提到了,只要在内存里面找到这个函数(全局),调用在哪里都可以。那么 PHP 的解释引擎 Zend Engine,在翻译 PHP 代码的时候并不是逐行翻译(字节码)逐行执行的,它是先翻译,装载到代码段,然后逐行执行,其实也就是说,对于全局函数,即使已经先被调用了,但是代码段里这个函数已经被装载了, 系统依旧可以在代码段找到这个函数。简单来说,不区分调用与定义的先后顺序的原因就是这样。
至少这一点,C 语言目前来看来是不可以的,C 语言必须先声明函数原型,或者直接在被调用之前写好,不然不能调用。或者可以期待未来的 C 标准加入这一项?不过这样不符合 C 的使用者的习惯吧?
小结
目前的编程语言分为编译型语言和解释型语言。
编译型语言在程序执行之前,有一个单独的编译过程,将程序翻译成机器语言,以后执行这个程序的时候,就不用再进行翻译了。
而编译后需要进行链接,结果没有前置声明,链接器无法知道对应符号的位置,因此无法将多个文件链接到一起。所以此类语言在使用对应的变量之前必须要进行对应的声明。提一嘴,链接器的历史比编译器的历史古老的多。
解释型语言,是在运行的时候将程序翻译成机器语言,所以运行速度相对于编译型语言要慢。目前的脚本语言基本都是解释型语言,他们一般都有相应的脚本引擎来解释执行。所以,他们一般需要解释器才能运行(运行环境)。
由此,JavaScript 和 php 等脚本语言理论上是根本不需要手动声明的,因为解释器会在执行前把整个脚本加载到内存中,抓取其中的声明部分,然后进行处理对应的函数流程,然后再从头开始执行。这一过程称为解释。解释器帮你做了许许多多的事情,比如申请内存,释放内存,垃圾回收,线程同步,区域通信,变量管理等,区区声明,自然不在话下。
function里面的函数定义方式原本就是先调用,后声明的,如果是var函数的话,必须要是先声明,后调用。
//function函数
f();
function f(){
alert("hehe");
}
//var函数
var f = function(){
alert("hehe")
}
f();