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 k e y = &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框架

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值