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(标准通用标记语言下的一个应用)文档中去执行
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应用
- web开发。
网站:企业网站、门户网站等。
软件:开发基于B/S结构的应用软件。如办公OA、CRM等。 - 命令行脚本。
只需要 PHP 解析器来用于这种方式。这是常规脚本扩展使用 cron(在 Unix 或者 Linux 中)或者 Task Scheduler(在 Windows 中)时的理想用法。 - 编写桌面应用程序
PHP-GTK可以在图形界面的系统中编写图形界面的应用程序。 - 电子商务
Cybercash 支付、CyberMUT、VeriSign Payflow Pro以及 MCVE 函数对于在线交易程序来说是非常有用的
1.2.4、PHP7新特性
- 面向对象能力
- try/catch异常处理
- 字符串处理(字符串偏移量offset)
- XML与web服务支持
- 对SQLite数据库服务器的内置支持
1.2.5、PHP运行环境
1.2.6、PHP环境的搭建
Windows平台下:
1、Apache的安装
2、PHP的安装
3、两者的关联
安装过程参考资料
2、PHP程序基础结构和编写惯例
2.1、PHP程序嵌入HTML文件
2.2、常用的嵌入方式
- PHP标准结构
<?php … ?>
<?php
echo "Hi, I'm a PHP script!";
?>
- PHP的简短风格
<? … ?>
<? echo "Hi, I'm a PHP script!"; ... ?>
注意:此方法需要在php.ini中去配置才能生效
开启 short_open_tag = on
- PHP的script风格
<script language="php">. . .</script>
< script language="php">
echo "Hi, I'm a PHP script!"; ...</script>
- 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!
*/
?>
- 在<<<之后的字符EOT是自己定义的,随便什么都是可以的,但是结尾处的字符一定要和它一样,必须成对出现;
- 结尾的一行(如上例的EOT;),一定要另起一行,并且该行除了EOT; 之外不能有任何其他字符,前后都不能有,包括空格。如果在本行最前或者最后出现空格,制表符的话,会出现到一个这样的错误信息:Parse error: parse error, unexpected $end in……,提示语法错误;
- 如果在定界符中间出现有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复习笔记的主要内容,如果未能解决你的问题,请参考以下文章