PHP基础知识梳理

一、php的标记风格

1.什么是标记风格:

就是一段代码头和尾的标签,一般脚本语言才会使用,用于和应用程序本身的代码区分,PHP是运行在web服务器端的脚本语言。

编程语言的类型:

1.编译型:编译型语言写的程序在被执行之前,需要一个专门的编译过程,通过编译器(compiler)将源代码编译成机器码,一般需要经过编译(compile)、链接(linker)2个步骤,链接是将各个模块的机器码和依赖库串联起来生产科执行文件(exe)。

优点:编译只做一次,再次运行时直接执行编译的文件,程序执行的效率高。

缺点:编译之后若需要修改就需要将这个模块重新编译,编译的时候根据对应的运行环境生成机器码,不同操作系统之间移植会很麻烦,需要根据运行的操作系统环境编译不同的可执行文件。

常见有 C\C++\Pascal\Object-c

2.解释型:解释型语言的程序不用编译,在运行的时候逐行翻译。脚本语言就是解释型语言。脚本语言一般以文本形式存在

优点:有良好的平台兼容性,只要安装了解释器,在任何环境中都可以运行。修改代码的时候直接修改就可以,可以快速部署,不用停机维护。

常见的有 Javascript\Python\Erlang\PHP\Perl\Ruby

最终机器运行的是机器语言。

2.标记风格类型

1.系统默认的标记

XML风格:<?php ?>

脚本风格:<script language="php"> </script>

2.可以自定义开启的标记

简短风格: <? ?> 在php.ini中设置 short_open_tag = on

ASP风格: <% %>在php.ini中设置 asp_tags = on

二、PHP的数据结构类型

8种数据结构

  1. 标量数据类型:integer,float,bool,sting

  2. 复合数据类型:arrar(),object

  3. 特殊数据类型:null,resource
    PHP用什么符号表示这些数据结构
    标识符:由字母、下划线或数字组成,且不能由数字开头
    1.常量:只能表示数值型和字符串型数据,表示一个确定的不会再改变的数据
    (1)定义常量:define( 常量标识符,”值表达式”);
    一般用大写的标识符表示常量名,常量定义后不能修改,要修改只能修改定义时的代码
    (2)使用常量:直接使用常量标识符,或使用constant( $a ); $a为值等于常量名的变量。
    (3)系统预定义常量:
    __FILE__ ,__LINE__ ,PHP_VERSION ,PHP_OS ,TURE ,FALSE ,NULL, E_ERROR ,E_WARNING, E_NOTICE, E_PARSE
    2.变量:PHP中变量可以存储所有的数据类型,故不用声明
    定义:$a = 表达式;``“$”和标识符一起表示一个变量名,$a = & $b;(引用赋值)
    (1) 使用:直接用变量名使用
    (2) 变量的类型:(按作用域划分)
    a.全局变量:函数外定义的变量,不能再函数内使用,如果要在函数内使用其值,可在函数内用global关键字修饰变量,如 global $a;这条语句等价于 $a = $GLOBALS[ 'a'];是在函数的栈区生成一个和全局区一样的$a, 然后就可以使用$a 这个变量了。通过值传递的方式也可以使函数使用全局变量。
    b. 局部变量:函数内定义的变量,只在局部起作用,函数结束时消失,如果想要这个变量的值在函数结束后保存下来,在全局使用,可以在函数中将这个变量的值保存到超全局数组中,也可以通过引用传递的方式将它的值保存到外部变量中,也可以将它作为函数的返回值,在外部用一个变量接收。
    c. 静态变量:static 修饰的变量
    静态全局变量:在全局区域定义的变量本身就是静态的,用不用static修饰都一样。
    静态局部变量:在函数内部定义的静态变量,作用域在函数内部,在函数结束时会保留其值,再次执行该函数时它的值上次函数结束时的值。并且静态变量在函数中只会被初始化一次,初始化它只能用数值、字符串、常量。用途:1.可以用来记录递归的次数,防止死归。2.用来记录网站访问次数。
    d.可变变量:变量标识符用变量表示 如 $$a
    e. PHP预定义变量:

1.获取客户端信息的预定义变量

a.$_SERVER['REQUEST_METHOD']:获取浏览器请求页面的方法
(get,post,head,put,delete,trace,connect)8种

b.$_SERVER['REQUEST_ADDR']:获得客户端的IP地址

c.$_SERVER['REQUEST_PORT']:获得用户连接到服务器时使用的端口

d.$_SERVER['REQUEST_HOST']:获得用户的主机名(基于IP地址反向域名解析)

2.获取服务器端信息的预定义变量

$_SERVER['SERVER_ADDR']:获得当前脚本运行的服务器的IP地址

$_SERVER['SERVER_PORT']:服务器使用的端口

$_SERVER['SERVER_SINGATURE']:包含服务器版本和主机名的字符串

$_SERVER['SCRIPT_FILENAME']:获取当前执行脚本的绝对路径名

3.PHP系统的超全局数组

$GLOBALS:脚本内的超全局数组,保存了当前脚本全局区所有变量的数据,
变量名为数组键名,变量值为数组键值。

$_POST,$_COOKIE,$_SESSION,$_GET:可以跨脚本的超全局数组,可以在不同的php文件间传递数据。

三、PHP运算符

1.运算符的作用
告诉PHP对数据进行怎样的操作
2.运算符的分类:

  1. 算术运算符:+,-,*,/,%
    
  2. 比较运算符:>,<,<=,>=,!=,==,===,!==
    
  3. 赋值运算符:=
    
  4. 自增自减运算符:++,- -
    
  5. 字符串运算符:.  ,  .=
    
  6. 位运算符:&,|,∧,~,<<,>>
    
  7. 逻辑运算符:and (&&),or(||),!,xor
    
  8. 条件运算符:(条件表达式)?表达式1:表达式2
    

四、PHP的流程控制

  1. 默认流程:按代码顺序依次执行

  2. 条件控制:根据条件的真假决定内部代码是否执行
    a.单路判断,执行效率高,尽量少用后面的多路判断
    if(条件表达式){ 代码 }
    变种:if(条件表达式):代码;endif;
    b.双路判断
    if(条件表达式){ 代码 }else{代码}
    变种:if(条件表达式):代码段1 else:代码段2 endif;
    c.多路判断,当判断条件太多时,使用switch进行多路判断.
    (条件表达式){ 代码 }elseif{代码}else{代码}
    if(条件表达式):代码段1 elseif:代码段2 else:代码段3 endif;
    d.进行n路判断
    switch(表达式a){ case 常量表达式1:代码段1 break;
    case 常量表达式2:代码段2 break; ……default: 代码段
    break; }
    将表达式a的值与case中 常量表达式比较,若相等怎执行case中的代码,不相等则继续与下一个case中的值比较,直到遇见break或语句结尾处停止该结构,执行后面其他的代码。一般表达式a是一个变量,case中的常量表达式是一个数值或字符串。

3.循环结构:根据条件决定结构内部代码执行的次数

  1. while(条件表达式){ 代码段 },先判断条件,再确定是否执行代码段

  2. do(代码段)while(条件表达式),先执行一次代码段再进行条件判断

  3. for( 初始化表达式;条件表达式 ;迭代表达式){ 代码段 }

  4. foreach($arr as key=&gt;key=&gt;key=>v){ 代码段 },通过遍历数组实现的循环,不需要进行条件判断,循环次数固定,是数组元素个数。

  5. 跳转:break,continue用来跳出循环结构,break可以跳出当前的循环结构体,运行循环体后面的代码,continue用来跳出循环体中的当次循环,跳出后会继续进行下次循环。break n ; n可用来指定跳出循环的层数。

  6. 函数:个人认为函数也是一个特殊的流程控制。当程序运行到函数调用语句时,会执行函数中的代码,函数结束后再执行调用语句后面的代码。

五、一个PHP脚本代码的组成

形式:脚本标签头 语言结构1 语言结构2 ….脚本标签尾
语言结构:表达式 指令分割符 | 流程控制体

按功能分类:

  1. 生成数据的语言结构:赋值表达式;
    
  2. 处理数据的语言结构:函数,流程控制体
    

表达式:在PHP中表达式是一个任何有值的东西 如 $a=1 ,“abcde”,PI 都是一个表达式。

指令分割符:PHP指令分割符是分号,代码都是在内存中逐条执行的,用这个来区分上一条和下一条代码,代码实际行数并不是显示器上的字符行数,是按分号计数的。

六、PHP的函数

1.函数是什么:

函数就是将编程语言本身的代码进行封装,变成一个代码块,在需要时能单独调用。是最基础的代码封装方式。在面向过程编程时把这段封装的代码称之为函数,面向对象时称之为成员方法。函数的使用提高了代码的复用性,减少了编码量。

2.函数的组成:函数3要素组成(函数名,形参,函数体)

(1)函数名:一般采用小驼峰法命名 如 getSingleton copyFile

(2)形式参数:在定义函数时设置的,接收外部传入数据的变量,传给函数的参数就保存在形式参数中,如果函数执行不需要外部的参数,就不需要设形式参数。

(3)函数体:就是函数内部包含的代码。

3.函数与外部数据间的参数传递:

(1).程序执行原理:
无论什么程序,其实都是对数据的操作,都是加载在内存中执行的,执行时会在内存开辟空间,用来保存代码执行后产生的数据,有保存变量、常量名的命名空间,和保存他们数据的数据区(通常被称为全局数据),当遇到流程控制结构和函数时会在内存开辟一个栈区,用来保存他们运行时产生的数据(通常称之为局部数据),当它们结束后,栈清空,它们运行时产生的数据全部消失。我们定义的常量是单独存储在一个区域的,使用它的数据没用作用域的限制,在脚本的任何地方都能使用(超全局数据)。函数就是用来进行数据操作的,而且操作的数据必定有栈区外的数据,否则这个函数无意义,如果它只操作自己栈区的数据,花样再多,操作的再好,函数一结束就什么都没有了。

(2).参数传递的形式:值传递,引用传递,可选参数($a=2,给函数的形参设了默认值)

n 值传递:如set(a);函数在栈区生成一个值和全局区a);函数在栈区生成一个值和全局区a;a一样的数据,数据在栈区的名字也是$a。

n 引用传递:如set(&a);传入的是一个对全局区a); 传入的是一个对全局区a);a数据地址的引用,函数直接使用全局区$a的数据。

(3).函数的调用:

  1. 函数名(实参列表);
  2. 变量名(实参列表);变量的值要等于函数名,否则报错

实参列表的参数个数要等于函数形参个数,若形参最后一个参数设定了一个值,则是该参数函数的可选参数,在调用时可以不给它传参数

(4).函数的类型:(按函数调用的形式分类)
1.变量函数:变量的值等于函数名,通过这个变量来调用这个函数。
2.匿名函数:变量的名等于函数名。
$a = function ($x,$y){ },这个函数没有函数名,因为这个变量就是函数本身,变量就是函数名,调用 :$a(1,2);函数的返回值就保存在变量中,这种方式可以节省大量用变量来接收函数返回值的代码。
3.回调函数:在一个函数中调用另一个函数(嵌套函数)
4.递归函数:一个函数有条件地调用自己,一定要有一个结束递归的条件,否则就是死归,导致系统内存爆掉,通常用一个静态变量限制递归调用的次数。

七、PHP对数据结构的操作

PHP对各种数据类型的操作都是通过相应的的函数和语言结构来实现的。

  1. 数值类型的操作

  2. 字符串的操作

  3. 数组的操作

  4. 对象的操作

  5. 资源型数据的操作

1.文件操作

2.图片操作

3.mysql操作

  1. 数据类型间的相互转换

八、PHP面向对象编程

九、PHP的外部扩展

  1. Mysql,Mysqli,Pdo扩展对Mysql数据库操作

  2. GD库扩展对图片进行操作

十、PHP命名空间

十一、PHP错误与异常处理

十二、PHP的会话机制

十三、PHP与WEB页面交互

十四、PHP与Javascript间的交互

十五、Smarty模板引擎

十六、MVC框架

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值