(一)PHP基础知识考察点

时间:2021-01-07 12:21:09

1,PHP引用变量的考察点:

  概念:引用就是用不同的名字访问同一个变量内容。

  定义方式: 使用&符号。

  • PHP引用变量的工作原理 

  这里有个COW  copy on write  用zval()去查看空间占用情况以及引用情况。

  •  unset  只用取消引用不会销毁 
  •  当引用变量的值被改变,那么原空间的值也随之改变
  • 对象本身就是引用引用传递

2,常量及数据类型

  1. 字符串的定义方式和区别

    定义方式:单引号,双引号,heredoc 和 newdoc

    单引号:单引号不能解析变量;单引号不能解析转义字符,只能解析单引号和反斜线本身;变量和变量,变量和字符串、字符串和字符串之间可以用.点来连接;

    双引号:双引号可以解析变量,变量可以使用特殊字符和{}包含;可以解析所有的转义字符;也可以使用点来连接;

    单引号的效率高于单引号;

   2.数据类型(八大数据类型)

    (1)浮点类型(不能用于精确的相等的计算)

    (2)布尔类型  false 的7种情况

        整型0,浮点0.0,空字符串' ',0字符串‘0’,布尔false,空数组array(),NULL

    (3)数组 

       超全局数组 

$_GET[] 获得以GET方法提交的变量数组

$_POST[] 获得以POST方法提交的变量数组

$_COOKIE[] 获取和设置当前网站的Cookie标识

$_SESSION[] 取得当前用户访问的唯一标识,以数组形式体现,如sessionid以及自定义session数据

$_ENV[] 当前php环境变量数组

$_SERVER[] 当前php服务器变量数组   (列举常考的点)

    1. $_SERVER[‘SERVER_ADDR’] 当前运行脚本所在的服务器的 IP 地址。
    2. $_SERVER['SERVER_NAME']当前运行脚本所在的服务器的主机名
    3. $_SERVER['REQUEST_TIME']请求开始时的时间戳
    4. $_SERVER['QUERY_STRING']query string(查询字符串),如果有的话,通过它进行页面访问
    5. $_SERVER['HTTP_REFERER'] -- 链接到当前页面的前一页面的 URL 地址。
    6. $_SERVER['HTTP_USER_AGENT'] -- 返回用户使用的浏览器信息。也可以使用 get_browser() 得到此信息。
    7. $_SERVER['HTTP_USER_AGENT'] -- 返回用户使用的浏览器信息。也可以使用 get_browser() 得到此信息。
    8. $_SERVER['REQUEST_URI'] -- 访问此页面所需的 URI。例如,“/index.html”

$_FILES[] 上传文件时提交到当前脚本的参数值,以数组形式体现

$_REQUEST[] 包含当前脚本提交的全部请求,$_GET、$_POST、$_COOKIE的所有动作 $GLOBALS[] 包含正在执行脚本所有超级全局变量的引用内容

(3)NULL 三种情况

    • 直接赋值为NULL
    • 未定义的变量为NULL
    • unset销毁的变量为NUll

  常量

     定义常量 。const 、define,const更快因为是语言结构,define是函数;const 可以定义类的常量,define不行;

    预定义常量:

__LINE__ 文件中的当前行号 __FILE__ 文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。

__DIR__ 文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。

__FUNCTION__ 函数名称(PHP 4.3.0 新加)。

__CLASS__ 类的名称

__TRAIT__ Trait 的名字

__METHOD__ 类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。

__NAMESPACE__ 当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。

3、PHP中运算符

  错误控制符  @放在一个PHP表达式前,该表达式产生的任何错误信息都会有被忽略掉

  运算符的优先级  (常用列举,具体查看运算符优先级表)

    递增/递减>!>算数运算符>大小比较>(不)相等比较>引用>位运算符(^)>位运算符(|)>逻辑与>逻辑或>三目>赋值>and>xor>or

  括号的使用可以增加代码的可读性,推荐使用

    比较运算符 

      ==和===的区别    双等 是值相等 三等是要求值和属性都相等

    递增递减运算符

      递增递减运算不影响布尔值

      递减NULL值没有效果

      递增NULL 值为一

      递增递减在前就先运算后返回,反之就是先返回后运算

    逻辑运算符  

      短路作用  如  $b==false && $a==1 

      || && or and  的优先级不同  如$a = false or true;返回时or; $a = false || true; 返回时true;

4、PHP中流程控制考点  

  PHP遍历数组的三种方式以及各自的区别

  for,foreach,while/list()/echo()组合循环  

    for循环只能遍历索引数组foreach可以遍历索引和关联数组,while和list(),echo()也同样可以。

    foreach遍历会对数组进行reset()操作; 

  if....elseif
       只能有一个表达式为true,既在一个ifelse语句中只能有一个语句块被执行,多个elseif从句是排斥关系,使用elseif语句有一个原则总把条件范围小的优先放在前面处理  

  switch....case 表达式后面的控制表达式的数据类型只能是整型,字符串,和浮点型;
   continue的作用相当于break,跳出switch 外的循环可以使用continue2
     会生成跳转表,直接跳到对用的case
     效率  如果条件比一个简单的语句复杂的多,或者在多个循环中 switch...case 会更快

5.自定义函数和内部函数的考点
    变量的作用域和静态变量    
      变量的作用域也称变量的范围,变量的范围就是它上下文的一个背景 ,大部分PHP变量只有一个单独的范围。这个单独的范围跨度同样包含了include和require的引入文件
        golbal关键字
        $GOLBALS以及其超全局数组($_GET,$_POST,$_COOKIE)
    静态变量
        静态变量只在局部函数域中存在,但当程序执行离开此作用域时,其值并不会消失。
        static 关键字 的特点
            1,只初始化一次
            2,初始化时需要赋值    
            3,每次执行函数该值会被保留
            4,static修饰的变量时局部的只在函数内部有效
            5,可以记录函数调用的次数,从而在某种条件下起到终止递归
    函数的参数
        默认情况下,函数通过进行传递,
        如果希望允许修改函数的值,必须通过引用(&)传递参数
    函数的返回值
        值通过使用可选的返回语句return返回
        可以返回包括数组对象的任意类型
        返回语句会终止函数执行,并将控制权交个函数调用处
        省略人return,返回值为null,并且不支持返回多个返回值
    函数的引用返回值
        从函数返回一个引用,必须在函数声明和指派返回值给一个变量时都使用引用运算符&
    外部文件的导入
        incloud/require语句包含并运行指定文件
        如果给出路径就安路径查找,否则就从incloud_path中查找,如果incloud_path 中也没有就会从所调用的脚本的所在目录和当前工作目录下寻找
        当一个文件被包含的时候,其中所包含的代码继承了incloud的所在行的变量范围


        价值过程中文找到文件,incloud会发出一条警告,require会报出致命的错误
        require在出错是产生E_COMPILE_ERROR级别的错误。换句话说脚本将会终止,incloud只是发出了警告,脚本继续执行

        incloud_once(require_once)/incloud(require)的唯一区别,就是PHP会检查文件是否被包含过,如果有就不在被包含
    系统内置的函数
        时间日期函数
            date(),strtotime(),mktime(),time(),microtime().date_default_timezone_set()
        IP处理函数
            iptolong()、longtoip()
        打印处理
            print(),printf(),print_r(),echo,sprintf(),var_dump(),var_export()
        序列化以及反序列化函数
        serialize(),unserialize()
        字符串函数
            explode(),implode(),join(),strrev(),trim(),ltrim(),rtrim(),strstr(),number_format()...
        数组处理函数
            array_keys(),array_values(),arrdiff(),array_intersect(),array_merge(),array_shift(),array_unshigft(),array_pop(),array_push(),sort(),

 

6.正则表达式
/*正则表达式的作用 分割 查找 匹配 替换字符串;
*分隔符:正斜线('/'),hash符号的#,以及去反的符号~
* 通用原子:/d,十进制的0~9
* /D,取反
*
* /w,数字,字母下,划线
* /W,取反
* /s,空白符
* /S除了空白符
* 元符号:. 除了换行符的任意字符
* *匹配前面的字符出现零次,1次,或者多次
* ?0次或者一次
* ^ 必须以他开头
* $ 必须以他结尾
* + 出现一次或者多次
* {n}恰巧出现n次
* {n,}大于等于n次
* {n,m}大于n小于等于m
* [ ] 一个集合
* ()代表互相引用或者当成一个整体
* 【^】代表取反
* | 或者
* 【-】代表的是一个范围
* 模式修正符:
* i不区分大小写
* m将字符串字通过分割符进行一个分割,增添到字符串的每一行分别进行匹配
* e
* s修正点的换行
* U 取消他的模式
* x 忽略模式中的空白符
* A 必须以这种模式开头
* D 修正 $对\n反斜线的忽略
* u 当我做一个utf-8的中文时 用到
* 后向引用
*
*
* 贪婪模式
*
*
*
* */

文件以及目录操作
* 文件的读取/写入操作
* fopen()函数
* 用来打开一个文件,打开时需要指定打开的方式
* 打开模式: r/r+ 用只读方式打开并且将文件指针指到文件的开头/用读写的方式打开并且将文件指针指到文件的开头
* w/w+用写入方式打开将文件指针指到文件的开头,并且将文件的大小结尾零(清空你的文件)/用读写的方式打开并且将文件指针指到文件的开头 并且将文件的大小结尾零(清空你的文件)
* w要是文件不存在就会先创建文件
* a/a+ 追加的写入方式将文件指针指到文件的末尾 /读写方式 文件不存在就会先创建文件
* x/x+ b t
* 读取函数 fread() fgets() 获取一行 fgetc()获取一个字符
* 关闭函数 fclose()
* 不需要fopen()打开的函数 file_get_contents() file_put_contents()
* 其他的读取函数 file() readfile()
* 访问远程文件 开启allow_url_fopen ,HTTP协议连接只能使用只读,FTP协议可以使用只读或者只写
* 目录相关的操作函数
* 名称相关:basename(),dirname(),pathinfo();
* 目录读取:Opendir(),reddir(),closedir(),rewinddir()
* 删除目录:rmdir() 该目录为空才能删除 否则删除不了
* 创建目录: mkdir()
* 文件大小:fileSize()进行获取
* 目录大小:disk_free_space()磁盘大小:剩余空间 disk_total_space() 总共的大小
* 文件拷贝:copy()
* 删除文件: unlink()
* 文件类型:filetype()进行获取
* 重命名文件或者目录:rename()不光可以重命名而且可以移动文件目录
* 文件的截取:ftruncate() 截取到指定的大小
* 文件的属性:file_exists()判断文件时候存在
* is_readable()是否可读
* is_writtable()是否可写
* is_executable()是否可执行
* filectime()文件的修改时间
* fileatime()文件的访问的时间
* filemtime()整个的一个修改时间
* 文件锁:flock()
* 文件指针:ftell() fseek() rewind()
*
* */
/**
* 会话技术
* cookie 是存储在客户端的文件
* setcookie($namn键,$value值,$exprie过期时间,$path路径, $domain域名,$secure安全)
* $_COOKIE
* 删除cookie
* setcookie($name,'',time()-1000);
* cookie 的优缺点
* 优点 它在客户端存在不会浪费服务器资源,效率会高一些
* 缺点 由于他在客户端存储 不建议将一些敏感的信息存储在cookie中,而且用户有权限禁止COOKIR的使用
*
*sesstion 存储在服务器 它基于cookie
* sesstion_start()开启sesstion()
* $_SEESSTION
* $_SESSTION=[]
* sesstion_destroy()删除sesstion
*
* session 优缺点
* 存于服务器中 安全 依赖于cookie 缺点占用服务器资源
* 传递sessionID session_name() 和session_id()
*
* session的存储 session_set_save_handler( )
*/
/**
* 网络协议
* HTTP协议状态码
* 五大类状态码 1XX(信息类状态码) 2XX(成功状态码) 3XX(进行附加操作完成请求) 4XX (客户端错误状态码) 5XX(服务器错误)
* 200 ok被正常处理了 204已成功处理,但是在返回的报文中不含实体的主体部分 206 部分的内容
* 301 永久性重定向 302 零时性重定向 303 存在另一个URL 304 307(302)
* 400 请求的报文中有语法错误,修改后请在一次请求,
* 401 发送请求需要有HTTP认证的认证信息 403对服务器的访问被拒绝了 404 服务器上无法找到访问的资源
* 503 服务器在进行超负载或者维护
*
* HTTP 协议的请求方法
* GET
* POST
* HEAD
* OPTIons
* PUT
* DELETE
* TRACE
*
* GET 和POST区别
* 1,在做后退和刷新的时候GET是无害的,POST数据就会被重新提交
* 2,GET可以收藏为书签 但POST不行
* 3,GET请求可以被浏览器缓存,POST不能被缓存
* 4,GET请求会对url的长度有限制2048,POST 没有
* 5,安全性 GET 没有POST安全
* 6,显现性 GET在URL可见,POST 不会显示
*HTTPS的工作原理
* https 是一种基于SSL/TLS的HTTP协议,所有的HTTP数据都是在SSL/TLS协议封装上传输的
* https 协议在HTTP协议的基础上,添加了SSL/TLS握手以及数据加密传输,也属于应用层协议
*
* 常见的网络协议含义以及端口
* FTP(文件传输协议,默认端口21) Telnet (用于远程登录的端口,用户可以远程链接计算机 23)
* SMTP(定义了简单邮件传输协议 发送邮件 25) POP3(主要用于接收邮件,端口110)
* HTTP(超文本传输协议 端口80)DNS(用于域名简析服务 53)

*/


*开发环境的配置

版本控制器
集中式和分布式
CVS 和SVN GIt
PHP的运行原理
CGI fastCGI 改良了CGI
PHP-FPM 进程管理器

真题 请简单叙述 CGI fastCGI h和 PHP-FPM的区别
CGI 代表为了联系PHP 和websevae 的一个桥梁
fastCGI 是CGI的改良版
PHP-FPM 进程管理器