科目一


前端基础知识(HTML、CSS、JS)
表单:

文本框input-text;密码框

text类型,普通文本框,特点是默认; password类型,密码框,特点是内容显示为*号;

下拉框select-option

select 的属性: [autofocus]属性,值为autofocus,是规定在页面加载后文本区域自动获得焦点。 [disabled]属性,值为disabled,是规定禁用该下拉列表。 [multiple]属性,值为multiple,是规定可选择多个选项。 [name]属性,值为name,是规定下拉列表的名称。 [size]属性,值为number,是规定下拉列表中可见选项的数目。 option的属性: [disabled]属性,值为disabled,是规定此选项应在首次加载时被禁用。 [selected]属性,值为selected,是规定选项(在首次显示在列表中时)表现为选中状态。 [value]属性,值为text,是定义送往服务器的选项值。

文本域textarea

在网页中,用户需要输入大量的文字信息的时候,就会用到textarea标签,它就是多行文本域。 比如:留言,备注等。 文本区中可容纳无限数量的文本,其中的文本的默认字体是等宽字体(通常是 Courier)。 可以通过 cols 和 rows 属性来规定 textarea 的尺寸,不过更好的办法是使用 CSS 里的height 和 width 属性:cols和rows。

单选 input-radio

radio类型,单选,特点是一组单选必需name相同;

多选 input-checkbox

checkbox类型,多选,特点是一组多选必需name相同;

按钮 input-button、submit、reset;图片按钮

button类型,普通按钮; reset类型,重置按钮,特点是回到最初状态(注意:不是清空);

  • form提交方法:get post

    GET优点: 1.执行效率比POST高
    2.可以通过url传递数据,查找的数据的时候会比较方便 GET缺点: 1.安全性很低,因为上传的数据都会显示在url上,所以一般都上传一些无关紧要的数据
    2.上传的数据量比较小,不能超过4K(被url长度限制) POST优点: 1.安全性相对来说较高(至少比GET高)
    2.上传数据量可以看作没有限制 POST缺点: 1.执行效率比GET低
    2.不可以通过url传递数据,有时候想查看数据不太方便

触发动作:onclick、onblur、onfocus、onchange

获得焦点onfocus;失去焦点onblur;输入一次触发一次oninput;输入并失去焦点onchange.

表单验证

form表单

属性说明: [accept-charset]属性,值为charset_list,是规定服务器可处理的表单数据字符集。 [action]属性,值为URL,是规定当提交表单时向何处发送表单数据。 [autocomplete]属性,值为onoff,是规定是否启用表单的自动完成功能。 [enctpe]属性,可能的值有application/text/plain,是规定在发送表单数据之前如何对其进行编码。上传文件时必须指定为:multipart/form-data [method]属性,值为get(默认)post,是规定用于发送 form-data 的 HTTP方法。 [name]属性,值为form_name是规定表单的名称。 [novalidate]属性,值为novalidate,如果使用该属性,则提交表单时不进行验证。 [target]属性,值为 _blank_self(默认)_parent_topframename,是规定在何处打开 action URL。


PHP基础知识-常用函数

字符串:

单引号与双引号(变量嵌入)

1) 对变量的解析不同

PHP 会解析双引号中的变量,而不会解析单引号中的变量。也就是说,如果使用单引号定义的字符串中出现变量,在输出时变量会被原样输出,不会解析成变量的值。而如果使用双引号定义的字符串中存在变量,在输出时变量会被解析为具体的值。

  1. <?php
  2. $website = 'C语言中文网';
  3. $url = 'http://c.biancheng.net/php/';
  4. $str1 = '您正在访问的是:$website <br>';
  5. $str2 = "网站的链接地址为:$url";
  6. echo $str1;
  7. echo $str2;
  8. ?>
  9. 您正在访问的是:$website
  10. 网站的链接地址为:http://c.biancheng.net/php/

需要注意的是,虽然双引号定义的字符串能够解析变量,但是如果变量后边还有字符串的话,就需要将变量与后面的字符串使用空格分开,或者使用大括号{ }将变量包裹起来。如果不这么做的话,很可能会造成意想不到的结果。

2) 转义的字符不同

单引号和双引号中都可以使用转义字符\,但是,在单引号定义的字符串中只能转义单引号和转义符本身,而在双引号定义的字符串中,PHP 可以转义更多的特殊字符。

在双引号定义的字符串中能使用的转义字符如下表所示:

转义字符 说明 转义字符 说明
\n 换行 \$ 代表 $ 本身
\r 回车 \\ 代表反斜线 \ 本身
\t 水平制表符,一个缩进 \‘ 单引号本身
\v 垂直制表符 \“ 代表双引号本身
  1. <?php
  2. $a = '3';
  3. $b = '2';
  4. $str1 = "\"\$a\" 的值为:$a\n,";
  5. $str2 = '\'$b\' 的值为:'.$b;
  6. echo $str1;
  7. echo $str2;
  8. ?>
  9. //"$a" 的值为:3 ,'$b' 的值为:2

3) 解析速度不同

因为单引号不需要考虑变量的解析,所以处理速度比双引号要快,我们在定义字符串时应该尽量遵循能用单引号尽量用单引号的原则。
如果在字符串中不需要加入变量或者单引号’和反斜杠\时,尽量使用单引号来定义字符串。因为省去了双引号检查处理转义字符和解析变量的时间,所以可以提高程序的运行效率。
这里总结了一下 PHP 中使用引号的原则,如下所示:

  • 在 PHP 代码中尽量用单引号;
  • 字符串中包含变量的时候,使用双引号可以简化操作;
  • 如果字符串比较复杂且包含变量时,将变量使用大括号包裹起来;
  • 字符串中不需要加入变量或者单引号’和反斜杠\时,尽量用单引号定义字符串。

字符串连接

PHP 中可以使用字符串连接符.来拼接字符串,它可以把两个或两个以上的字符串拼接成一个新的字符串。
字符串拼接有两种形式,分别是直接使用字符串连接符.和赋值运算符.=。

去除空格trim()

PHP 中提供了三个函数来去除字符串左右两边的空白字符和特殊字符,如下所示:

  • trim() 函数:去除字符串左右两边的空白字符和特殊字符;
  • ltrim() 函数:去除字符串左边的空白字符和特殊字符;
  • rtrim() 函数:去除字符串右边的空白字符和特殊字符。

trim() 函数可以去除字符串首尾的空白字符(或者其他字符)。语法格式如下: trim($str [, $character_mask = “ \t\n\r\0\x0B”]) 参数说明如下:

  • $str:待处理的字符串;
  • $character_mask:可选参数,用于指定所有要去除的字符,也可以使用“..”列出一个字符范围。
    如果不指定 $character_mask 参数,trim() 函数将去除下面这些字符:
  • “ “:普通空格符;
  • “\t”:制表符;
  • “\n”:换行符;
  • “\r”:回车符;
  • “\0”:空字节符;
  • “\x0B”:垂直制表符。

替换:str_replace()

str_ireplace() 和 str_replace 使用新的字符串替换原来字符串中指定的特定字符串,str_replace 区分大小写,str_ireplace() 不区分大小写,两者语法相似。

  1. <?php
  2. $str = 'hello,world,hello,world';
  3. $replace = 'hi';
  4. $search = 'hello';
  5. echo str_ireplace($search, $replace, $str);
  6. ?>
  7. //hi,world,hi,world

substr_replace() 在字符串 string 的副本中将由 start 和可选的 length 参数限定的子字符串使用 replacement 进行替换。

  1. <?php
  2. //substr_replace() 在字符串 string 的副本中将由 start 和可选的 length 参数限定的子字符串使用 replacement 进行替换。
  3. $str = 'hello,world,hello,world';
  4. $replace = 'hi';
  5. echo substr_replace($str, $replace, 0,5);
  6. ?>
  7. //hi,world,hello,world

位置:strpos()

stripos() 用来查找字符串中某部分字符串首次出现的位置(不区分大小写)。 strpos() 用来查找字符串首次出现的位置。

长度:strlen(), mb_strlen()

strlen() 函数可以返回给定字符串的长度 注意:在 strlen() 函数中,数字、英文、小数点、下划线和空格占一个字符长度;而一个 GB2312 编码的汉字占两个字符长度,一个 UTF-8 编码的汉字占三个字符长度。 mb_strlen() 函数的返回值为具有 $encoding 编码的字符串 $str 所包含的字符数,如果 $encoding 无效则返回 false。
注意:与 strlen() 函数不同,在 mb_strlen() 函数中,无论是汉字,还是英文、数字、小数点、下划线和空格,都只占一个字符长度。

大小写:strtoupper(),strtolower()

函数名称 功能
strtoupper 将字符串转化为大写
strtolower 将字符串转化为小写
ucfirst 将字符串的首字母转化为大写
lcfirst 将字符串的首字母转化为小写
ucwords 将字符串中每个单词的首字符转化为大写
mb_strtoupper 将字符串转化为大写(与 strtoupper 函数有区别)
mb_strtolower 将字符串转化为小写(与 strtolower 函数有区别)
mb_convert_case 按照不同的模式对字符串进行转换

截取:substr, strstr

substr() 函数可以从字符串的指定位置截取一定长度的字符,这段被截取的字符可称为“子串”或者“子字符串”,其语法格式如下: substr($string, $start [, $length])

strstr() 函数搜索字符串在另一字符串中是否存在,如果是,返回该字符串及剩余部分,否则返回 FALSE。

字符串与数组转换:implode、explode

explode() 函数可以基于字符串分隔符拆分字符串,即它将一个字符串根据分隔符拆分为若干个子串,然后将这些子串组合成数组并返回。 implode() 函数可以将一个一维数组转化为字符串.

去除标签strip_tags

strip_tags() 函数剥去字符串中的 HTML、XML 以及 PHP 的标签。

数组:

数组打印

print_r() 函数用于打印变量,以更容易理解的形式展示; var_dump() 函数用于输出变量的相关信息。 var_dump() 函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。

数组下标(支持字符串;默认从0开始;)

数组增减元素array_shift()、array_pop()、array_push()

数组的键/值操作:

数组的拆分、合并:

数组的填充与清除:

数组的计算:

其它数组函数:

数组输出foreach

//第一种格式
foreach (array_expression as $value){
statement
}
//第二种格式
foreach (array_expression as $key => $value){
statement
}

数组排序sort()、rsort()、asort()、ksort()

函数 说明
sort() 对数组元素进行升序排序(从小到大)。
rsort() 对数组元素进行降序排序(从大到小)。
asort() 对数组元素进行升序排序(从小到大),并保持索引关系。
arsort() 对数组元素进行降序排序(从大到小),并保持索引关系。
ksort() 按照数组的键值对数组进行升序排序(从小到大),并保持索引关系。
krsort() 按照数组的键值对数组进行降序排序(从大到小),并保持索引关系。

数组长度count()、array_count_values()

count() 函数可以统计出数组里所有元素的数量,或对象中的属性个数; array_count_values() 函数用于统计数组中所有值出现的次数。

序列数组range()

range() 函数创建一个包含指定范围的元素的数组。 range(low,high,step) step 默认1

  1. <?php
  2. $number = range(0,5);
  3. print_r ($number);
  4. ?>
  5. //Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 )

是否数组is_array()

is_array() 函数用于检测变量是否是一个数组。

多维数组

正则表达式:

正则表达式基本语法


时间日期:

  • 时间戳的概念

    我们可以使用 PHP 中的 time() 函数来获取当前的 UNIX 时间戳,函数的语法格式如下: time() time() 函数没有参数,其返回值为 UNIX 时间戳的整数值。

  • 日期格式化date(“Y-m-d H:i:s”) | format 字符 | 说明 | 返回值例子 | | —- | —- | —- | | d | 月份中的第几天,使用两位的数字表示,不足两位时在前面补 0 | 01 到 31 | | D | 星期几的英文缩写(使用 3 个字母表示) | Mon 到 Sun | | l(“L”的小写字母) | 星期几的英文单词 | Sunday 到 Saturday | | N | 根据 ISO-8601 标准格式,使用数字表示星期中的第几天(PHP5.1.0 新加) | 1(表示星期一)到 7(表示星期天) | | S | 每月天数后面的英文后缀(使用 2 个字符表示) | st、nd、rd 或者 th。可以和 j 一起使用 | | w | 使用数字表示星期中的第几天 | 0(表示星期天)到 6(表示星期六) | | z | 使用数字表示一年中的第几天 | 0 到 365 | | W | 根据 ISO-8601 标准格式,使用数字表示年份中的第几周,每周从星期一开始,(PHP 4.1.0 新增) | 例如:42(当年的第 42 周) | | F | 月份的英文单词,例如 January 或者 June | January 到 December | | m | 使用两位的数字表示当前月份 | 01 到 12 | | M | 月份的英文缩写 | Jan 到 Dec | | n | 使用数字表示当前月份 | 1 到 12 | | t | 指定月份的天数 | 28 到 31 | | L | 指定的年份是否为闰年 | 如果是闰年值为 1,否则为 0 | | o | 根据 ISO-8601 标准格式使用数字表示年份,这和 Y 的作用相同(PHP 5.1.0 新增) | 1999 or 2019 | | Y | 使用 4 位数字表示完整的年份 | 例如:1999 或 2019 | | y | 使用 2 位数字表示年份 | 例如:99 或 03 | | a | 小写的上午和下午值 | am 或 pm | | A | 大写的上午和下午值 | AM 或 PM | | B | Swatch Internet 标准时 | 000 到 999 | | g | 使用 12 小时格式表示小时数 | 1 到 12 | | G | 使用 24 小时格式表示小时数 | 0 到 23 | | h | 使用 12 小时格式表示小时数,有前导零 | 01 到 12 | | H | 使用 24 小时格式表示小时数,有前导零 | 00 到 23 | | i | 使用两位数字表示分钟数,有前导零 | 00 到 59> | | s | 使用两位数字表示秒数,有前导零 | 00 到 59> | | u | 毫秒(PHP 5.2.2 新增)。需要注意的是 date() 函数总是返回 000000,因为它只接受 integer 参数,而 DateTime::format() 才支持毫秒 | 例如:654321 | | e | 时区标识 | 例如:UTC、GMT、Atlantic/Azores | | I(大写的“i”) | 是否为夏令时 | 夏令时为 1,否则为 0 | | O | 与格林尼治时间相差的小时数 | 例如:+0200 | | P | 与格林尼治时间(GMT)的差别,小时和分钟之间由冒号分隔 | 例如:+02:00 | | T | 本机所在的时区 | 例如:EST、MDT(在 windows 下为完整文本格式,例如“Eastern Standard Time”,中文版会显示“中国标准时间”) | | Z | 时差偏移量的秒数,UTC 西边的时区偏移量总是负的,UTC 东边的的时区偏移量总是正的 | -43200 到 43200 | | c | ISO-8601 格式的日期 | 2014-02-12T15:19:21+00:00 | | r | RFC 822 格式的日期 | 例如:Thu,21 Dec 2000 16:01:07 +0200 | | U | 从 UNIX 纪元(January 1 1970 00:00:00 GMT)开始至今的秒数 | 和 time() 返回相同的时间戳 |

  • 当前时间戳time()

  • 客户端时间和服务器时间

    类与面向对象:

    构造函数
    访问控制
    静态方法
    继承

    在 PHP 中,类的继承需要通过 extends 关键字来实现。语法格式如下所示: class 子类名 extends 父类名{
    … …
    }

  1. <?php
  2. class Website{
  3. public $name, $url, $title;
  4. public function __construct(){
  5. echo '------基类中的构造函数------<br>';
  6. }
  7. public function demo(){
  8. echo '基类中的成员方法<br>';
  9. }
  10. }
  11. class ClassOne extends Website{
  12. }
  13. class ClassTwo extends Website{
  14. public function __construct(){
  15. echo '------子类中的构造函数------<br>';
  16. }
  17. }
  18. $object = new ClassOne();
  19. $object -> demo();
  20. $object2 = new ClassTwo();
  21. $object2 -> demo();
  22. ?>
  23. ------基类中的构造函数------
  24. 基类中的成员方法
  25. ------子类中的构造函数------
  26. 基类中的成员方法
  1. <?php
  2. class Website{
  3. public $name, $url, $title;
  4. public function __construct(){
  5. echo '------基类中的构造函数------<br>';
  6. }
  7. protected function demo(){
  8. echo '基类中的成员方法<br>';
  9. }
  10. }
  11. class ClassOne extends Website{
  12. }
  13. class ClassTwo extends Website{
  14. public function __construct(){
  15. echo '------子类中的构造函数------<br>';
  16. }
  17. public function test(){
  18. $this -> demo();
  19. }
  20. }
  21. $object = new ClassOne();
  22. // $object -> demo(); // 在子类中调用父类使用 protected 修饰的成员方法会报错
  23. $object2 = new ClassTwo();
  24. $object2 -> test();
  25. ?>
  26. ------基类中的构造函数------
  27. ------子类中的构造函数------
  28. 基类中的成员方法
  1. //类中使用 private 修饰的成员被称为私有成员。父类中的私有成员不会被子类继承,因此不能被子类访问到。
  2. <?php
  3. class Website{
  4. private function demo(){
  5. echo '基类中的成员方法<br>';
  6. }
  7. }
  8. class ClassOne extends Website{
  9. public function test(){
  10. $this -> demo();
  11. }
  12. }
  13. $object = new ClassOne();
  14. $object -> test();
  15. ?>

重载
操作符::
抽象类


Cookie和Session:

Cookie和Session的概念

Cookie 是在 HTTP 协议下,服务器或脚本用来维护客户端上信息的一种方式。Cookie 是由 Web 服务器保存在用户浏览器(客户端)上的小文本文件,它可以包含有关用户的信息。无论何时用户链接到服务器,Web 站点都可以访问 Cookie 信息。

有些 Cookie 是临时的,有些则是持续的。临时的 Cookie 只在浏览器上保存一段规定的时间,一旦超过规定的时间,该 Cookie 就会被系统清除。

持续的 Cookie 则保存在用户的 Cookie 文件中,下一次用户返回时,仍然可以对它进行调用。在 Cookie 文件中保存 Cookie,有些用户担心 Cookie 中的用户信息被一些别有用心的人窃取,而造成一定的损害。

其实,网站以外的用户无法跨过网站来获得 Cookie 信息。如果因为这种担心而屏蔽 Cookie,肯定会因此拒绝访问许多站点页面。因为,当今有许多 Web 站点开发人员使用 Cookie 技术,例如 Session 对象的使用就离不开 Cookie 的支持。

在 PHP 中,Session 是一种服务器端的机制,服务器使用一种散列表的结构(类似于 JSON)来保存信息。相比于保存在客户端的 Cookie,Session 将用户交互信息保存在了服务器端,使得同一个客户端每次和服务端交互时,不需要每次都传回所有的 Cookie 值,而是只需要传回一个 ID 即可,这个 ID 是客户端第一次访问服务器的时候生成的,而且是唯一的。

还有一点就是,因为 Cookie 存储在客户端,所以用户有权禁用 Cookie,而 Session 是存储在服务器端的,用户无法禁用。


Cookie和Session的使用

  1. <?php
  2. setcookie('Website', 'C语言中文网');
  3. setcookie('Title', 'Cookie', time()+3600); // 设置 Cookie 1 小时后过期
  4. setcookie('Url', 'http://c.biancheng.net/php/', time()+3600, '/', 'c.biancheng.net', false);
  5. echo '<pre>';
  6. print_r($_COOKIE);
  7. ?>
  1. <?php
  2. if(!isset($_COOKIE['time'])){ //检测 Cookie 文件是否存在
  3. setcookie('time',date('Y-m-d H:i:s')); //设置一个 Cookie 变量
  4. echo "第一次访问<br>";
  5. }else{
  6. echo "上次访问的时间为:".$_COOKIE['time'].'<br>'; //输出上次访问网站的时间
  7. setcookie('time',date('Y-m-d H:i:s'),time()+60); //设置保存 Cookie 失效的时间的变量
  8. }
  9. echo "本次访问的时间为:".date('Y-m-d H:i:s'); //输出当前的访问时间
  10. ?>
  1. <?php
  2. echo '<pre>';
  3. if(!isset($_COOKIE['url']) && !isset($_COOKIE['name'])){
  4. setcookie('url','http://c.biancheng.net/php/');
  5. setcookie('name','C语言中文网');
  6. echo '首次运行,设置 url、name 两个 Cookie 的值';
  7. }else if(isset($_COOKIE['url'])){
  8. echo '查看 Cookie 的值,如下所示:<br>';
  9. print_r($_COOKIE);
  10. echo '清除 url 的值';
  11. setcookie('url','');
  12. }else{
  13. print_r($_COOKIE);
  14. }
  15. ?>
  1. <?php
  2. session_start([
  3. 'cookie_lifetime' => 60*60*24, // 设置 cookie 的有效时间为 1 天
  4. ]);
  5. echo 'Session ID 为:'.$_COOKIE['PHPSESSID'];
  6. ?>
  1. <?php
  2. session_start();
  3. $str = 'C语言中文网';
  4. $arr = ['Session','$_SESSION'];
  5. $_SESSION['name'] = $str;
  6. $_SESSION['url'] = 'http://c.biancheng.net/php/';
  7. $_SESSION['title'] = $arr;
  8. foreach ($_SESSION as $key => $value) {
  9. if(is_array($value)){
  10. echo $key.':';
  11. print_r($value);
  12. }else{
  13. echo $key.' = '.$value.'<br>';
  14. }
  15. }
  16. ?>
  1. <?php
  2. session_start();
  3. echo '<pre>';
  4. $str = 'C语言中文网';
  5. $arr = ['删除 Session','$_SESSION'];
  6. $_SESSION['name'] = $str;
  7. $_SESSION['url'] = 'http://c.biancheng.net/php/';
  8. $_SESSION['title'] = $arr;
  9. echo '定义一个 Session,如下所示:<br>';
  10. print_r($_SESSION);
  11. echo '删除 Session 中名为 title 的元素:<br>';
  12. unset($_SESSION['title']);
  13. print_r($_SESSION);
  14. ?>


异常处理:

PHP 中提供了内置的异常处理类——Exception,该类中常用的成员函数如下所示:

  • getMessage():返回异常的消息内容;
  • getCode():以数字形式返回异常代码;
  • getFile():返回发生异常的文件名;
  • getLine():返回发生错误的代码行号;
  • getTrace():返回 backtrace() 数组;
  • getTraceAsString():返回已格式化成字符串的、由函数 getTrace() 函数所产生的信息;
  • __toString():产生异常的字符串信息,它可以重载。注意,该函数最前部是两个下划线。
  1. Exception {
  2. /* 属性 */
  3. protected string $message ;
  4. protected int $code ;
  5. protected string $file ;
  6. protected int $line ;
  7. /* 方法 */
  8. public __construct ([ string $message = "" [, int $code = 0 [, Throwable $previous = NULL ]]] )
  9. final public getMessage ( void ) : string
  10. final public getPrevious ( void ) : Throwable
  11. final public getCode ( void ) : int
  12. final public getFile ( void ) : string
  13. final public getLine ( void ) : int
  14. final public getTrace ( void ) : array
  15. final public getTraceAsString ( void ) : string
  16. public __toString ( void ) : string
  17. final private __clone ( void ) : void
  18. }
  1. <?php
  2. try{
  3. $err = '抛出异常信息,并跳出 try 语句块';
  4. if(is_dir('./test')){
  5. echo '这里是一些可能会发生异常的代码';
  6. }else{
  7. throw new Exception($err, 12345); // 抛出异常
  8. }
  9. echo '上面抛出异常的话,这行代码将不会执行,转而执行 catch 中的代码。<br>';
  10. }catch(Exception $e){
  11. echo '捕获异常:'.$e->getMessage().'<br>错误代码:'.$e->getCode().'<br>';
  12. }
  13. echo '继续执行 try catch 语句之外的代码';
  14. ?>

error_reporting(0)

PHP 中定义了许多不同级别的错误,如使用了未定义的变量会报出一个 notice 级别的错误,实例化一个未定义的类则会报出 fatal error 级别的错误。

可在 php.ini 配置文件中定义错误级别,如error_reporting=E_ALL|E_STRICT会设置最严格的错误级别,在代码中也可使用error_reporting(E_ALL)等来定义错误级别。

PHP 中的错误类型如下表所示。

常量 说明
1 E_ERROR 致命的运行时错误,一般是不可恢复的情况,例如内存分配导致的问题,后果是导致脚本终止、不再继续运行。
2 E_WARNING 运行时警告(非致命错误),仅给出提示信息,但是脚本不会终止运行。
4 E_PARSE 编译时语法解析错误,仅由分析器产生。
8 E_NOTICE 运行时通知,表示脚本遇到可能会表现为错误的情况,但是在可以正常运行的脚本里面也可能会有类似的通知。
16 E_CORE_ERROR 在 PHP 初始化启动过程中发生的致命错误,类似 E_ERROR,但是是由 PHP 引擎核心产生的。
32 E_CORE_WARNING PHP 初始化启动过程中发生的警告(非致命错误),类似 E_WARNING ,但是是由 PHP 引擎核心产生的。
64 E_COMPILE_ERROR 致命编译时错误,类似 E_ERROR,但是是由 Zend 脚本引擎产生的。
128 E_COMPILE_WARNING 编译时警告(非致命错误),类似 E_WARNING,但是是由 Zend 脚本引擎产生的。
256 E_USER_ERROR 用户产生的错误信息,类似 E_ERROR,但是是由用户自己在代码中使用 PHP 函数 trigger_error() 来产生的。
512 E_USER_WARNING 用户产生的警告信息,类似 E_WARNING,但是是由用户自己在代码中使用 PHP 函数 trigger_error() 来产生的。
1024 E_USER_NOTICE 用户产生的通知信息,类似 E_NOTICE,但是是由用户自己在代码中使用 PHP 函数 trigger_error() 来产生的。
1024 E_STRICT 启用 PHP 对代码的修改建议,以确保代码具有最佳的互操作性和向前兼容性。
2048 E_RECOVERABLE_ERROR 可被捕捉的致命错误,表示发生了一个可能非常危险的错误,但是还没有导致 PHP 引擎处于不稳定的状态。如果该错误没有被用户自定义句柄捕获,将成为一个 E_ERROR,从而使脚本终止运行。
8192 E_DEPRECATED 运行时通知,启用后将会对在未来版本中可能无法正常工作的代码给出警告。
16384 E_USER_DEPRECATED 用户产生的警告信息,类似 E_DEPRECATED,但是是由用户自己在代码中使用 PHP 函数 trigger_error() 来产生的。
30719 E_ALL E_STRICT 除外的所有错误和警告信息。

在正式环境中,可能会发生各种未知的错误,这时可以定义 error_reporting(0),这样就能屏蔽错误了,用户不会在页面看到错误信息,而当排查错误时,依然可到 PHP 的执行错误日志中寻找相关信息。

  1. <?php
  2. error_reporting(0);
  3. $link = mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db") or die('数据库连接失败!');
  4. ?>

display_errors

  1. ; This directive controls whether or not and where PHP will output errors,
  2. ; notices and warnings too. Error output is very useful during development, but
  3. ; it could be very dangerous in production environments. Depending on the code
  4. ; which is triggering the error, sensitive information could potentially leak
  5. ; out of your application such as database usernames and passwords or worse.
  6. ; For production environments, we recommend logging errors rather than
  7. ; sending them to STDOUT.
  8. ; Possible Values:
  9. ; Off = Do not display any errors
  10. ; stderr = Display errors to STDERR (affects only CGI/CLI binaries!)
  11. ; On or stdout = Display errors to STDOUT
  12. ; Default Value: On
  13. ; Development Value: On
  14. ; Production Value: Off
  15. ; http://php.net/display-errors
  16. display_errors = Off


其他:

set_time_limit(0)

首先,set_time_limit()函数的作用是控制PHP页面的运行时间,当我们程序中的某个PHP页面有大量数据时,就需要使用该函数,比如说循环某段程序一百万次或者从数据库读取大量数据的时候。 set_time_limit()接受一个整数参数,该整数代表页面的最大执行时间,时间是以秒为单位的。默认的执行时间是30秒,当将秒数设为0 的时候,表示长时间持续运行。如: set_time_limit(300)—表示页面的最大执行时间为300秒。 set_time_limit(0)—-表示页面将持续运行。

urlencode

  1. <?php
  2. $str = 'http://www.feiniaomy.com';
  3. echo urlencode($str);
  4. ?>
  5. http%3A%2F%2Fwww.feiniaomy.com

json_encode

  1. $array = [
  2. 'a' => 'he',
  3. 'b' => 'llo',
  4. 'c' => 'world',
  5. 'd' => [
  6. 1 => 'a',
  7. 2 => 'b',
  8. 3 => 'c'
  9. ]
  10. ];
  11. // 参数为普通数组 string(62) "{"a":"he","b":"llo","c":"world","d":{"1":"a","2":"b","3":"c"}}"
  12. var_dump(json_encode($array));
  13. // 将数组先转为json格式字符串,再使用json_decode转为对象,之后详细研究json_decode的参数,使用等
  14. $obj = json_decode(json_encode($array));
  15. // 参数为对象 string(62) "{"a":"he","b":"llo","c":"world","d":{"1":"a","2":"b","3":"c"}}"
  16. var_dump(json_encode($obj));
  17. // 参数为字符串
  18. // string(90) ""{\"a\":\"he\",\"b\":\"llo\",\"c\":\"world\",\"d\":{\"1\":\"a\",\"2\":\"b\",\"3\":\"c\"}}""
  19. var_dump(json_encode(json_encode($obj)));
  20. var_dump(json_encode('h"e\l/l[o')); // string(14) ""h\"e\\l\/l[o""
  21. var_dump('h"e\l/l[o'); //string(9) "h"e\l/l[o"


PHP基础知识-语法

  • PHP的注释

    每行必须单独使用注释标记,称为单行注释。它用于进行简短说明。声明单行注释有两种方式,分别是使用“#”和反斜杠“//”。 多行注释用于注释多行内容,经常用于多行文本的注释。注释的内容需要包含在(//)中,以“/”开头,以“/”结尾。

  • 类型转换:intval()
  • 表达式?:
  • 区分=、与= 及!=
  • True与false的等价条件
  • 变量名称的合法性
  • 变量的变量$$a
  • 变量的isset()和empty()
  • 逻辑判断||、&&
  • 运算符之码PHP知识考点 - 图2a
  • 运算符+= 与 .=
  • 运算符%
  • 预定义变量之码PHP知识考点 - 图3GET、之码PHP知识考点 - 图4SESSION、$_REQUEST
  • 预定义常量FILE 、TRUE、 FALSE、 NULL

    条件语句与循环语句:

  • for

  • if-else
  • switch
  • while


    函数基础:

  • 打印函数:echo、print_r()、var_dump()

  • 终止函数:exit()、die();
  • 包含文件:include()、require()、require_once()及其区别
  • 变量作用域:$global
  • 变量引用:&$a

数据库(主要MySQL)基础知识

Mysql的安装与使用(my.cnf)

  • 3306端口
  • 最高级用户root
    常用SQL语句:
  • 创建数据库和删除数据库create database xxx;drop database xxx;

  • 创建表和删除表create table xxx;drop table xxx;

  • 清空表
  • 导入SQL:source命令
  • 增、删、改
  • 排序order by, asc desc
  • limit
  • 多表查询

    数据库结构设计:

  • MySQL的数据类型

  • 字段:主键、索引、Auto_Increment
    phpMyAdmin的使用

服务器相关知识(操作系统、软件、网络端口等)

Apache的安装(httpd.conf)

  • 80端口
  • ServerRoot:服务器根目录,也就是Apache的安装目录,其他的目录配置若是使用相对路径,都是相对于服务器根目录的。
  • DocumentRoot 网站的根目录,也就是放置网站文件的地方。
  • DerectoryIndex 当客户端请求一个目录时寻找的资源列表,

    配置示例: DirectoryIndex index.php index.htm index.html (服务器将返回最先找到的那一个)

  • Options Indexes

  • AllowOverride (.htaccess)

科目二
考察写片段程序的能力,考点如下:

条件语句(if, switch等等)

image.png
循环(for, while, 多重循环等等)

  1. #通过 for 循环来计算 100 的阶乘
  2. <?php
  3. $sum = 1;
  4. for ($i = 1; $i <= 100; $i++) {
  5. $sum *= $i;
  6. }
  7. echo '100! = '.$sum;
  8. ?>
  1. //使用 while 循环打印数字 1~10,代码如下所示
  2. <?php
  3. $num = 1;
  4. while($num <= 10) {
  5. echo $num.($num == 10 ? '' : ', ');
  6. $num++;
  7. }
  8. ?>
  1. #使用 do while 循环计算 1~50 之间整数的和。
  2. <?php
  3. $sum = 0;
  4. $i = 1;
  5. do {
  6. $sum += $i;
  7. $i++;
  8. } while ($i <= 50);
  9. echo '1 + 2 + 3 +...+ 49 + 50 = '. $sum;
  10. ?>


字符串(拼接、拆分成数组、查找位置、替换等)

  1. <?php
  2. $a = 'C语言中文网';
  3. $b = 'http://c.biancheng.net/<br>';
  4. $c = '一个在线学习编程的网站';
  5. $str = '欢迎访问“'.$a.'”<br>'.'网址:'.$b.$c;
  6. echo $str;
  7. ?>


数组(定义、多维数组、排序等等)

输出HTML(PHP和HTML混排)

PHP时间函数

  1. <?php
  2. $day1 = '1970-01-01';
  3. $day2 = '2017-03-21';
  4. $weekArr = ['日','一','二','三','四','五','六'];
  5. function diffBetweenTwoDays ($day1, $day2)
  6. {
  7. $second1 = strtotime($day1);
  8. $second2 = strtotime($day2);
  9. if ($second1 < $second2) {
  10. $tmp = $second2;
  11. $second2 = $second1;
  12. $second1 = $tmp;
  13. }
  14. return ($second1 - $second2) / 86400;
  15. }
  16. //这里设置1970-01-01在星期四,所以计算出天数差要加4
  17. $deffdays =(diffBetweenTwoDays ($day1, $day2)+4)%7;
  18. echo '2017-03-21是'.'星期'.$weekArr[$deffdays];


基本算法
正则表达式
函数编写
PHP类(定义、调用)

  1. <?php
  2. class person {
  3. private $name;
  4. private $height;
  5. private $old;
  6. public function __construct($name,$height,$old){
  7. $this->name =$name;
  8. $this->height = $height;
  9. $this->old =$old;
  10. }
  11. public function get_name(){
  12. return $this->name;
  13. }
  14. public function get_height(){
  15. return $this->height;
  16. }
  17. public function get_old(){
  18. return $this->old;
  19. }
  20. }
  21. $person = new person('张三','156',45);
  22. echo $person->get_name().$person->get_height().$person->get_old();


科目三
考察项目实际综合能力,考察点如下:
是否能正确的完成项目需求
是否有合适的理解能力和沟通能力
能否正确的使用ZhimaPHP
能否正确的设计数据库
能否解决Bug
代码是否符合平台规范