




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1页第1章PHP入门与环境搭建本章概述本章的学习目标主要内容第2页本章概述PHP是一种服务器端、跨平台、HTML嵌入式的脚本语言,是全球普及、应用最广泛的Web应用程序开发语言之一。本章主要介绍PHP的入门知识,PHP的基本概念、工作流程、PHP开发工具的安装和环境配置,以及制作第一个PHP实例。第3页本章的学习目标了解PHP基础知识掌握PHP语言的基本概念掌握常用PHP开发工具的安装和环境配置第4页主要内容1.1PHP概述1.2PHP程序的工作流程1.3PHP集成运行环境工具的安装与配置1.4第一个PHP程序1.5本章小结1.6思考与练习第5页1.1概述PHP是HypertextPreprocessor(超文本预处理器)的缩写,是全球最流行的Web程序开发语言。PHP是一种服务器端、跨平台、内嵌HTML的脚本语言,和微软的ASP颇有几分相似,都是一种在服务器端执行的嵌入HTML文档的脚本语言;它混合了C、Java和Perl等现代编程语言的长处以及PHP自创的新语法,语法简单,易于学习、功能强大、灵活易用,目标就是让网页开发人员快速的写出动态的网页;用PHP做出的动态页面与其他的编程语言相比有更快的执行速度,因为PHP充分利用了服务器的性能,其执行引擎还会将用户经常访问的PHP程序驻留在内存中,用户再一次访问这个程序时就不需要重新编译程序了,只要直接执行内存中的代码就可以了,这也是PHP高效率的体现之一;PHP支持几乎所有流行的数据库以及操作系统,完全不必考虑跨平台问题;PHP、Apache和MySQL的组合已成为Web服务器的一种配置标准。第6页第7页PHP版本PHP最初知识一个简单的用Perl语言编写的程序,用来统计网站的访问者。经过慢慢的完善,在2000年5月发布了官方正式版本——基于该引擎并结合了更多新功能的PHP4.0。1.PHP/FI2.PHP33.PHP44.PHP55.PHP66.PHP7第8页1.2PHP程序的工作流程
一个完整的PHP系统由以下几部分组成。操作系统:网站运行服务器所使用的操作系统。PHP语言具有跨平台性,可以运行在任何操作系统上,如Windows、Linux等。服务器:搭建PHP运行环境时所选择的服务器。PHP支持多种服务器软件,包括Apache、IIS等。第9页PHP包:实现对PHP文件的解析和编译。数据库系统:实现系统中数据的存储。PHP支持多种数据库系统,包括MySQL、SQLserver、Oracle以及DB2等。浏览器:流量网页。由于PHP在发送到浏览器的时候以及被解析器编译成其他的代码,所以PHP对浏览器没有任何限制。第10页图1-1展示了PHP页面运行的全过程:第一步,PHP的代码传递给PHP包,请求PHP包进行解析并编译。第二步,服务器根据PHP代码请求读取数据库,调用数据。第11页第三步,服务器与PHP包共同根据数据库中的数据或其他运行变量,将PHP代码解析为普通的HTML代码。第四步,解析后的代码发送给浏览器,浏览器对代码进行分析,获取可视化内容。第五步,用户通过访问浏览器浏览网站内容。第12页第13页1.3PHP集成运行环境工具的安装与配置
对于初学者来说,Apache、PHP以及MySQL的安装和配置较为复杂,这时可以选择WAMP(Windows+Apache+MySQL+PHP)集成安装环境快速安装配置PHP服务器,集成安装环境就是将Apache、PHP以及MySQL等服务器软件整合在一起,免去了单独安装配置服务器带来的麻烦,实现了PHP开发环境的快速搭建。第14页目前比较常用的集成安装环境是WarmServer和AppServ,它们都集成了Apache服务器,PHP预处理器以及MySQL服务器。本书以WarmServer为例介绍PHP服务器的安装和配置。第15页1.4第一个PHP程序
在学习了前几节的内容后,现在尝试开发属于自己的简单的PHP网站,主要需要以下步骤:(1)首先是新建一个用于存放网站文件的文件夹目录。需要注意的是:新建网站目录及网页文件命名时尽量不要使用中文。例如在D盘根目录新建文件夹example,然后在example文件夹中新建文件夹chap1。第16页(2)使用记事本新建一个PHP文件。PHP文件和HTML文件一样都是纯文本文件,因此可以用记事本编辑,只要将后缀名由原来的.txt修改为.php即可。例如可以新建一个文件名为1-1.txt的记事本文件,然后将后缀名由txt修改为php,使用鼠标右键点击1-1.php,在弹出的菜单中选择“用记事本打开该文件”,在文件中输入以下代码:第17页<?phpecho'Helloworld!';?>点击“文件”菜单中的“保存”菜单项保存输入的代码,并关闭该文件,这样只有一个网页的PHP网站就建设好了,然后对Apache服务器进行设置,以便能通过浏览器访问这个网站。第18页设置PHP网站
可以使用在1.3.2章节讲的“修改WWW目录为指定目录”,将当前网站修改为服务器默认网站;也可以使用“添加虚拟目录”的形式,将当前网站设置为默认网站的二级网站;还可以使用“配置虚拟主机”或“多域名访问”的形式为当前网站设置新的域名。但是由于唯一的网页文件名为1-1.PHP,所以需要修改当前网页的默认首页。第19页运行PHP网站
打开浏览器,在地址栏中输入“http://localhost/”,会出现如图1-31所示的页面。当看到这个网页中出现的“Helloworld!”时就说明第一个PHP网站已经搭建成功了。第20页第21页1.5本章小结
本章首先介绍了什么是PHP、PHP的工作流程,PHP的版本和发展历程、优势及常用工具。然后,对PHP集成运行环境的安装和相关配置进行了详细介绍,最后,演示了第一个PHP程序的运行。通过这些内容使读者对PHP程序设计有一个全面的认识。第22页第23页第2章PHP开发基础本章概述本章的学习目标主要内容第24页本章概述通过前面的学习,读者已经了解什么是PHP以及PHP的作用,而且还编写并且测试了一个简单的PHP脚本。本章开始学习PHP的基础知识,它是PHP的核心内容。不论是从事网站制作,还是对应用程序进行开发,没有扎实的基本功是不行的。第25页本章的学习目标掌握PHP的基本语法格式掌握PHP中常量、变量的概念和使用掌握PHP数据类型和类型转换方式掌握PHP语言结构第26页主要内容2.1PHP基本语法2.2常量2.3变量2.4数据类型2.5数据类型的转换2.6数据的输出2.7本章小结2.8思考与练习第27页2.1PHP基本语法学习PHP语言的基本语法是进行PHP编程开发的第一步,PHP语言的语法混合了C、Java和Perl语言的特点,语法非常灵活,与其他编程语言相比有很多不同之处,初学者如果学习过其他编程语言,可通过体会PHP与其他语言的区别来学习PHP。PHP是一种可嵌入到HTML中、运行在服务器端的脚本语言,PHP的代码一般是由运行在浏览器端HTML代码及嵌入其中的CSS和JavaScript等客户端代码,运行在服务器端位于PHP标记符“<?”和“?>”之间的服务器脚本代码两部分组成。第28页PHP标记符
PHP标记符能够让web服务器识别PHP代码的开始和结束。由于PHP文件中,HTML代码和PHP代码混杂在一起,没有实现页面和程序的分离,使用PHP标记符就可以将PHP代码与其他代码进行区分,标记符之外的任何文本都会被认为是普通的HTML,方便服务器进行识别。第29页PHP注释
为了增强可读性,程序员会在程序语句的后面添加文字说明。注释可以理解为代码的解释说明,一般添加到代码的上方或代码的尾部。使用注释不仅能够提高程序的可读性,而且有利于程序的后期维护工作。在执行代码时,注释部分会被解释器忽略,因此注释不会影响到程序的执行。PHP支持几种风格的文字注释:第30页单行注释
单行注释可以使用C++语言风格的“//”和“SHELL”风格的“#”,在配置Apache服务器时,在httpd.conf文件中可以看到。例如:<?phpecho'Cplusplusstytle!';//C++风格echo'SHELLstytle!';#SHELL风格?>第31页多行注释
多行注释比较适合需要大段注释的情况,但需要注意的是多行不能嵌套使用。例如:/*此部分是C语言风格的注释内容,可以添加多行注释。*/第32页PHP语句块PHP程序由一条或多条PHP语句构成,每条语句都以英文分号“;”结束。在书写PHP代码的时候,一条PHP语句一般占用一行。虽然一行写多条语句或者一条语句占多行也是可以的,但是这样会使代码的可读性变差,不建议这样做。如果多条PHP语句之间存在着某种联系,可以使用“{”“}”将这些PHP语句包含起来形成一个语句块。示例代码如下:第33页<?php$i=1;//定义变量echo"输出10以内的整数:";while($i<=10)//判断是否符合条件{echo$i;$i++;}?>第34页2.2常量
常量用于存储不经常改变的数据信息。顾名思义,常量的值是不能改变的。在一个PHP程序中,一个常量的值只能定义一次。在程序的整个执行期间,这个值都有效,并且不可再次对该常量进行赋值。第35页自定义常量
定义常量要使用define()函数,括号中是常量名和常量值,函数的语法如下:define(stringconstant_name,mixedvalue,case_sensitive=true)其中,参数constant_name表示常量名称,为必选参数;参数value表示常量的值,为必选参数;参数case_sensitive用来指定是否大小写敏感,设置为true,表示不敏感,为可选参数。第36页预定义常量
PHP中提供了很多预定义常量,可以获取PHP中的信息,但不能任意更改这些常量的值。预定义常量的名称及其作用如表2-1所示。第37页第38页2.3变量
变量是指程序运行过程中其值可以变化的量。变量为开发人员提供了一个有名字的内存存储区,程序中可以通过变量名对内存存储区进行读、写操作。可以将变量比作一个贴有名字标签的空盒子,不同的变量类型对应不同种类的数据,就像不同种类的东西要放入不同种类的盒子。变量包括变量名、变量值和变量的数据类型三个要素。第39页PHP的变量是一种弱类型变量,它无特定数据类型,不需要事先声明,可以通过赋值将其初始化为任何数据类型,也可以通过赋值随意改变变量的数据类型。第40页变量名PHP中的变量名称遵循以下约定:在PHP中的变量名是区分大小写的变量名必须以“$”开始变量名开头可以以“_”开头变量名开头不能以数字字符开头第41页变量的作用域变量的作用域是指变量在程序中可以被使用的代码范围。在PHP中有6种基本的变量作用域法则。内置超全局变量(Built-insuperglobalvariables),在代码中的任意位置都可以访问。常数(constants),一旦声明,就是全局性的。可以在函数内外使用。第42页全局变量(globalvariables),在代码间声明,可在代码间访问,但不能在函数内访问。在函数中创建和声明为静态变量的变量,在函数外是无法访问的。但是这个静态变量的值可以保留。在函数中创建和声明的局部变量,在函数外是无法访问的,并且在本函数终止时失效。第43页变量的生存周期
变量的生存期表示该变量在什么时间范围内存在,也可以理解为变量从被定义、分配内存空间起到变量的存储空间被回收释放为止。全局变量的生存期从它被定义那一刻起到整个脚本代码执行结束为止;局部变量的生存期从定义它的函数被调用、变量被定义、分配内存空间开始到该函数运行结束为止。第44页一般局部变量在函数调用结束后,变量存储的值会被自动清除,所占用的存储空间也会被释放。为能在函数调用结束后,继续保存局部变量的值,可以使用static关键字,将局部变量定义为静态局部变量,这样当再次调用该函数时,可以继续使用上次调用结束时的变量值。第45页
2.4数据类型
在计算机的世界中,数据是计算机操作的对象。每一个数据都有其类型,具备相同类型的数据才可以进行运算操作。数据类型是一个值的集合以及定义在这个集合上的一组操作,不同的数据类型存储的数据的种类也不同。数据类型的使用往往和变量的定义联系在一起,变量的数据类型决定了变量的存储方式和操作方法。第46页标量数据类型
标量数据类型是数据结构中最基本的单元,只能存储一个数据。PHP中标量数据类型包括4种,即整型、浮点型、布尔型和字符串型。如表2-2所示第47页复合数据类型
复合数据类型将多个简单的数据类型组合在一起,存储在一个变量名中,包括数组和对象两种,如表2-3所示。第48页特殊数据类型
特殊数据类型包括资源和空值两种,如表2-4所示。第49页检测数据类型
PHP中还内置了检查数据类型的系列函数,可以对不同类型的数据进行检测,判断其是否属于某个类型。检测数据类型的函数如表2-5所示。第50页2.5数据类型的转换
在PHP中数据类型的转换主要有自动类型转换和强制数据类型转换两种。PHP中自动类型转换是指在定义常量或变量时,不需要指定常量或变量的数据类型。在代码执行过程中,PHP会根据需要将常量或变量转换为适合的数据类型。所以数据类型的自动转换一般发生在变量重新赋值和对不同类型的变量进行运算操作时。第51页自动类型转换
<?php$a=true;$b=null;$c=100;$d="100abc";$e=0.1;//var_dump()函数输出数据的值、类型以及字符串的长度第52页var_dump($a+$c);echo"<br>";var_dump($b+$c);echo"<br>";var_dump($c+$d);echo"<br>";var_dump($c+$e);echo"<br>";var_dump($e+$e);echo"<br>";?>第53页强制类型转换<?php$str="你好,欢迎来到PHP学习网站!";echo"这是原始string形式:".$str;echo"<br>";echo"这是boolean形式:".(boolean)$str;echo"<br>";第54页echo"这是integer形式:".(integer)$str;echo"<br>";echo"这是原始float形式:".(float)$str;echo"<br>";echo"这是原始array形式:".(array)$str;echo"<br>";?>第55页2.6数据的输出
PHP中最常用的输出语句是echo。除了echo语句之外,还可以使用print语句向浏览器中输出数据。第56页print语句和echo语句的区别如下:使用print语句一次只能输出一个字符串,而使用echo语句可以同时输出多个字符串,多个字符串之间用逗号隔开。在echo语句前不能使用错误屏蔽运算符“@”。第57页print语句可以看作一个有返回值的函数,因此print语句能作为表达式的一部分,而echo语句不能。echo可以输出一个或多个字符串。而print只能输出简单类型变量的值,如int,string。第58页2.7本章小结
本章介绍了PHP语法的基础知识,主要包括PHP的基本语法、常量、变量、数据类型以及编码规范等。熟练掌握PHP的基本语法是学习PHP语言的第一步,也是读者要学好PHP最基础的内容。由于PHP是一种弱类型的语言,其变量常常无须指定其类型即可直接使用。这既是PHP的灵活之处,也是PHP的弱点,通过本章的学习,读者要对这些知识点以及PHP的组成部分有一个整体的认识。第59页第3章
运算符与表达式第3章
运算符与表达式算术运算符字符串运算符赋值运算符比较运算符逻辑运算符算术运算符运算符名称运算符名称+加法运算符%取余运算符-减法运算符++累加运算符*乘法运算符--累减运算符/除法运算符
字符串运算符字符串运算符是把两个字符串连接起来变成一个新的字符串的运算符,运算符用“.”表示,如果变量是整形或者浮点型,PHP会自动将他们转换为字符串输出,然后进行连接。<?php header("content-type:text/html;charset=gb2312");//对html以gb2312编码,以便汉字能够正常显示。 $a="您好先生!请您住:";//定义字符串变量 $b=205; $c="房间"; echo$a.$b.$c;//把字符串连接后输出 ?>赋值运算符赋值运算符含义=将右边的值赋值给左边的变量+=将左边的值加上右边的值赋给左边的变量-=将左边的值减去右边的值赋给左边的变量*=将左边的值乘以右边的值赋给左边的变量/=将左边的值除以右边的值赋给左边的变量.=将左边的字符串连接到右边%=将左边的值对右边的值取余数赋给左边的变量比较运算符比较运算符含义比较运算符含义==相等>=大于等于!=不相等<=小于等于>
大于===精确等于<
小于!==不精确等于逻辑运算符逻辑运算符含义逻辑运算符含义&&逻辑和!逻辑否AND逻辑和NOT逻辑否||逻辑或XOR逻辑异或OR逻辑或
按位运算符按位运算符名称含义&按位和例如,$a&$b,表示将$a和$b都转换成2进制,对应位数都是1,结果该位为1|按位或例如,$a|$b,表示将$a和$b都转换成2进制,对应位数有1个是1,结果该位为1^按位异或例如,$a^$b,表示将$a和$b都转换成2进制,对应位数不相同时,结果该位为1~按位取反例如,~$a,表示将$a转换成2进制,对应位数是1,结果该位为0,对应位数是0,结果该位为1<<
左移例如,$a<<$b,表示将$a转换成2进制,向左移动$b位,右边移空补0>>
右移例如,$a>>$b,表示将$a转换成2进制,向右移动$b位,左边移空补0错误控制运算符错误控制运算符用“@”来表示。在一个操作数之前使用,用来屏蔽错误信息的生成。<?php $a=@(5/0);//如果不想显示除数为零的错误,在表达式前加上“@”即可。?>三元运算符三元运算符作用在三个操作数之间。这样的操作符在PHP中只有1个,用“?:”,语法为:表达式?语句1:语句2如果表达式成立,则执行语句1,否则执行语句2<?phpheader("content-type:text/html;charset=gb2312");$a=date("D",time());echo($a=="Sat"||$a=="Sun")?"今天可以休息!":"今天正常上班!";?>运算符的优先级和结合规则加减乘除的先后顺序同数学运算中的完全一致。对于括号,则先括号内在括号外。对于赋值,则由右向左运行,即值依次从右边向左边的变量进行赋值。表达式表达式是在特定语言中表达一个特定的操作或动作的语句。PHP的表达式也有同样的作用。一个表达式包含“操作数”和“操作符”。操作数可以是变量,也可以是常量。操作符规则体现了要表达的各个行为,如逻辑判断、赋值、运算等。小结本章介绍了PHP中的运算符和表达式,其实各种计算机高级语言中的运算符和表达式类型都几乎一样,它是计算机编程不可缺少的组成部分,是计算机编程的基础,掌握这一部分知识将对以后的编程打下坚实的基础。第73页第4章
流程控制语句本章概述本章的学习目标主要内容第74页本章概述程序流程控制在编程语言中占有非常重要的地位,大部分的程序段都要依靠其来完成。PHP脚本文件由一系列的语句构成,如果没有流程控制语句,PHP程序将从第一条PHP语句开始执行,一直运行到最后一条PHP语句。流程控制语句用于改变程序的执行次序,从而控制程序的执行PHP的程序流程主要包括分支、判断、循环等,这三种类型的流程控制构成了面向过程编程的核心。第75页本章的学习目标条件控制语句循环控制语句跳转控制语句第76页主要内容4.1流程控制概述4.2条件控制语句4.3循环控制语句4.4跳转语句4.5本章小结4.6思考与练习第77页4.1流程控制概述
程序流程控制在编程语言中占有非常重要的地位,大部分的程序段都要依靠其来完成。PHP的程序流程主要包括分支、判断、循环等,而这些控制语句之间大多都可以进行嵌套使用。流程控制,也叫控制结构,主要是指根据需要如何将程序转向去执行指定的语句。PHP提供了一组流程控制语句用于实现上述的程序执行顺序。PHP中的控制结构语句分为3类,顺序控制语句、条件控制语句和循环控制语句。除此以外,还有条件控制语句和循环控制语句,以及跳转控制语句。条件控制语句:if和switch循环控制语句:while、do-while、for和foreach跳转控制语句:break、continue和return第78页4.2条件控制语句
条件判断语句以一定的条件作为依据,根据判断的结果,选择性地执行指定的语句。在PHP中,有if语句和switch两种条件控制语句。if语句又可分为单分支选择if语句、双分支选择if语句和多分支选择if语句三种。第79页if语句
if语句是最简单最为常见的条件判定语句,它对某段程序的执行附加一个条件,如果该条件满足,就执行这段程序,否则跳过这段程序去执行下面的程序。if语句的语法格式为:if(expr)statement;第80页下面是if语句的一个应用:<?php$score=89;//定义变量if($score>=60)//判断是否符合条件{echo"及格";}?>第81页if…else语句
大多数时候,总是需要在满足某个条件时执行一条语句,而在不满足该条件时执行其他语句。为了在if语句中描述这种情况,if语句中提供了else子句。else子句表示的自然语句是“否则”的意思,其语法格式为:第82页if(expr){statement1;}else{statement2;}第83页下面是if…else语句的一个应用:<?php$score=89;//定义变量if($score>=60)//判断是否符合条件{echo"及格";}第84页else{echo"不及格";}
?>第85页if…elseif…else语句
考虑到if…else语句只能选择两种结果,要么执行真,要么执行假。当条件表达式有多种取值时,选择结果超两种以上,if…else语句就无法实现该程序,此时可以使用多分支选择语句——if…elseif…else语句,其语法格式为:第86页if(expr1){statement1;}elseif(expr2){statement2;}…else{statementn;}第87页下面是if…elseif…else语句的一个应用:<?php$score=89;//定义变量if($score>=90)//判断是否符合条件{echo"优秀";}第88页elseif($score<90&&80$score>=80)//判断是否符合条件{echo"良好";}elseif($score<80&&80$score>=70)//判断是否符合条件{echo"中等";}第89页elseif($score<70&&80$score>=60)//判断是否符合条件{echo"及格";}else{echo"不及格";}?>第90页switch语句
在程序设计中,所有依据条件做出判定的问题都可以用前面介绍的不同类型的if语句来解决。不过,在用if…else语句处理多个条件判定问题时,组成条件的表达式在每一个elseif语句中都要计算一次,显得繁琐臃肿。为了避免if语句的冗长,提高程序的可读行,可以使用另外一种选择控制语句——switch分支控制语句。第91页PHP提供switch…case多分支控制语句,对于某些多项选择场合,可使代码更加简洁,增加代码的可读性。switch语句的结构给出不同情况下可能执行的程序块,条件满足哪个程序块,就执行哪个语句。switch语句可以看做多分支选择if语句的另外一种形式,两者可以相互转换。在要判断的条件有很多种可能的情况下,使用switch语句将使多分支选择结构更加清晰。第92页switch语句根据variable的值,依次与case中的value值相比较,如果不相等,继续查找下一个case;如果相等,就执行对应的语句,直到switch语句结束或遇到break为止。一般switch语句的结尾都有一个默认值default,如果在前面的case中没有找到相符合的条件,则输出默认语句,这和else语句类似。第93页4.3循环控制语句
在实际应用中,经常遇到一些操作并不复杂但需要反复多次处理的问题。对于这类问题,如果用顺序结构的程序来处理,将是十分繁琐的,有时甚至是难以实现的,为此,PHP中提供了循环语句来实现循环结构的程序设计。第94页循环控制语句是指能够按照一定的条件重复执行某段功能代码的代码结构。循环控制语句分为以下4中:while循环语句do-while循环语句for循环语句foreach循环语句第95页while循环语句
while循环语句是PHP中最简单的循环控制语句,while循环语句根据某一条件进行判断,根据判断结果决定是否执行循环。while循环语句的语法格式为:while(expr){statementn;}第96页do…while循环语句
while循环语句还有另外一种表示形式:do…while。do…while循环语句和while循环语句非常相似,两者唯一的区别在于do…while循环语句是在循环底部检查循环表达式,而while循环语句是在循环的顶部检查循环表达式。第97页do…while循环语句的语法格式为:do{statementn;}while(expr);第98页for循环语句
for循环语句是PHP中最复杂的循环控制语句,for循环语句能够按照已知的循环次数进行循环操作,主要应用于多条件情况下的循环操作。如果在单一条件下使用for循环语句,就有些不合适。这一点从该预见到语法中就可以看出,其条件的表达式有3个。第99页for循环语句的语法格式为:for(expr1;expr2;expr3){statement;}第100页foreach循环语句
foreach语句常用用来对数组或对象中的元素进行遍历操作,例如数组中的元素个数未知的情况下很适合使用foreach语句。foreach循环语句可以根据数组的情况分为两种,即不包含键值的数组和包含键值的数组。第101页其语法格式为:foreach(arry_expressionas$value){ statement;}或foreach(arry_expressionas$key->value){ statement;}
第102页4.4跳转语句
跳转语句用于实现程序流程的跳转。PHP提供了3中跳转语句:break语句、continue语句和return语句,其中前2个跳转语句使用起来非常简单,也很容易掌握,这是因为它们都被应用在指定的环境中,例如前面章节提到的switch循环语句中,应用了break语句。return语句在应用环境上较前两者相对单一,一般被用在自定义函数和面向对象类中。本节将对这3种跳转语句进行介绍。第103页break语句
break跳转语句用了结束当前的循环,包括while循环语句、do…while循环语句、for循环语句、foreach循环语句和switch分支语句的执行。break跳转语句不仅可以跳出当前循环,还可以指定跳出几重循环,其格式如下:breakn;参数n指定要跳出的循环数量。第104页continue语句
程序执行break语句后,将跳出循环,而开始继续执行循环体后续的语句。continue语句只能终止本次循环,而进入下一次循环中。在执行continue语句后,程序将结束本次的循环迭代项,直接进入到下一个循环迭代项,继续执行程序。第105页exit语句
exit语句的作用是终止整个PHP程序的执行,在exit语句后的所有PHP代码都不会执行。格式如下:voidexit([stringmessage]);参数message是可选参数,用来输出字符串信息,然后终止整个PHP程序的执行,第106页4.5本章小结
本章讲述了PHP中流程控制语句的基本知识。PHP三种类型的流程控制语句构成了面向过程编程的核心。通过本章的学习,读者能够掌握条件控制结构语句和循环控制结构语句的应用,特别是if语句和for语句的应用,从整体上形成一个开发的思路,逐渐形成自己的编程习惯和编程思想。第107页第108页第5章PHP数组本章概述本章的学习目标主要内容第109页本章概述我们用变量来存放单个数值,但有的时候需要对多个数据进行处理,如何把多个数据放入计算机进行处理,数组给我们提供了很大的方便,我们可以用数组处理大量相似的数据,将这些数据放在一个数组中,例如,假设我们可以用它来存储100个学生的信息。不需要用100个独立的变量——$student1、$student2等存储这些学生的信息,而是只需要创建一个名为$students的数组就可以保存全部学生的信息。第110页本章的学习目标本章的主要内容是:数组的定义。数组的各种创建方法。数组元素的访问。如何用循环访问数组的每一个元素。多维数组的使用,多维数组为我们建立丰富的、复杂的数据结构提供了可能第5章
数组数组的定义。数组的各种创建方法。数组元素的访问。如何用循环访问数组的每一个元素。多维数组的使用,多维数组为我们建立丰富的、复杂的数据结构提供了可能。讨论PHP中的几个功能强大的数组处理函数,利用这些函数,我们可以对数组进行排序和合并。数组的定义索引数组:这类数组的每个元素都是通过一个数值型索引进行引用的。通常元素的索引是从0开始的,第二个元素的索引为1,依此类推。关联数组:这类数组的元素是通过哈希函数或映射进行引用的。对于关联数组,每个元素是通过一个字符串索引进行引用的。例如,我们可能用一个数组的元素表示客户的年龄,并把“age”作为它的索引。创建数组array()函数是一个典型的数组函数,用户可以用它创建一个新数组。$food=array("饼干","牛奶","蛋糕","牛排");$price=array("白兰根"=>"11.5","快克"=>"13.5","三精口服液"=>”21.5”);访问数组的元素访问数组换先写变量名,后面跟一对方括号,括号里面是元素的索引。如果需要访问关联数组的元素,则不是使用数值索引,而是使用字符串索引:$myfood=$food[0];$myPrice=$myBook["白兰根"]; 改变元素内容不仅可以访问数组元素值,而且还可以用同样的方法修改数组元素的值。把数组元素看成是单独一个变量,我们可以随意创建、读取、写入它的值$food=array("饼干","牛奶","蛋糕","牛排");$food[2]="油条";改变后的数组:$food=array("饼干","牛奶","油条","牛排");用print_r()函数输出整个数组对于普通变量,我们用print()或echo()函数输出。但是PHP为我们提供了一个函数,print_r(),它可以输出一个数组的全部内容,用于调试。print_r()($array);用array_slice()函数读取数组中连续几个元素PHP内置了array_slice()函数,它可以从一个数组中读取一组元素。使用array_slice()函数,需要把数组变量传递给它,之后是第一个元素的位置(从0开始),其后再跟一个数值,表示读取元素的个数。它可以返回一个新数组,该数组的元素就是原数组的部分元素。例如:$food=array("饼干","牛奶","蛋糕","牛排");$foodSlice=array_slice($food,1,2);统计数组中元素的个数如何想知道数组元素的个数?很容易!用PHP的count()函数即可。我们只需要把一个数组传递给这个函数,之后它就可以返回一个整数,表示数组的元素个数。$food=array("饼干","牛奶","蛋糕","牛排");echocount($food);//显示"4"用foreach()循环访问数组最简单的方法是用foreach语句访问每个元素的值,它的用法如下所示:foreach($arrayas$value){
把$value放在这儿}用foreach同时读取数组的键和值,要用以下的语法:foreach($arrayas$key=>$value){//把$key和$value放在这儿}用foreach循环修改数组值当我们使用foreach语句时,在循环体内处理的是数组元素的复件。这意味着,改变这个值,并不会改变原来数组中相应元素的值。下面这段代码说明了这个道理:$authors=array("张三","李四","王五","赵六");
foreach($authorsas$val){if($val=="王五")$val="王虎";echo$val."";}
echo"<br/>";
print_r($authors);用foreach循环修改数组值如果我们确实想修改数组元素的值,则可以用foreach()循环返回这个值的引用,而不是它的复件。这意味着循环中的变量指向的是数组中元素的值,要改变数组元素的值,只需要改变这个变量的值即可。要返回数组元素的引用,只需要在foreach语句的变量名之前加一个&符号即可:foreach($arrayas&$value){使用引用把前面的例子改写如下:$authors=array("张三","李四","王五","赵六");foreach($authorsas&$val){if($val=="王五")$val="王虎";echo$val."";}
unset($val);echo"<br/>";
print_r($authors);多维数组创建多维数组:$myBooks=array(array("title"=>"PHP","author"=>"张三","pubYear"=>2017),array("title"=>"ASP.NET","author"=>"李四","pubYear"=>2016),array("title"=>"网页设计","author"=>"王五","pubYear"=>2017),);数组的操作数组排序:sort()和rsort()——用于索引数组的排序。asort()和arsort()——用于关联数组的排序。ksort()的krsort()——根据关联数组的键而非值对它进行排序。array_multisort()——一个非常有用的函数,它可以同时对多个数组或多维数组进行排序。添加和删除数组元素array_unshift()——将一个或多个新元素添加到数组的首位置。array_shift()——删除数组的第一个元素。array_push()——在数组的末尾位置添加一个或多个新元素。array_pop()——删除数组的最后一个元素。array_splice()——删除数组中从某个位置开始的元素,或者把新元素插入到数组中某个位置。数组的合并假如我们想把多个数组合并成一个大数组,则要使用array_merge()函数。这个函数需要一个或多个数组作为参数,然后返回合并后的数组,原来的数组不受影响。数组与字符串之间的转换PHP提供了几个函数,允许我们把字符串转换成数组,或者把数组转换为字符串。为了把字符串转换为数组,需要使用explode()函数。这个函数需要一个字符串作为参数,它会根据特定的分隔符把字符串分解成多块,然后把分解得到的字符串块保存到一个数组中,最后返回这个数组。把数组转换为变量列表最后,本章将介绍另一个数组处理工具,即list()函数。它为我们提供了一种简单的方法,把数组的各个元素的值分散到各个变量中。$myBook=array("PHP","张三",2017);list($title,$author,$pubYear)=$myBook;
echo$title."<br/>"; //显示"PHP"echo$author."<br/>";//显示"张三"echo$pubYear."<br/>";//显示"2017"小结本章介绍了PHP中的另一个重要的概念:数组。数组是一个特殊的变量,它可以存储多个值。并且有一整套的对数组中数据的查询、删除、修改、排序的方法。作业习题1写函数创建长度为10的数组,数组中的元素为递增的奇数,首项为1.习题2求数组中最大数的下标,数组为:$arr=array(0,-1,-2,5,"b"=>15,3)。第130页第6章PHP函数本章概述本章的学习目标主要内容第131页本章概述在程序的编写过程中往往会有一些要反复用到的功能某块,如果每次都要重复编写这些代码,不仅浪费时间,而且还会使程序变得冗长、可读性差,维护起来也很不方便,此时我们就想到了函数。此外,使用函数还能减少对系统资源的耗用,因为每一次函数调用结束后,都会释放掉它所占用的资源。第132页本章的学习目标函数的定义函数的调用函数的参数传递可变函数函数的递归和嵌套变量在函数中的使用PHP5中的函数有可以分为系统函数和自定义函数,系统函数在后面的章节和附录中都将涉及到,本节主要讲解自定义函数。PHP5中的函数C语言一样。函数定义的语法为:function函数名(形式参数列表){ 函数体; return返回值;}6.1函数的定义PHP5中的函数有无返回值都允许。而且,在函数的名称上,PHP对于大小写的管制比较松散。可以在定义函数时写成大写的名字,而在使用时使用小写的名字。总之,对函数而言,不用管大小写,只要注意名称没有重复就可以了。6.1函数的定义6.1函数的定义不过,PHP5对用户自定义函数名也是有一些要求的,具体如下: ①不能与PHP的内部函数同名 ②不能与PHP的关键字重名 ③不能以数字或下划线开头 ④不能包含点号“.”和中文字符函数体是实现函数功能的语句体,与for循环等不一样,函数体中即使只有一条语句,外面的大括号也不能省略。6.1函数的定义
函数名(实际参数列表);
实际参数列表要与形式参数列表相对应(有默认参数时实际还要与默认参数对应)。如果实际参数比形式参数多,多于的参数会被自动舍弃;如果实际参数比形式参数少,实际参数会被一一填入形式参数中,不足部分以空参数代替。实际参数和形式参数之间的传递机制会在下一小节中讲述。
6.2函数的调用:6.2
函数的调用
如果函数有返回值,还可以利用函数调用为变量赋值,其语法为: 变量名=函数名(实际参数列表);6.2函数的调用:在使用函数时,要填入与函数形式参数个数相同的实际参数(有默认参数的除外),在程序运行过程中,实际参数就会传递给相应的形式参数,然后在函数中实现对数据的处理和返回。在由实际参数向形式参数传递的过程中,共有值传递、引用传递、默认参数3种机制。6.3
函数的参数传递:6.3函数的参数传递1、值传递作为值传递,就是将实际参数的值拷贝到形式参数中。然后由形式参数参与函数内部的计算,函数调用结束后,实际参数的值不会发生改变。用这种方式调用的函数一般都有返回值或输出值,否则函数调用实际上什么也没有做。例4-19就是使用的这种传递方式。初学者一般常使用这种传递方式。6.3
函数的参数传递:6.3函数的参数传递2、引用传递如果要实现形式参数改变时实际参数也发生相应的改变,就要使用引用传递的方式。参数的引用传递也有两种方法:①在函数定义的时候,在形式参数前面加上“&”符号,例如: functionfun(&$var1){……}②在函数调用的时候,在实际参数前面加上“&”符号,例如: functionfun($var1){……} fun(&$var2)
如果形式参数$var1的值在函数中发生改变,实际参数$var2的值也会发生相应的改变。6.3
函数的参数传递:6.3函数的参数传递3、默认参数 PHP5还支持有默认值的参数,即在函数定义时可以为一个或多个形式参数指定默认值。6.3
函数的参数传递:PHP5中还提供了可变函数的机制,可以方便地利用变量实现对函数的调用。使用的基本格式为: Functionfun(){……} $var=”fun”; $var();
6.4用函数的同名变量实现可变函数6.4用函数的同名变量实现可变函数 其中调用$var()就相当于调用函数fun(),$var()为可变函数。可变函数与普通函数调用时的最大区别就在于可变函数前面有”$”,有此符号,系统就会认为是可变函数。 友情提示:如果写成$var=”fun()”,则“$var”只是一个普通的字符串而已,再调用语句“$var;”不会实现fun()函数的功能。6.4用函数的同名变量实现可变函数PHP5中的函数支持递归赫嵌套。所谓递归就是一个函数在自己的函数体内调用自身。所谓嵌套,就是一个函数在其函数体内调用其他函数。6.5用函数调用实现递归与嵌套PHP5的变量用范围的不同可以分为若干种类,比如局部变量、全局变量、静态变量、动态变量、引用变量、预定以变量、外部变量等,下面就前5种变量的进行讲解。6.6变量在函数中的使用6.6变量在函数中的使用1、局部变量和全局变量PHP中的变量是有作用范围的,一般情况下,变量的作用域是包含变量的PHP程序块,也就是“<?php”、“?>”之间的代码或者“{”、“}”之间的代码。如果其中还有include()或require()函数包含的文件,变量的作用域也可以扩展到这些文件里。在主程序中定义的变量只在主程序中有效,在函数中定义的变量只在函数中有效,在函数之外就无效了。6.6变量在函数中的使用6.6变量在函数中的使用1、局部变量和全局变量如果要在函数中引用主程序中的变量的值,使用PHP定义的$GLOBALS数组,$GLOBALS数组是一个以变量名为下标的数组,我们可以直接调用。还有一种实现跨域调用功能的方法就是使用全局变量,值得注意的是PHP中的全局变量并不是对整个程序都可见,我们在主程序中也可以访问函数中的全局变量,但是我们在函数中并不能访问主程序的全局变量。其定义的语法为: global $变量名;6.6变量在函数中的使用6.6变量在函数中的使用1、局部变量和全局变量友情提示:在PHP函数中使用$GLOBALS数组,是不是和我们在4.4.2节中讲到的参数传递有异曲同工之效呢?为了防止程序中变量的混乱,建议尽量不要使用全局变量,至少应尽可能少地使用全局变量。6.6变量在函数中的使用6.6变量在函数中的使用2、静态变量和动态变量静态变量只能用于函数范围内,与普通局部变量不同之处在于:当该函数运行结束时,静态变量不会丢失自己的值。静态变量的定义方法为在变量名前冠以“static”关键字。PHP中的动态变量允许一个变量的值作为另一个变量的变量名,前提条件是这个值要符合变量命名的规则。6.6变量在函数中的使用6.6变量在函数中的使用2、静态变量和动态变量通过上例我们不难看出静态变量与普通变量的区别,在函数fun2()中静态变量$int2只被初始化了一次,在该函数退出时$int2的值不会丢失,所以反复调用函数fun2()时,$int2的值会累加。友情提示:静态变量虽然在函数结束时值不会丢失,但其作用域只在本函数中,在函数之外仍然无效。动态变量的实现思想是否与4.4.3节中用函数的同名变量实现可变函数的思想相吻合呢?6.6变量在函数中的使用6.6变量在函数中的使用3、引用变量PHP5中支持引用变量,这是从C++语言中借用而来的。对一个变量进行引用产生新变量后,新变量可以看作是原变量的一个别名,改变其中任何一个的值,两个值都会发生改变。使用引用变量的方法是赋值时在右边变量前加“&”符号,6.6变量在函数中的使用6.6变量在函数中的使用3、引用变量引用变量在进行赋值时,系统只是简单将新变量执行原变量的地址,其中没有变量复制的操作,所以速度非常快。如果参数是大数组或对象,使用引用变量进行参数传递能节省内存并加快程序运行速度。不过其副作用就是引用值改变,原变量也会发生改变,因此是否能使用引用变量进行参数传递要视具体情况而定。6.6变量在函数中的使用函数的定义函数的调用函数的参数传递可变函数函数的递归和嵌套变量在函数中的使用总结第154页第7章PHP面向对象基础本章概述本章的学习目标主要内容第155页本章概述这里所指的面向对象,准确地说应该叫做面向对象编程(OOP),是面向对象的一部分。面向对象包括3部分内容:面向对象分析(ObjectOrientedAnalysis,OOA)、面向对象设计(ObjectOrientedDesign,OOD),以及面向对象编程(ObjectOrientedProgramming,OOP)。面向对象编程的两个重要概念是类和对象。。第156页本章的学习目标本章的学习目标:了解PHP中面向对象了解和掌握类的定义及实例化了解PHP对象的高级应用掌握接口的使用熟悉面向对象的基本应用
主要内容7.1基本概念7.2PHP中的类7.3类的继承7.4抽象类与接口7.5类的魔术方法7.6类型判断与引用7.7实例——设计一个学生管理类7.1基本概念1.封装封装是将数据和代码捆绑到一起,避免外界的干扰和不确定性。在PHP中,封装是通过类来实现的。类是抽象数据类型的实现,一个类的所有对象都具有相同的数据结构,并且共享相同的实现操作的代码,而各个对象又有着各自不同的状态,即私有的存储。因此,类是所有对象的共同的行为和不同状态的结合体。2.继承类提供了创建新类的一种方法,再借助于“继承”这一重要机制扩充了类的定义,实现了面向对象的优越性。继承提供了创建新类的方法,这种方法就是,一个新类可以通过对已有的类进行修改或扩充来满足新类的需求。新类共享已有类的行为,而自己还具有修改的或额外添加的行为。因此,可以说继承的本质特征是行为共享。3.多态不同的类对于不同的操作具有不同的行为,称为多态。多态机制使具有不同的内部结构的对象可以共享相同的外部接口,通过这种方式减少代码的复杂度。7.2PHP中的类7.2.1创建类类是面向对象程序设计的核心,它是一种数据类型。类由变量和函数组成,在类里面,变量称为属性或成员变量,函数称为方法。定义类的语法格式如下:classclassname{[var$property[=value];…][functionfunctionname($args){//代码}]}7.2.1创建类自PHP5.5起,关键字class也可用于类名的解析。使用classname::class可以获取一个字符串,包含了类classname的完全限定名称。这对使用了命名空间的类尤为有用。例如:<?phpnamespaceNS{classclassname{//类定义代码}echoclassname::class;}?>以上程序会输出:NS\classname7.2.2类的属性和方法在类中,使用关键字var来声明变量,即类的属性。使用关键字function来定义函数,即类的方法。例如,以下是一个简单的类定义:classa{var$a='helloworld';functionfun($b){echo"helloworld";}}7.2.2类的属性和方法自PHP5.3.0起,新增对nowdoc(详见第3.2.3节)的支持,即可以使用nowdoc初始化属性,例如:classa{var$a=<<<'EOT'helloworldEOT;…}不能将类的定义放到多个文件或多个PHP块中,例如,以下的做法是错误的:<?phpclasstest{?>var$tmp;<?phpfunctiontest(){echo"test";}}?>7.2.3类的实例化在声明一个类后,类只存在于文件中,程序不能直接调用。需要创建一个对象后程序才能使用,创建一个类对象的过程叫做类的实例化。类的实例化使用new关键字,关键字后面需要指定实例化的类名,例如,定义一个Ctest类并实例化:<?phpclassCtest //定义一个类Ctest{var$stunumber; //声明一个属性functionadd($str) //声明一个方法{$this->stunumber=$str;//使用$this指针引用类内部的属性echo$this->stunumber;}}$obj=newCtest; //创建Ctest类的一个对象$obj?>在实例化一个类时,有些类允许在实例化时接收参数,如果能够接收参数,可以使用以下代码创建对象,其中$args是所带参数:$obj=newCtest([$args,…]);7.2.4类的访问在对象被创建之后,可以在类的外部对该类的属性和方法进行访问,访问的方法是在该类对象后面使用“->”符号加上要访问的属性和方法。例如,创建了对象“$obj”,类中有属性“$stunumber”,要访问该属性可以使用“$obj->stunumber”,注意属性的前面没有“$”。例如,访问Ctest类的属性和方法:$obj->stunumber='081102'; //给类属性$stunumber赋值echo$obj->stunumber; //输出'081102'$obj->add('081101'); //输出'081101'7.2.4类的访问在PHP
5中,引入了访问修饰符public、private和protected。它们可以控制属性和方法的可见性,通常放置在属性和方法的声明之前。
public。声明为公用的属性和方法,可以在类的外部或内部进行访问。public是默认选项,如果没有为一个属性或方法指定修饰符,那么它将是public的。
private。声明为私有的属性和方法,只可以在类的内部进行访问。私有的属性和方法将不会被继承。
protected。声明为被保护的属性和方法,只可以在类的内部和子类的内部进行访问。7.2.4类的访问说明:为了向后兼容PHP4,PHP5声明属性依然可以直接使用关键字var来替代(或者附加于)public、private或protected,但是已不再需要var了。从PHP5.0到5.1.3,var一度曾被认为是废弃的,且抛出E_STRICT警告,但是PHP5.1.3之后它不再认为是废弃的,也不会抛出警告。如果直接使用var声明属性,而没有用public、private或protected之一,PHP5会将其视为public。例如:<?phpclassCstu{var$number; //PHP视其为publicprotected$name;private$phone;publicfunctionStuinfo(){echo"学生信息";}}$object=newCstu;$object->number="081101";echo$object->number; //输出"081101"$object->Stuinfo(); //输出"学生信息"$object->phone="84565879"; //本语句出错,访问权限不够?>7.2.5静态属性和方法访问静态属性和方法时需要使用到范围解析符“::”,格式如下:classname::$attribute; //访问静态属性classname::Cfunction([$args,…]); //访问静态方法例如:<?phpclassCteacher{public$num="tom";publicstatic$name="未命名";publicstaticfunctionsetname($name){Cteacher::$name=$name;}publicstaticfunctiongetname(){echoCteacher::$name;}}echoCteacher::$name; //输出"未命名"Cteacher::setname("王林"); //访问setname()方法Cteacher::getname(); //输出"王林"echoCteacher::$name; //输出"王林"echoCteacher::$num //出错?>7.2.6构造函数和析构函数
构造函数。在PHP
4中,在类的内部与类同名的函数都被认为是构造函数,在创建类的对象时被自动执行。而在PHP
5中,构造函数的名称为__construct,“construct”的前面是两根下画线。
析构函数。类的析构函数的名称是__destruct,如果在类中声明了__destruct函数,PHP将在对象被销毁前调用析构函数将对象从内存中销毁,节省服务器资源。例如:<?phpclassCon{function__construct($num){echo"执行构造函数$num";}function__destruct(){echo"执行析构函数";}}$a=newCon('1'); //输出"执行构造函数1"$b=newCon('2'); //输出"执行构造函数2"//执行结束,最后输出"执行析构函数执行析构函数"?>7.3类的继承7.3.1子类访问父类在PHP中,允许通过继承其他类的方法来调用这些类里已经定义好的属性和方法,PHP不支持多继承,所以一个子类只能继承一个父类。可以使用extends关键字来指明类与类之间的继承关系。例如,以下是类B继承类A的代码。7.3.2方法重载方法的重载是指在一个类中可以定义多个拥有相同名称的方法,通过参数个数和类型来区分这些方法,而PHP目前并不支持这一特性。但可以通过类的继承,在子类中定义和父类中相同名称的方法来实现类似于方法重载的特性。例如:上述代码中,类B重载了类A的属性$attribute和方法func(),但类A的初始定义不会改变,例如,在以上代码的最后添加如下两行:$a=newA;$a->func(); //输出"父类A"7.3.3使用final关键字PHP
5引入了final关键字,在声明类时使用这个关键字,将使这个类不能被继承。例如,定义一个类A:finalclassA{//….}如果类B尝试继承类A,将会提示以下错误:Fatalerror:ClassBmaynotinheritfromfinalclass(A)另外,如果将final关键字用于声明类中的方法,该方法将不能在任何子类中重载。7.3.4Traits机制Traits和一个类相似,但仅仅旨在用细粒度和一致的方式来组合功能。Traits不能通过它自身来实例化。它为传统继承增加了水平特性的组合。例如:<?phpclassBase{publicfunctionsayHello(){echo'Hello';}}
traitSayWorld{publicfunctionsayHello(){parent::sayHello();echo'World!';}}
classMyHelloWorldextendsBase{useSayWorld;}
$o=newMyHelloWorld();$o->sayHello();?>7.4抽象类与接口7.4.1抽象类抽象类也是PHP
5引入的新特性,它是一种特殊的类,使用关键字abstract来定义,不能被实例化。一个抽象类中至少包含一个抽象方法,抽象方法也是由abstract关键字来定义的。抽象方法只提供了方法的声明,不提供方法的具体实现。例如
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房产项目投资代理合作协议
- 电商平台数据分析与产品迭代优化合同
- 电子档案管理合规性审查与保证协议
- 知识产权保护与竞业禁止协议(针对技术人员)
- 线上线下联动衍生分成补充协议
- 游艇码头泊位租赁及船舶租赁代理与保险服务合同
- 调味品销售合同范本
- 砂石场买卖协议书
- 蒙牛订货会协议书
- 流浪犬抓捕协议书
- 湖北省武汉市2025届高中毕业生四月调研考试物理试题及答案(武汉四调)
- 人教版七年级地理下册 第十章、第十一章 评估测试卷(含解析)
- 消化内科诊疗指南和技术操作规范
- 2025-2030方块地毯行业市场现状供需分析及重点企业投资评估规划分析研究报告
- 小儿推拿(大全)课件
- 全身麻醉和睡眠
- 科技与文化融合的传播方式
- 基层武装工作知识
- 生产异常处理方法及流程
- 广东省广州市越秀区2025年中考一模历史模拟试题(含答案)
- 《小米销售培训》课件
评论
0/150
提交评论