PHP复习笔记

Posted dxj1016

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP复习笔记相关的知识,希望对你有一定的参考价值。

1、php简介

1.1、PHP概述和开发运行环境介绍

1.1.1、动态网页技术

区别于静态网页技术而言,具有下面特征:

  • 交互性:按客户要求显示内容
  • 自动更新:自动地更新html文档,便会自动生成新的页面
  • 内容生成可在客户端或服务器端完成
  • 可以包含有动画的内容

1.1.2、浏览器端Scripts

浏览器端Scripts嵌入在HTML中的小程序,由浏览器负责执行,如javascript
过程:

  • 客户机在浏览器打开含有浏览器端Scripts的网页,发送请求
  • Web服务器接受请求,从磁盘读取网页传送给浏览器,不做任何运算
  • 客户端浏览器收到网页,执行里面的浏览器端Scripts,将结果解析成网页

1.1.3、服务器端Scripts

服务器端Scripts也是嵌入在HTML中的小程序,由web服务器负责执行,如CGI、JSP、ASP和PHP

过程:

  • 客户机在浏览器打开含有浏览器端Scripts的网页,发送请求
  • Web服务器接受请求,从磁盘读取网页,执行里面的Scripts,结果转换为HTML页面,传送给浏览器并关闭连接。
  • 客户端浏览器收到网页,将结果解析成网页
    在这里插入图片描述

1.2、PHP介绍

  • PHP: Hypertext Preprocessor,中文:“超文本预处理器”)是一种应用广泛、功能强大的嵌入html中的脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的WEB站点。
  • PHP的语法类似于C,Perl,ASP或者JSP。
  • PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行

PHP官网

1.2.1、PHP功能

  • 生成动态页面内容
  • 能够创建、打开、读取、写入、删除以及关闭服务器上的文件
  • 在网页之间传递数据
  • 添加、删除、修改数据库中的数据
  • 限制用户访问网站中的某些页面
  • 对数据进行加密

1.2.2、PHP优势

  • 免费性:免费、开源代码
  • 快捷性:
    • 程序开发快,运行快,技术本身学习快
    • PHP可以被嵌入于HTML语言,编辑简单,实用性强,更适合初学者
  • 跨平台性强:运行在服务器端的脚本,可以运行在UNIX、LINUX、WINDOWS、Mac OS、android等平台
  • 效率高:PHP消耗相当少的系统资源,将用户经常访问的PHP程序驻留在内存中,其他用户再次访问时不需要重新编译程序,直接执行代码就可以。
  • 图像处理:用PHP动态创建图像,PHP图像处理默认使用GD2;也可以配置为使用image magick进行图像处理。
  • 面向对象:在php4,php5 中,面向对象方面都有了很大的改进,完全可以用来开发大型商业程序。

1.2.3、PHP应用

  1. web开发。
    网站:企业网站、门户网站等。
    软件:开发基于B/S结构的应用软件。如办公OA、CRM等。
  2. 命令行脚本。
    只需要 PHP 解析器来用于这种方式。这是常规脚本扩展使用 cron(在 Unix 或者 Linux 中)或者 Task Scheduler(在 Windows 中)时的理想用法。
  3. 编写桌面应用程序
    PHP-GTK可以在图形界面的系统中编写图形界面的应用程序。
  4. 电子商务
    Cybercash 支付、CyberMUT、VeriSign Payflow Pro以及 MCVE 函数对于在线交易程序来说是非常有用的

1.2.4、PHP7新特性

  1. 面向对象能力
  2. try/catch异常处理
  3. 字符串处理(字符串偏移量offset)
  4. XML与web服务支持
  5. 对SQLite数据库服务器的内置支持

1.2.5、PHP运行环境

浏览器在线运行1
浏览器在线运行2

  1. Apache服务器的安装。 (web服务器)
    下载地址
  2. PHP引擎的安装。 (php环境)
    下载网址
  3. Zend引擎的安装。 (php优化引擎)

1.2.6、PHP环境的搭建

Windows平台下:
1、Apache的安装
2、PHP的安装
3、两者的关联
安装过程参考资料

2、PHP程序基础结构和编写惯例

2.1、PHP程序嵌入HTML文件

在这里插入图片描述

2.2、常用的嵌入方式

  1. PHP标准结构<?php … ?>
<?php      
echo "Hi, I'm a PHP script!"; 
 ?>
  1. PHP的简短风格<? … ?>
<?  echo "Hi, I'm a PHP script!"; ... ?>

注意:此方法需要在php.ini中去配置才能生效
开启 short_open_tag = on

  1. PHP的script风格<script language="php">. . .</script>
< script language="php">
         echo "Hi, I'm a PHP script!"; ...</script>
  1. asp风格<% … %>
 <%  echo "Hi, I'm a PHP script!";  %>

注意:此方法需要在php.ini中去配置才能生效开启 asp_tags = on

PHP7不支持方法三和四

2.3、php页面的解释

  • 无法在浏览器中通过查看源文档的方式来查看 PHP 的源代码。
  • 而只能看到 PHP 文件的输出,即纯粹的 HTML。
  • 这是因为在结果返回浏览器之前,脚本就已经在服务器执行了。
  • 所以页面后缀必须为.php

2.4、apache服务器处理页面的原理

apache服务器处理页面的原理:

  • 普通的html、javascript、css代码原样输出;
  • php代码,将由php引擎解释,最终输入html代码。
  • 一般地,apache对*.htm或者 *.html文件,不作php解释,所以将原样输出。所以,在普通的.htm、.html页面中,不能写php代码。

2.5、include和require

  • 在服务器执行 PHP 文件之前把一个文件的内容插入到这个 PHP 文件中
  • include 和 require 很相似,除了在错误处理方面的
  • require 会产生致命错误 (E_COMPILE_ERROR),并停止脚本
  • include 只会产生警告 (E_WARNING),脚本将继续

2.6、include_once和require_once

  • require_once 语句在脚本执行期间包括并运行指定文件。此行为和 require语句类似,唯一区别是如果该文件中的代码已经被包括了,则不会再次包括。
  • include_once语句在脚本执行期间包括并运行指定文件。此行为和 include 语句类似,唯一区别是如果该文件中的代码已经被包括了,则不会再次包括。只会包括一次。
  • include_once函数的作用和 include是几乎相同的

在这里插入图片描述

3、PHP的输出和注释

3.1、php输出

3.1.1、echo:是语句不是函数,没有返回值,可输出多个变量值。不能输出数组和对象,只能打印简单类型(如int,string)。

  • 语法:echo(strings)
  • 语言结构,可以使用小括号、单引号、双引号;
  • 如果希望向 echo() 传递多个参数,那么使用括号会发生解析错误。
  • 也可以使用print()命令实现,但是echo()函数的运行速度要快一些。
<?php
echo ("可以使用小括号");
echo "<br>";
echo '可以使用单引号';
echo "<br>";
echo "可以使用双引号";
echo "<br>";
echo "一个参数"."两个参数"."可以使用.来传递多个参数";
echo "<br>";
echo ("一个参数"."两个参数");
# echo ("一个参数","两个参数");//这样会出错
echo "<br>";
print "print比echo慢";
?> 
/*执行结果:
可以使用小括号
可以使用单引号
可以使用双引号
一个参数两个参数可以使用.来传递多个参数
一个参数两个参数
print比echo慢
*/

单引号和双引号的不同之处:单引号仅输出变量名,而不是值。

<?php
$color="red";
echo "Roses are $color";
echo "<br>";
echo 'Roses are $color';
#单引号仅输出变量名,而不是值。
/*
Roses are red
Roses are $color
*/
?>

简化语句

<html> 
	<body> 

		<?php $color = "red"; ?> 

		<p>Roses are <?=$color?></p> 

	</body> 
</html>

3.1.2、print:是语句不是函数,有返回值 1 ,只能输出一个变量。不能输出数组和对象,只能打印简单类型(如int,string)。

print也是语言结构,有无括号均可使用:print或者print()

<?php
print '单引号';
print "<br>";
print "双引号";
print "<br>";
print ("小括号");
print "<h2>使用h2标题</h2>";
$var=2;
print $var;
print "<br>";
$var=print 2;
print "<br>";
print $var;//print有返回值,返回值为1
print "<br>";
//$var=echo 2;echo没有返回值,所以这句话会出错
$var1=print 3;
print "<br>";
echo $var1;


/*
执行结果:
单引号
双引号
小括号
使用h2标题
2
2
1
3
1

*/
?>

print有返回值,返回值是1,echo没有返回值

3.1.3、print_r:是函数,可以打印复合类型,例如:array、object等

<?php
$arr=array('name'=>'技术博客','site'=>'www.huangyibiao.com');
print_r($arr);//参数二设置为false则有打印,就跟没有设置第二个参数,一样,因为默认是false
echo '<br>';

// 参数二设置为true则不会打印,而是直接返回
$arr1=print_r($arr, true);
var_dump($arr1);//输出string(71) "Array ( [name] => 技术博客 [site] => www.huangyibiao.com ) ”


/*
执行结果:
Array ( [name] => 技术博客 [site] => www.huangyibiao.com )
string(71) "Array ( [name] => 技术博客 [site] => www.huangyibiao.com ) "
*/
?> 

3.1.4、printf:是函数,有返回值,返回值是打印内容的长度,把文字格式化以后输出(参看C语言)

  • printf函数带有两个参数,第一个参数是指定输出格式,第二个参数是要输出的变量。
  • 输出格式为:
    • %s: 按字符串;
    • %d: 按整型;
    • %b: 按二进制;
    • %x: 按16进制;
    • %o: 按八进制;
    • $f: 按浮点型
<?php
$var = 10;
$var1=printf('整型:%d<br>', $var);
$var2=printf('浮点型:%.2f<br>', $var); // 保留两位小数
$var3=printf('字符串:%s<br>', $var);
$var4=printf('二进制:%b<br>', $var);
$var5=printf('八进制:%o<br>', $var);
$var6=printf('十六进制:%x<br>', $var);
//printf有返回值,返回值是打印内容的长度
echo $var1;
echo "<br>";
echo $var2;
echo "<br>";
echo $var3;
echo "<br>";
echo $var4;
echo "<br>";
echo $var5;
echo "<br>";
echo $var6;

/*
执行结果:
整型:10
浮点型:10.00
字符串:10
二进制:1010
八进制:12
十六进制:a
15
21
18
20
18
20
*/
?>


3.1.5、sprintf:是函数,跟 printf 相似,但不打印,而是返回格式化后的文字(该函数把格式化的字符串写写入一个变量中,而不是输出来)其他的与 printf 一样。

<?php
$str = "Hello"; 
$number = 123;
$txt = sprintf("%s world. Day number %u",$str,$number);//这句话不会打印,只有返回值,下句echo将其输出
 echo $txt; //输出: Hello world. Day number 123
?>

3.1.6、var_dump():函数,输出变量的内容、类型或字符串的内容、类型、长度。常用来调试

<?php
$str = "Hello"; 
$number = 123; 
var_dump($str);// 输出:string(5) "Hello"
echo '<br>';
var_dump(123);// 输出:int(123)
echo '<br>';
var_dump($number);
/*
执行结果:
string(5) "Hello"
int(123)
int(123)
*/
?>

3.2、php的注释

//   单行注释
/*  多行注释 */                     
#  Unix风格注释    (单行注释)

注释符号只在<?php?>代码范围内有效!

4、类型、变量、常数和运算符

4.1、php数据类型

PHP支持八种类型

  • 四种标量类型:
    • 布尔型(boolean)
    • 整型(integer)
    • 浮点型(float)(浮点数,也作“double”)
    • 字符串(string)
  • 两种复合类型:
    • 数组(array)
    • 对象(object)
  • 特殊类型:资源(resource) NULL

4.1.1、布尔型

  • 最简单的类型。两个值,可以为 TRUE 或 FALSE。
  • 语法:使用关键字 TRUE 或 FALSE。两个都是大小写不敏感。
<?php
$foo = True; // 大小写不敏感
?>
  • 转换为布尔值:bool或者boolean强制转换
  • 数值0,0.0 、空数组、空字符串,转换为布尔型时,为false;
  • 非零值(不论正负),被认为是 TRUE!
<?php
$foo = true; // 大小写不敏感
$foo1= false;
echo $foo;
echo "<br>";
echo $foo1;//没有输出,echo不能输出布尔型的false值
echo "<br>";
var_dump($foo1);
/*
执行结果:
1

bool(false)
*/

?>

4.1.2、数值型

整数型

  • 整型:一个 integer 是集合 Z = {…, -2, -1, 0, 1, 2, …} 中的一个数。
  • 语法:
    整型值可以用十进制,十六进制或八进制符号指定,前面可以加上可选的符号(- 或者 +)。
    如果用八进制符号,数字前必须加上 0(零),用十六进制符号数字前必须加上 0x,二进制叫上0b。
<?php 
$a = 1234; # 十进制数
$a1 = -123; # 一个负数
$a2 = 0123; # 八进制数(等于十进制的 83)
$a3 = 0x1A; # 十六进制数(等于十进制的 26)
var_dump($a) ; //显示数据类型和值
echo "<br>";
var_dump($a1) ; //显示数据类型和值
echo "<br>";
var_dump($a2) ; //显示数据类型和值
echo "<br>";
var_dump($a3) ; //显示数据类型和值
echo "<br>";
/*
执行结果:
int(1234)
int(-123)
int(83)
int(26)
*/
?> 

浮点型

  • 浮点型:字长和平台相关
  • 语法
<?php
$a1 = 1.234;
$a2 = 1.2e3;
$a3 = 7E-10;
var_dump($a1);
echo "<br>";
var_dump($a2);
echo "<br>";
var_dump($a3);
echo "<br>";
/*
执行结果:
float(1.234)
float(1200)
float(7.0E-10)
*/
?>

4.1.3、字符串

  • PHP 没有给字符串的大小强加实现范围,不需要担心长字符串。
  • 字符串可以用四种字面上的方法定义:单引号 双引号 heredoc语法 nowdoc语法
  • 单引号支持的转义符少,主要是单引号和反斜线的转义序列,主要使用双引号。
  • 单引号字符串中出现的变量不会被解析。
<?php
echo('生日快乐!')."<br>";
echo('c:\\\\win')."<br>";//单引号中有\\\\代表反斜线
echo("I am \\"Jaen \\".")."<br>";//双引号中的\\"代表"",所以里面有两个\\",第一个代表"Jean",第二个代表"."
$str="mary";
echo("Hi,$str")."<br>";
echo('Hi,$str')."<br>";

/*
执行结果:
生日快乐!
c:\\win
I am "Jaen ".
Hi,mary
Hi,$str
*/
?> 

常用的转义符
在这里插入图片描述
Heredoc语法

  • 一种给字符串定界的方法使用定界符语法(“<<<”)
  • 在 <<< 之后提供一个标识符和换行,
  • 然后是字符串,
  • 然后是同样的标识符结束字符串。
  • heredoc语法针对双引号字符串
<?php
$name="Jean";
echo<<<STR1
My name is $name.<br>
Happy birthday to you!
STR1;
/*
执行结果:
My name is Jean.
Happy birthday to you!
*/
?> 

nowdoc语法

  • nowdoc语法针对单引号字符串
<?php
$name="Jean";
echo<<<'STR1'
My name is $name.<br>
Happy birthday to you!
STR1;
/*
执行结果:
My name is $name.
Happy birthday to you!
*/
?>  

  1. 在<<<之后的字符EOT是自己定义的,随便什么都是可以的,但是结尾处的字符一定要和它一样,必须成对出现;
  2. 结尾的一行(如上例的EOT;),一定要另起一行,并且该行除了EOT; 之外不能有任何其他字符,前后都不能有,包括空格。如果在本行最前或者最后出现空格,制表符的话,会出现到一个这样的错误信息:Parse error: parse error, unexpected $end in……,提示语法错误;
  3. 如果在定界符中间出现有PHP的变量,只需要像在其它字符串中输出一样写就行
<?php
$str = <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD;
echo <<<EOT
My name is abc I am printing some $str.
Now,I am printing some.
This should print a capital 'A':\\x41
EOT;
/*
执行结果:
My name is abc I am printing some Example of string spanning multiple lines using heredoc syntax.. Now,I am printing some. This should print a capital 'A':A
*/
?>
<?php
$name="cheng";
print<<<EOF
hello{$name}
EOF;
/*
执行结果:
hellocheng
*/
?>

变量$name之所以要用{}括起来,是要告诉PHP解析器这是一个PHP变量,不用也可以的,但是有可能会产生歧义

串接和变量

  • 为了把变量和字符串连接在同一行,可以使用(.)。
  • 句号是一个操作符号,作用于其两侧的表达式子。
  • 如果两侧的表达式是数值和字符串,PHP会把数字转化为字符串。
<?php
 $n=5 ."cats";
 echo $n;
 echo "abcd$n";
 echo 'abcd$n';
/*
执行结果:
5catsabcd5catsabcd$n
*/
?>
<?php
$number = 9;
$str = "北京";
printf("在%s有 %u 百万辆自行车。",$str,$number);
/*
执行结果:
在北京有 9 百万辆自行车。 
*/
?> 

4.1.4、printf()函数输出格式化的字符串

  • 语法: printf(format,arg1,arg2,arg++)
  • format:必需。规定字符串以及如何格式化其中的变量
  • arg1、arg2、arg++ 参数将被插入到主字符串中的百分号(%)符号处。
  • 该函数是逐步执行的。在第一个 % 符号处,插入 arg1,在第二个 % 符号处,插入 arg2,依此类推

在这里插入图片描述

<?php
$number = 123; 
printf("有两位小数:%1\\$.2f<br>
没有小数:%1\\$u",$number); 
/*
执行结果:
有两位小数:123.00
没有小数:123 
*/
?> 

如果 % 符号多于 arg 参数,则您必须使用占位符。占位符被插入到 % 符号之后,由数字和 “$” 组成。

4.2、类

  • 类(class)是对象的蓝图,PHP的类可以包含下列成员:
  • 属性:字段或者成员变量
  • 方法:成员函数
  • 常数:存放数据的常数
  • 构造函数:对象初始化函数,创建对象时自动执行
  • 析构函数:释放对象所占用系统资源的函数,在释放对象时会自动执行,无须在程序代码内加以调用,没有参数没有返回值。

4.2.1、定义特殊类

1.定义一个空类
Class Person{};
2.定义一个有成员属性和操作的类
Class Person{
 //成员属性
 $name     =  '';
 //操    作
protected function getActionName() {
return $this->name;
}
}
3.定义一个不能被继承的类,使用final关键字
Final class Person{
成员属性........
操    作........
}

4.3、对象

要初始化一个对象,用 new 语句将对象实例到一个变量中。

<?php
class foo{
	function do_foo(){
		echo "Doing foo.";
	}
}
$bar = new foo;
$bar->do_foo();
/*
执行结果:
Doing foo.
*/
?> 

转换为对象

  • 如果将一个对象转换成另一对象,它将不会有任何变化。
  • 如果其它任何类型的值被转换成对象,内置类 stdClass 的一个实例将被建立。如果该值为 NULL,则新的实例为空。
  • 对于任何其它的值,名为 scalar 的成员变量将包含该值。
<?php
$obj = (object) 'ciao';
echo $obj->scalar;  
/*
执行结果:
ciao 
*/
?> 

4.4、资源和NULL

4.4.1、资源:Resource

  • 通过专门函数进行建立和使用的特殊变量
  • 是保存外部资源的一个引用
  • 例如:
    • 打开的文件句柄
    • 数据库连接
    • 图片资源
  • 无法将其他类型的值转换为资源,资源大部分可以被系统自动回收
  • is_resource()函数测定一个变量是否是资源,get_resource_type()函数返回该资源的类型。

4.4.2、NULL

  • 特殊的 NULL 值表示一个变量没有值。
  • NULL 类型唯一可能的值就是 NULL。
  • 在下列情况下一个变量被认为是NULL:
    • 被赋值为 NULL。
    • 尚未被赋值。
    • 被 unset()。
  • 语法:NULL 类型只有一个值,就是大小写敏感的关键字 NULL。
<?php
$var = NULL;
?> 

4.5、数据类型转换

通过类型转换,可将变量值转换为另一类型。

<?php
$num=12;
$float=(float)$num;
echo gettype($num)."<br/>";
echo gettype($float);
/*
执行结果:
integer
double
*/
?>

允许强制转换的类型有:

  • int、integer:转换为整型。
  • bool、boolean:转换为布尔型。
  • float、double、real:转换为浮点型。
  • string:转换为字符串
  • array:转换为数组
  • object:转换为对象

使用函数进行转换: intval() floatval() strval()

<?php
$str = "123.9abc";
$int = intval($str);
$float = floatval($str);
$str = strval($float);
echo $str;
echo "<br>";
echo $int;
echo "<br>";
echo $float;
/*
执行结果:
123.9
123
123.9  
*/
?>  

4.6、检查数据类型的函数

在这里插入图片描述

4.7、PHP变量

  • 常量与变量是任何语言的基本构成
  • 用于表示各种值
  • 常量和变量用来存储数据,主要区别是常量一旦初始化就不能再发生改变

4.7.1、变量(用户自定义变量)

  • PHP 中一个美元符号$后面跟上一个变量名称,即表示一个变量。
  • 变量的名称是大小写敏感的。
  • 在 PHP 中设置变量的正确方法:$var_name = value;
  • 一个有效的变量名由字母或者下划线开头,后面跟上任意数量的字母,数字,或者下划线。
<?php
$var = &#

以上是关于PHP复习笔记的主要内容,如果未能解决你的问题,请参考以下文章

动态SQL基础概念复习(Javaweb作业5)

超级有用的9个PHP代码片段

PHP必用代码片段

学习笔记:python3,代码片段(2017)

PHP代码-psysh调试代码片段工具

超实用的php代码片段