[TOC]

PHP的作用收集表单数据、生成动态网页、进行字符串处理、动态输出图像、编写数据库支持的网页、会话跟踪控制
开始<?php 即系统会自动识别并执行
结束 ?> 结束标志即结束php代码
php执行只与<?php ?>内的内容有关
1)由于php是脚本文件所以说php是不需要运行的
2)因为是脚本文件所以php是可以塞入html的任何地方, 即一个html文件可以放多个php
3)php不能因为是脚本文件就随便开个文件夹,php必须在.php格式中运行的
4)php可以嵌入其他语言中所以说网页秀不秀看其他的啦
1.php中间内容需用分隔符’ ;’ 来隔离
2.php注释即 // 和 //
1.变量
PHP中有8种变量类型:
boolean(布尔型),它保存一个true值或false值,其中true和false是PHP的内部关键字,设定一个布尔型的变量,只需要将true或者false赋值给变量即可。
integer,float/double,
string(字符串型):有三种定义字符串的方式:单引号(’),双引号(”),定界符(<<<)。在定义字符串时如果没有特别的要求,尽量使用单引号。
array,object,resource
null (空值),表示没有为该变量设置任何值。
被赋予空值的情况有三种:还没有赋任何值,被复制null,被unset()函数处理过的变量。注:unset()函数用来销毁指定的变量。
PHP中变量都是以$符号开头,无论是声明变量还是调用变量,都应该使用$.
变量的声明和使用
1.直接赋值
2.变量间的赋值:是指赋值后两个变量使用各自的内存,互不干扰
例:$string1=”mingribook”;
$string2=$string1;
$string1=”mrbccd”;
echo $string1;
运行结果:mingribook
3.引用赋值:用不同的名字访问同一个变量内容,当改变其中一个变量的值时,另一个也跟着变化。使用&符号来引用。
$i=”m”;
$j=&$i;
$i=”b”;
echo $i;
echo “
“;
echo $j;
运行结果是
b
b
变量作用域:
局部变量:在函数内部定义的变量
全局变量: 在所有函数外部定义的变量,拥有全局作用域。除了函数外,全局变量可以被脚本中的任何部分访问,要在一个函数中访问一个全局变量,需要使用 global 关键字。
例如:
<?php $x=5;
$y=10;
function myTest() {
global $x,$y;
$y=$x+$y; }
myTest();
echo $y; // 输出 15 ?>
静态变量: 当一个函数完成时,它的所有变量通常都会被删除。然而,有时候您希望某个局部变量不要被删除。要做到这一点,请在第一次声明变量时使用
static* 关键字:而一般变量是在函数调用结束后,其存储的数据值将被清除,所占的内存空间被释放。
数据类型转换
1.自动转换类型
通常只有四种标量类型(integer、float、string、boolean)和 NULL 才会在运算中自动转换类型。注意,自动类型转换并不会改变变量本身的类型,改变的仅是这些变量的求值方式。
2.强制类型转换
只需要在变量前加上用括号括起来的类型名称即可。
例如:转换为浮点型(float)$str
如果需要改变变量本身的类型可以使用 settype() 函数来完成,格式如下:
settype(mixed var, string type)
其中,$var 为要转换的变量;$type 为要转换的类型
例如:settype($str,’integer’)
常量
在PHP中是通过define()函数来定义常量的
语法为:define(string $name, mixed $value [, bool $case_insensitive = false])
第一个参数为字符串类型的常量名,第二个参数为常量的值或是表达式,第三个参数是可选的。
除了可以使用 define() 函数之外,还可以使用 const 关键字来定义常量,使用const 关键字声明常量使得代码简单易读。
const 常量名=常量值
获取常量有两种方法:一种是使用常量名直接获取值,另一种是使用constant()函数。
语法格式如下:例如:constant($name)
运算符
var_dump()函数是系统函数,作用是输出变量的相关信息。
条件运算符:(?:),也称三目运算符
例如:
<?php
$value=100;
echo($value==true)?”条件运算” : “没有该值”
//如果正确输出条件运算,错误输出没有该值
?>
运行结果为:条件运算
算数运算符:+,-,
,/,%
字符串运算符:.将两个字符串连接起来
递增或递减运算符:++,—
位运算符:是指对二进制位从低位到高位对齐后进行运算。
逻辑运算符:&&或and(逻辑与));||或or(逻辑或);xor(逻辑异或)一真一假时则真;!(逻辑非)
优先级:&&>=>and
||>=>or
比较运算符:<,>,=,<=,>=,==(相等),===(恒等)数值相等,类型也相等,!=,!===
如果比较结果为真,则返回true,如果比较结果为假,则返回false
2.函数
1.定义和调用函数
语法格式为:
function fun_name($str1,$str2,…….$strn)
{
fun_body;
}
function是声明自定义函数时必须使用到的关键字,fun_name为名称,$str1,$str2,…….$strn为参数
2.在函数间传递参数
1.按值传递
2.按引用传递,在传值基础上加&即可
3.默认参数(可选参数)方式。可以指定一个参数为可选参数,将它放在参数列表末尾,并且给他之定义个默认值。
3.从函数中返回值:使用关键字return,return将函数的值返回给函数的调用者,如果在全局作用域内使用return,那么将终止脚本的运行
4.变量函数
3.条件控制语句
1.if语句
2.if….else语句
3. elseif语句
4.switch语句
5.while语句
6.do….while语句
7.for循环语句
8.foreach语句:只能用于数组,遍历数组$array,每次循环时将当前数组中的值赋给$value(或$key和$value),同时,数组指针向后移动直至遍历结束。
foreach ($array as $value)
语句

foreach ($array as $key => $value)
语句
$value 的引用仅在被遍历的数组可以被引用时才可用(例如是个变量)。
4.跳转语句
1.break语句
break $num中$num可以指定跳出几层循环
2.continue语句:终止本次循环,进入下次循环。
5.字符串

1.使用单引号或双引号定义字符串

单引号串和双引号串在PHP中的处理是不相同的。双引号串中的内容可以被解释而且替换,而单引号串中的内容总被认为是普通字符。例如:
$foo = 2;
echo “foo is $foo”; // 打印结果: foo is 2
echo ‘foo is $foo’; // 打印结果: foo is $foo
echo “foo is $foo\n”; // 打印结果: foo is 2 (同时换行)
echo ‘foo is $foo\n’; // 打印结果: foo is $foo\n
PHP 会解析双引号中的变量,而不会解析单引号中的变量。也就是说,如果使用单引号定义的字符串中出现变量,在输出时变量会被原样输出,不会解析成变量的值。而如果使用双引号定义的字符串中存在变量,在输出时变量会被解析为具体的值。
单引号串可以用在其他任何地方,脚本中使用单引号串处理速度会更快些,
在双引号定义的字符串中能使用的转义字符如下表所示:

转义字符 说明 转义字符 说明
\n 换行 \$ 代表 $ 本身
\r 回车 \\ 代表反斜线 \ 本身
\t 水平制表符,一个缩进 \‘ 单引号本身
\v 垂直制表符 \“ 代表双引号本身

2.使用定界符定义字符串(<<<)

定界符用于定义格式化的大文本,格式化直至文本中的格式将被保留,所以文本中不需要使用转义字符,在使用时后接一个标识符,然后格式化文本(即字符串),最后是同样的标识符结束字符串。结束标识符必须从行的第一列开始。
格式为:
<<格式化文本
str
符号“<<<”是关键字,必须使用,str是用户自定义的标识符,前后的标识符名称必须完全相同。
!!!定界符中的字符串支持单引号双引号,无须转义,并支持字符变量替换。

3.字符串操作

1.去除字符串首尾空格和特殊字符
trim () 函数 来去除字符串左右两边的空格和特殊字符
格式:trim(string str,[string charlist]);
string必需,规定要检查的字符串。
不指定charlist参数时trim()函数去除的字符:

可选。规定从字符串中删除哪些字符。如果被省略,则移除以下所有字符:
- “\0” - NULL
- “\t” - 制表符
- “\n” - 换行
- “\x0B” - 垂直制表符
- “\r” - 回车
- “ “ - 空格

ltrim () 函数去除字符串左边的空格和特殊字符
rtrim () 函数去除字符串右边的空格和特殊字符
2.转义,还原字符串数据

3.获取字符串的长度strlen() 函数

汉字占两个字符,数字,英文,小数点,下划线,空格占一个字符。

4.截取字符串

5.比较字符串

6.检索字符串

7.替换字符串

8.格式化字符串

9.分割,合成字符串

6.正则表达式
1.行定位符:(^和$)
2.单词分界符(\b和\B)
\b表示要查找的字串为一个完整的单词
\B它匹配的字符串不是一个完整的字串,
!!!print_r函数输出的是一个数组列,而echo语句 输出的是数组中的元素。
7.数组:数字索引数组和关联数组
在 PHP 中, array() 函数用于创建数组
array(mixed)
mixed的语法是key=>value,多个mixed可以用逗号隔开,分别定义了索引和值
在 PHP 中,有三种数组类型:

  • 索引数组 - 带有数字索引的数组
  • 关联数组 - 带有指定键的数组
  • 多维数组 - 包含一个或多个数组的数组

    PHP 索引数组

    有两种创建索引数组的方法:
    索引是自动分配的(索引从 0 开始):
    $cars=array(“porsche”,”BMW”,”Volvo”);
    或者也可以手动分配索引:
    $cars[0]=”porsche”; $cars[1]=”BMW”; $cars[2]=”Volvo”;

    PHP 关联数组

    关联数组是使用您分配给数组的指定键的数组。
    有两种创建关联数组的方法:
    $age=array(“Bill”=>”35”,”Steve”=>”37”,”Elon”=>”43”);
    或者:
    $age[‘Bill’]=”63”; $age[‘Steve’]=”56”; $age[‘Elon’]=”47”;
    1.一维数组
    这里有两种创建数值数组的方法:
    自动分配 ID 键(ID 键总是从 0 开始):
    $cars=array(“Volvo”,”BMW”,”Toyota”);
    人工分配 ID 键:
    $cars[0]=”Volvo”;
    $cars[1]=”BMW”;
    $cars[2]=”Toyota”;
    2.二维数组:一个数组的元素是数组,则称这个数组是二维数组
    3.遍历数组:
    使用foreach结构遍历数组
    例如:
    <?php
    $age=array(“Peter”=>”35”,”Ben”=>”37”,”Joe”=>”43”);
    foreach($age as $link)
    {echo $link;
    echo”
    “; }
    ?>上述代码中,PHP为$age的每个元素依次执行循环体(echo语句)一次,将$link赋值给当前各元素的值。
    运行结果
    35
    37
    43
    使用list()函数遍历数组,与array()函数类似,这不是真正的函数,而是语言结构。
    格式:void list(被赋值的变量名称)
    注意:list() 仅能用于索引数组,并且索引要从 0 开始
    4.字符串与数组的转换 P126
    1.explode()函数将字符串按指定的字符串或字符separator切开
    explode($separator, $string [, $limit])
    参数说明如下:

  • $separator:用于分割字符串的分隔字符;

  • $string:需要分割的字符串;
  • $limit:可选参数,可以为空,规定要返回数组元素的数目;
    • 如果 $limit 不为空且为正数,则返回的数组最多包含 $limit 个元素,最后的那个元素包含了 $string 的剩余部分;
    • 如果 $limit 不为空且为负数,则返回除了最后的 $limit 个元素外的所有元素;
    • 如果 $limit 为 0,则会被当作 1;
    • 如果 $limit 为空,则表示返回所有数组元素。

如果 $separator 为空字符串””,程序将会提示 Warning,并且 explode() 函数将返回 FALSE;如果 $separator 所包含的值在 $string 中找不到,并且使用了负数的 $limit,则会返回空的 array,否则返回包含 $string 单个元素的数组
例如:
<?php
$str=”时装,休闲,职业装”;
$strs=explode(“,”,$str);
print_r($strs)//如果给出的是 array,将会按照一定格式显示键和元素。object 与数组类似。
print_r() 将把数组的指针移到最后边。
?>
运行结果是Array([0]=>时装 [1]=>休闲 [2]=>职业装)
2.implode()函数将数组连成一个新的字符串
implode($glue, $array) 或者 implode($array)
例如
$arr=[‘C语言中文网’,’PHP教程’,’http://c.biancheng.net/php/','implode()函数','数组转字符串‘];
$str=implode(‘ ‘,$arr);
echo$str.’
‘;
运行结果:
C语言中文网 PHP教程 http://c.biancheng.net/php/ implode()函数 数组转字符串
!!!其中,$glue 用来设置一个字符串,表示使用 $glue 将数组每个元素连接 在一起,默认情况下 $glue 为空字符串;$array 为需要转换的数组。

获得数组的长度 - count() 函数

count() 函数用于返回数组的长度(元素数):
格式为:int count(mixed array,[,int mode])
array:必要参数,输入的数组
mode:可选参数。此参数的默认值为0.
查询数组中的指定元素
array_search()
获取数组中最后一个元素
array_pop()
向数组中添加元素
array_push()
删除数组中重复元素
array_unique()
8. PHP与web页面交互
[提交注册信息时需要使用表单。当用户填写完信息后做提交操作,于是将表单的内容从客户端的浏览器传送到服务器端,经过服务器上的PHP程序进行处理后,再将用户所需要的信息传递回客户端的浏览器上,从而获得用户信息,即PHP与web表单实现交互]
GET方法是将表单内容附在URL地址后面发送;POST方法是将表单中的信息作为一个数巨快发送到服务器上的处理程序中,在浏览器的地址栏不显示提交的信息。method属性默认方法为GET方法。
http://url?name1=value1&name2=value2
<!DOCTYPEhtml>


//使用form表单时,必须指定其行为属性action, 它指定表单在提交时将内容发往何处进行处理。
名字:
年龄:


欢迎 <?php echo$_POST[“fname”]; ?>!

你的年龄是 <?phpecho$_POST[“age”]; ?> 岁。


1.获取表单数据的两种方法
1.使用POST方法提交表单:POST方法可以没有限制的传递数据到服务器,所有提交的信息在后台传输,用户在浏览器端是看不到这一过程的,安全性高。所以POST比较适合发送一个保密的或者容量大的数据到服务器。
2.使用GET方法提交表单:由于GET方法提交的数据是附加到URL上发送的,因此,在URL的地址栏中会显示“URL+用户传递的参数”
GET方法的传参格式如下:
http://url?name1=value1&name2=value2
2.php参数传递的常用方法
1.$_POST[]全局变量
在 PHP 中,预定义的 $_POST 变量用于收集来自 method=”post” 的表单中的值。
从带有 POST 方法的表单发送的信息,对任何人都是不可见的(不会显示在浏览器的地址栏),并且对发送信息的量也没有限制。
例如:<?php
$user=$_POST[“user”];//应用$_POST[]全局变量获取表单元素中文本框user的值
?>
2.$_GET[]全局变量
在 PHP 中,预定义的 $_GET 变量用于收集来自 method=”get” 的表单中的值。
从带有 GET 方法的表单发送的信息,对任何人都是可见的(会显示在浏览器的地址栏),并且对发送信息的量也有限制。
注释:所以在发送密码或其他敏感信息时,不应该使用这个方法!
然而,正因为变量显示在 URL 中,因此可以在收藏夹中收藏该页面。在某些情况下,这是很有用的。
注释:HTTP GET 方法不适合大型的变量值。它的值是不能超过 2000 个字符的。
格式为:$GET[name]
3.$_SESSION[]变量
例如:$user=$_SESSION[“user”]使用$_SESSION[]传参的方法获取的变量值,保存后任何界面都可以使用,但这种方法很好系统资源,建议读者慎重使用。
3.在web页中嵌入PHP脚本 :法1)直接在HTML标记中添加PHP标记符<?php?>,写入PHP脚本。2)对表单元素的value属性进行赋值
4.在PHP中获取表单数据
获取文本框,密码域,隐藏域,按钮,文本域的值
<?php
if(isset($_POST[“submit”] )&& $_POST[“submit”]==”登录”)
echo”你输入的用户名为:”.$_POST[‘user’].”密码为:”.$_POST[‘pwd’];
?>
获取单选按钮的值
获取复选框的值
获取下拉列表框/菜单列表的值
获取文本域的值:文本域的作用是实现文件或图片的上传。文本域有一个特有的属性accept,用于指定上传的文件类型,如果需要限制上传文件的类型,则可以通过设置该属性来完成。
5.对URL传递的参数进行编/解码 P152
9.JavaScript
Javascript是脚本编程语言

1.javascript主要有6种数据类型

JavaScript 中的数据类型可以分为两种类型:

  • 基本数据类型(值类型):字符串(String)、数字(Number)、布尔(Boolean)、空(Null)、未定义(Undefined)、Symbol;
  • 引用数据类型:对象(Object)、数组(Array)、函数(Function)。

    2.javascript变量

  • 变量名中可以包含数字、字母、下划线_、美元符号$;

  • 变量名中不能出现汉字;
  • 变量名中不能包含空格;
  • 变量名不能是 JavaScript 中的关键字、保留字;
  • 变量名不能以数字开头,即第一个字符不能为数字。

合法的标识符应该注意以下强制规则:

  • 第一个字符必须是字母、下划线(_)或美元符号($)。
  • 除了第一个字符外,其他位置可以使用 Unicode 字符。一般建议仅使用 ASCII 编码的字母,不建议使用双字节的字符。
  • 不能与 JavaScript 关键字、保留字重名。
  • 可以使用 Unicode 转义序列。例如,字符 a 可以使用“\u0061”表示。

在 JavaScript 中,定义变量需要使用var关键字,语法格式如下:var 变量名

3.JavaScript 中的注释与 C/C++JavaPHP 等语言中注释的定义方式相同

JavaScript 还能够识别 HTML 注释的开始符JavaScript 则不能识别,因此若要使用 HTML 注释来注释 JavaScript 代码,应该使用 JavaScript 的单行注释将 HTML 注释的结束符—>注释掉,例如//—>。

4.自定义函数

函数声明需要以 function 关键字开头
例如:
functiongetSum(num1, num2)
{
return num1 + num2;
}
var sum1 =getSum(7,12);// 函数返回值为:19
var sum2 =getSum(-5,33);// 函数返回值为:28
提示:定义,当函数运行到 return 语句时会立即停止运行,并返回到调用函数的地方继续执行。
!!!同一个页面中不能定义名称相同的函数。

5.Javascript流程控制语句

if 语句
if else 语句
switch语句
while语句
for循环语句
break语句
continue语句

6.alert() 函数

alert() 函数可以在浏览器中弹出一个提示框,在提示框中我们可以定义要输出的内容,语法格式如下:
alert(message);
其中 message 为要在提示框中输出的内容,需要注意的是,alert() 中只能输出文本内容。
alert() 函数是 window 对象下的一个函数,所以有时为了代码更严谨,我们也可以使用 window.alert() 的形式来调用 alert() 函数。

7.调用javascript脚本

1.在HTML中嵌入JavaScript脚本
使用
把上述语句放在HTML的与之间,也可放在与之间。
写在标记中间的一般是函数和事件处理函数,写在标记中间的是网页内容或调用函数的程序块。
在HTML中通过”javascript:”可以调用Javascript
2.引用外部的javaScript文件
引用外部的javaScript文件,是指在将javaScript写入另一个文件,以.js为后缀保留该文件,然后通过
src属性不但可以调用同一服务器上的js文件,还可以通过指定路径来调用其他服务器上的js文件。
9.Cookie与Session

1.Cookie 是什么?

cookie 常用于识别用户。cookie 是一种服务器留在用户计算机上的小文件。每当同一台计算机通过浏览器请求页面时,这台计算机将会发送 cookie。通过 PHP,您能够创建并取回 cookie 的值。

2.如何创建 Cookie?

setcookie() 函数用于设置 cookie。
注释:setcookie() 函数必须位于 标签之前。
格式:
setcookie(name, value, expire, path, domain);
name是cookie变量的名,可以通过$_COOKIE[“cookiename”]调用变量名为cookiename的Cookie
value是cookie变量的值
expire是Cookie的失效时间,可以用time()获取,单位为秒
path是Cookie在服务器端的有效路径
domain是Cookie有效的域名
secure指明Cookie是否仅通过安全的HTTPS,值为0或1

3.如何取回 Cookie 的值?

PHP 的 $_COOKIE 变量用于取回 cookie 的值。
在下面的实例中,我们取回了名为 “user” 的 cookie 的值,并把它显示在了页面上:
<?php
// 输出 cookie 值
echo $_COOKIE[“user”];
// 查看所有 cookie
print_r($_COOKIE);
?>

4.如何删除 Cookie?

当删除 cookie 时,您应当使过期日期变更为过去的时间点。
使用setcookie()函数删除Cookie
需要将函数中的第二个参数设置成空值,将第三个参数的过期时间设置成小于系统的当前时间即可
删除的实例:
<?php
// 设置 cookie 过期时间为过去 1 小时
setcookie(“user”, “”, time()-3600);
?>


5.手动删除Cookie

PHP session 变量用于存储关于用户会话(session)的信息,或者更改用户会话(session)的设置。Session 变量存储单一用户的信息,并且对于应用程序中的所有页面都是可用的。

6.PHP Session 变量

session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统所经过的时间,因此,session实际上是一个特定的时间概念。
通过session可以记录用户的有关信息。
PHP session 变量用于存储关于用户会话(session)的信息,或者更改用户会话(session)的设置。Session 变量存储单一用户的信息,并且对于应用程序中的所有页面都是可用的。
您在计算机上操作某个应用程序时,您打开它,做些更改,然后关闭它。这很像一次对话(Session)。计算机知道您是谁。它清楚您在何时打开和关闭应用程序。然而,在因特网上问题出现了:由于 HTTP 地址无法保持状态,Web 服务器并不知道您是谁以及您做了什么。
PHP session 解决了这个问题,它通过在服务器上存储用户信息以便随后使用(比如用户名称、购买商品等)。然而,会话信息是临时的,在用户离开网站后将被删除。如果您需要永久存储信息,可以把数据存储在数据库中。
Session 的工作机制是:为每个访客创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,或者通过 URL 进行传导。

(1.)启动 PHP Session

在您把用户信息存储到 PHP session 中之前,首先必须启动会话。
注释:session_start() 函数必须位于 标签之前:
<?php session_start();
?>



(2.)存储 Session 变量

会话变量被启动后,全部保存在 数组$_SESSION 。通过数组$_SESSION 创建一个会话变量很容易,只需要直接给该数组添加一个元素即可
<?phpsession_start();
// 存储 session 数据
$_SESSION[‘views’]=1;
?>

(3)使用会话

首先需要判断会话变量是否已经有一个会话id存在,如果不存在,就创建一个,并且使其能够通过全局数组$_SESSION 进行访问。如果存在,就将这个已注册的会话变量载入以供用户使用

(4)删除 Session

如果您希望删除某些 session 数据,可以使用 unset() 或 session_destroy() 函数。
unset() 函数用于释放指定的 session 变量:
<?phpsession_start();
if(isset($_SESSION[‘views’]))
{unset($_SESSION[‘views’]); }
?>
如果想一次销毁所有的会话变量也可以将一个空的数组赋给$_SESSION
您也可以通过调用 session_destroy() 函数彻底销毁 session:
<?php
session_destroy();
?>

(5)session的高级应用

1,Session 临时文件
在服务器中,如果将用户所有的Session都保存到临时目录中,会降低服务器的安全性和效率。打开服务器存储的站点会非常的慢。
使用PHP函数session_save_path()函数存储Session临时文件,可以缓解因临时文件的存储导致的服务器效率降低和站点打开缓慢的问题。
!!!注意
session_save_path() 必须在session_start() 之前执行。
2,Session 缓存
(1)Session 缓存是将网页中的内容临时存储到IE客户端的Temporary INternet Files文件夹,并且可以设置缓存的时间。
Session的缓存使用的是 session_cache_limiter()函数
格式为:string session_cache_limiter([string cache_limiter]);
其中参数cache_limiter 为public 或private 。同时session不是在服务器端,而是在客户端。在服务器中没有显示。
(2)缓存时间的设置,使用的是函数 session_cache_expire()
格式为:int session_cache_expire([int new_cahche_expire]);
参数new_cahche_expire 是session缓存的时间数字,单位分钟。
!!!注意:
这两个session函数必须在session_start()函数之前执行
3,Session数据库存储 P215不全
Session 是存储在服务器的临时目录中的,当站点的登陆人数较多时,也就意味着服务器中会存储大量的 Session 文件,很占服务器资源。而服务器想要在这众多的 Session 中查找指定的 Session_id 也并不是什么轻松的事情。出现这种情况时该怎么办呢?这时我们可以选择将 Session 存储到数据库中,以减轻服务器的压力。
在php中Session 的数据库存储主要是通过 session_set_save_handler()函数来实现的。
具体语法如下:
bool session_set_save_handler(string open,string close,string read,string write,string destroy,string gc);
参数说明如下:

  • $open(string $savePath, string $sessionName):$open 回调函数类似于类的构造函数,在会话打开的时候会被自动调用。这是自动开始会话或者通过调用 session_start() 手动开始会话之后第一个被调用的回调函数。此回调函数操作成功会返回 TRUE,反之返回 FALSE;找不到session的存储地址,取出变量名称
  • $close():$close 回调函数类似于类的析构函数。 在 $write 回调函数调用之后调用。当调用 session_write_close() 函数之后,也会调用 $close 回调函数。此回调函数操作成功返回 TRUE,反之返回 FALSE;不需要参数,关闭数据库
  • $read(key):读取session键值,key对应session_id.
  • $write(key,data):其中key对应的、设置的session变量
  • $destroy(key):注销session对应的session键值 s
  • $gc($lifetime):清除过期session记录

(1) 封装session_open()函数,代码如下:
function _session_open($save_path,$session_name)
{
global $handle; $handle =mysql_connect(‘localhost’,’root’,’root’)or die(‘数据库连接失败!’);
mysql_select_db(‘db_database11’,$handle)or die(‘数据库不存在’);
return(true);
}
(2)封装session_close()函数,代码如下:
function _session_close()
{
global $handle;
mysql_close($handle);
return(true);
}
(3) 封装 session_read()函数,在函数中设定当前时间的UNIX时间戳,根据$key查找Session名片及内容。代码如下:
(4) 封装session_write()函数,函数设定Session的失效时间,查找到Session的名称及内容,如果查询结果为空。则将页面中Session根据session_id,session_name,失效时间,插入数据库中。如果查询结果不为空,则根据 $key修改数据库中Session存储信息。
(5) 封装session_destroy(),根据$key删除数据库中的Sessin.
(6)封装session_gc(),根据Session的失效时间删除过期的Session
10.面向对象
1.类的定义:用class来定义类

  • − 定义了一件事物的抽象特点。类的定义包含了数据的形式以及对数据的操作。
  • 对象 − 是类的实例
  • 类的变量使用 var 来声明, 变量也可以初始化值。

2.类中的函数叫成员方法 函数和成员方法唯一的区别是:函数实现的是某个独立的功能,而成员方法是实现类中的一个行为
3.类的实例化:类的方法已经添加,接下来就使用方法,首先是对类进行实例化。用new来声明一个对象,然后使用如下格式来调用要使用的方法:
对象名->成员方法
例如:$runoob = new Site;
4.成员变量:
类中的变量,也叫成员变量,定义成员变量格式为:关键字,成员变量名
class Preson
{
public $name; //定义成员变量
public $age;
}
关键字可以使用public,private,protected,static,final中的任意一个。
访问成员变量格式:对象名->成员变量

!!!$this->的作用是调用本类中的成员变量或成员方法,无论是使用$this->还是使用对象名->的格式,后面的变量是没有$符号的。

5.类常量
常量的意思就是不会改变的量,是一个恒值
定义常量,我们用const。

class character{
public $name; //声明一个变量
const SKILLS = ‘哈撒尅’; //声明一个常量
}
$character1 = new character();
$character1->name = “亚索”;
echo ‘我要玩’ . $character1->name . ‘
‘ . ‘技能是’ . character::SKILLS;
运行结果是:我要玩亚索 技能是哈撒尅
6.构造函数和析构函数

构造函数

构造方法是生成对象时自动执行的成员方法,作用就是初始化对象,该方法可以没有参数,也可以有多个参数.构造方法的格式如下:
void construct ([ mixed $args [, $… ]] )
!!!
是两条下划线
注意:
1. clone并不会调用构造函数
2. 如果子类定义了构造函数,则不会隐式调用父类的构造函数
3. 子类的构造函数允许和父类的构造函数参数不一致
4. 如果子类没有定义构造函数,php会尝试寻找父类的构造函数
5. 如果父类没有定义构造函数,使用parent关键字显式调用父类构造函数,会导致致命错误

析构函数

对象被销毁,或某个对象的所有引用被删除是执行的函数

特性

  • 析构函数是在销毁对象时,自动调用,不能显示的调用。
  • 析构函数不能带参数。

    声明定义

    通过 destruct() 来进行声明
    构造方法的格式如下:
    void
    destruct(void)
    7.继承和多态的实现

    继承

    子类继承父类所有的成员变量和方法,包括构造函数,当子类被创建时,PHP会现在子类中查找构造方法,如果子类有自己的构造方法,PHP回先调用子类中的方法,当子类中没有时,再去调用父类中的构造方法,这就是继承。继承可以让我们摆脱重复代码,让功能得以拓展。
    在PHP中,继承也可以用单词extends来概括。extends在子类上使用,可以让子类继承父类中的非私有属性和方法。

    格式如下:

    class subClass extends superClass

    {

    …..

    }

    其中subClass为子类名称,superClass为父类名称

    在子类中可使用parent访问父类的方法。在子类中可重写父类的方法。

  1. <?php
  2. class yourclass{
  3. public $name;
  4. private $age;
  5. protected $weight;
  6. function__construct($name,$age,$weight){
  7. $this->name =$name;
  8. $this->age =$age;
  9. $this->weight =$weight;
  10. }
  11. functionlike(){
  12. echo“I like money. “;
  13. }
  14. functionage(){
  15. echo$this->name .’ is ‘.$this->age .’years old’;
  16. }
  17. protected functionget($key){
  18. return$this->$key;
  19. }
  20. function set($key,$value){
  21. $this->$key=$value;
  22. }
  23. }
  24. class hisclass extends yourclass{
  25. functionget($key){//重写父类方法
  26. echo$this->key;
  27. }
  28. functionwhat(){
  29. parent::like();//子类中访问父类方法
  30. }
  31. functiongetAge(){
  32. $this->age();//调用从父类继承来的方法
  33. }
  34. }
  35. $obj=newhisclass(‘tom’,22,’60kg’);//使用继承自父类的__construct方法初始化实例
  36. $obj->get(‘name’);
  37. $obj->what();
  38. $obj->set(‘age’,33);
  39. $obj->getAge();
  40. ?>

运行结果是:I like money. tom is 33years old
!!!注意:
① 子类只能继承父类的非私有属性。
② 子类继承父类后,相当于将父类的属性和方法copy到子类,可以直接使用$this调用。
③ PHP只能单继承,不支持一个类继承多个类,但是一个类可以进行多层继承。
>>> class Person{}
class Chengnian extends Person{}
class Student extends Chengnian{}
Student类就同时具有了Chengnian类和Person类的属性和方法
同理,在子类继承父类时,首先也要调用父类的构造函数来赋值,实现代码如下:
function construct($name,$age,$school){ parent::construct($name,$age);
$this -> school = $school;
} // 其中name、age属性继承自父类,school属于子类

多态

在PHP中,多态是最常用到的一种特性。所谓多态,是指同一个东西不同形态的展示。在PHP中,我们这样定义多态,一个类被多个子类继承,如果这个类的某个方法在多个子类中表现不同的功能,那么这种行为我们就称其为多态的实现。
多态的实现必须要满足三个条件:
一是子类继承父类
二是子类重写父类的方法
三是父类引用指向子类对象。
例如:
<?php
class animal
{
function can()
{
echo”this function weill be re-write in the children”;
}
}
class cat extends animal
{
function can(){
echo”I can climb”;
}
}
class dog extends animal{
function can(){
echo”I can swim”;
}
}
function test($obj){
$obj->can();
}
test(new cat());//实例化对象
test(new dog());
?>运行结果是I can swim.I can climb.

“$this->”和”::”的使用

1.$this的意思是本身,$this->只可以在类的内部使用
get_class()函数返回对象所属类的名字,如果不是对象,则返回false。
2.操作符”::”可以在没有声明任何实例的情况下访问类中的成员方法或变量。通用格式为:
关键字::变量/方法/常量名
关键字有:
parent:可以调用父类中的变量,方法和常量
self:可以调用当前类的静态变量和常量
类名:可以调用本类中的变量,常量和方法。

public(共有成员):可以在程序中的任何位置被其他的类和对象调用。

private(私有成员):被关键字private修饰的变量和方法,只能在所属类的内部被调用和修改,不可以在类外被访问,在子类中也不可以。

protected(保护成员):被关键字protected修饰的变量和方法,可以在本类和子类中被调用,其他地方则不可以被调用。

静态变量:

不是所有的变量都要通过创建对象 来调用,可以通过给变量加上static关键字来直接调用,调用静态成员变量格式为:关键字::静态成员。
关键字可以是
1.self在类内部调用静态成员使用。
2.静态成员所在类名,在类外调用类内部的静态成员时所用
静态属性或静态方法,在内存中只有一个,被所有对象去共享;好处:就是为了节省内存。
!!!在静态方法中,只能调用静态变量,不能调用普通变量,而普通方法则可以调用静态变量。
使用静态成员,除了可以不需要实例化对象外,还有一个作用就是在对象被销毁后,仍然保存被修改的静态数据,以便下次使用。

面向对象的高级应用

1.final关键字:当用final修饰一个类或方法时,表明这个类不能被继承,也不能有子代。
2.抽象类:如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。 抽象类不能实例化对象,只能作为其他类的父类来使用,其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。
抽象类至少要包含一个抽象方法,抽象方法没有方法体,其功能的实现只能在子类中完成。抽象方法也是使用abstract关键字来修饰的。
格式为:
abstract function abstaactName()
3.接口的的使用
定义:接口就是把不同类的 共同行为 进行了定义,然后在不同的类里面实现不同的功能,php只能实现单继承,如果想实现多继承就必须使用接口。
接口通过interface关键字来声明,并且类中只能包含未实现的方法和一些成员变量。
因为接口是一种特殊的抽象类,里面所有的方法都是抽象方法,所以接口也不能产生实例对象。
数据库MySQL
1.使用mysqli_connect()函数可以创建与MySQL服务器的连接
2.使用mysqli_select_db()函数可以用来选择MySQL数据库
格式为mysqli_select_db(mysqli link,dbname)
注:mysqli link为mysqli_connect()函数创建成功连接Mysql数据库服务器后返回的连接标识。
dbname是用户指定要选择的数据库名称。
3.执行SQL语句