《Web程序设计》学习笔记2——PHP

PHP

简述  

      首先了解PHP是什么,能用来干什么,到底有什么优势。PHP(Hypertext Preprocessor),超文本预处理器,是一种内嵌于HTML的服务端脚本语言(解释性语言,通常以文本形式保存,只有被调用时才能进行解释或编译),与JavaScript较为接近,支持表单处理和数据库访问。PHP主要用于动态网页的开发,功能强大,灵活实用,跟C和Java类似,容易上手,且PHP开源免费,学习成本低,支持多种数据库,能运行在各种平台上,几乎兼容所有服务器。

      当服务器发现一个文档的扩展名为.php、.php3或者.phtml时说明该文档嵌入了PHP脚本,服务器就会调用PHP处理器来解释该脚本。PHP处理器有两种操作模式:复制模式——当PHP处理器在输入文件中遇到标记代码(可能包含嵌入的客户端脚本,如JavaScript或VbScript)时,就只将代码复制到输出文件中;解释模式——当输入文件中有PHP脚本时(含<?php和?>)必须对脚本进行解释,以HTML、XHTML形式发送到输出文件中。

      PHP与JavaScript一样采用动态类型定义,即变量不声明类型,通过赋值来设置变量类型(如$a=1、$a=“fdsf”)。

      PHP数组结合了一般编程语言数组和关联数组(一种具有特殊索引方式的数组,除整数外还可使用字符串或其它类型的值来索引,NULL不可)的特点,且有大量用于创建和处理PHP数组的函数( )。

      PHP拥有庞大的函数库以便于灵活编程,支持过程编程和面向对象编程。

语法特征

       PHP脚本(将PHP代码内嵌到文档中或引用外部文件)必须包含在标签<?php和?>之间。当脚本不在同一个文件时,可通过以文件名作为字符串参数的include结构将文件内容(包括标记语言、客户端代码及PHP代码等)复制到include所在的文件中,如include("test.inc");(.inc做后缀体现文件的作用,include file,相当于c++中的头文件,不影响文件实际类型)。若<?php和?>标签中出现关键字,解释器自动从解释模式切换到复制模式。

      PHP的所有变量必须以$开头,变量名区分大小写,但保留字与函数名是不区分大小写的。

      PHP插入注释的格式:单行注释用#或//,多行用/**/ 。

数据类型

      PHP有四种标量类型——布尔型、整型、双精度型、字符串型,两种复合类型——数组和对象,两种特殊类型——资源类型resource和NULL。

    ▪布尔类型:true,false不区分大小写。布尔类型的上下文若为整型,则0的值为false,其他为true;若为字符串类型,则“0”或空字符串为false,其他为true;若为双精度,则0.0为false,其他为true。    

    ▪整型:PHP中只有一个整数类型,即integer(与C中的long相同),多为32位。

    ▪双精度类型:可包含小数点和指数(指数格式为E或e),小数点前或后没有数字也合法,如.21或32.。

    ▪字符串类型:PHP不支持Unicode(国际组织制定的可以容纳所有文字和符号的字符编码方案),没有char类型,单个字符定义为长度为1的字符串。字符串可用单引号或双引号包起来表示,区别:转义字符在单引号中无特殊含义,在双引号中      则可识别(在转义字符前加反斜杠"\"可以使内容不被转换 )。

      标量类型之间可通过隐式和显式方式转换。隐式方式即通过上下文强制转换,特别注意数值和字符串之间的转换:若字符串的第一个字符不是正负号或者数字时则转换失败,返回0;当字符串中含有句点或E、e时转成双精度,否则转成整数,数字后的非数字字符会被忽略;从双精度转换成整数不进行四舍五入。显式方式有三种:(类型)$变量;用intval、doubleval、strval(变量)将变量转化成整型、双精度型、字符串型;settype($变量,“类型”)。

    ▪NULL类型:未赋值的变量称为未绑定的变量,值为NULL,是NULL类型的唯一取值,若该变量用在表达式中则根据上下文强制转换成某类型的值。如:上下文是数字,则该变量由NULL转化为0;上下文是字符串则转换为空字符串。可通过“IsSet($变量)”测试某变量是否有值(有return true),已经有值的变量可通过unset函数设为未赋值状态。

运算符 

    ▪算术运算符:加减乘都与其他语言一致,除法需特别注意:当两整数相除结果不为整数时得到的值为双精度类型的值。任何对整数的操作,在整数结果溢出时都会返回一个双精度值。PHP中包含大量用于数值计算的预定义函数, 如floor、ceil、round等。

    ▪字符串运算符:字符串运算只有连接运算符“.”,在字符串变量后加{i},则返回i位置上的字符。PHP中同样自带了很多字符串函数,如strlen、strcmp、strpossubstr等。

PHP数组   

      PHP数组是一般编程语言的数组和Ruby、Python等语言的关联数组和散列的结合。每个数组元素由键和值两部分组成,键可以是整数也可以是字符串,特别的是,同一个PHP数组中可以一部分元素的键是整数,一部分元素的键是字符串,且元素的数据类型可以不同

      数组创建:

      (1)通过给变量直接赋值创建。若该变量已经存在,则该变量变为数组;若下标为空,则默认给出一个数字键(该数组当前最大数字键+1,若当前数组中无数字键则为0),如:

       $list="ad";
       $list[]="mk";//此时list变量变为数组,该元素下标为0
       $list[]=5;//该元素下标为1

       (2)使用array结构。array结构需要指定放在数组中的值,也可指定键或创建空数组。若不指定键,php解释器会从0开始提供数字键。array结构与list结构结合可一次为多个变量赋值      

       $t = array();//空数组
       $t = array(1,2,5);//元素下标默认为0,1,2
       $t = array(2 => 1,"mike" => 2,3 => 5);//键为2,mike,3一个数组中可以混用不同类型的键
       $t = array(4,"12","jdj");
       list($a,$b,$c) = $t;//$a,$b,$c的值分别为4,"12","jdj"

     ▪常用函数:          

        删除——unset($数组);//删除整个数组  unset($数组[键]);//删除某个元素

        元素个数——sizeof($数组);

        获取整个数组的键——arrays_keys($数组);

        获取整个数组的值——arrays_values($数组);     

       确定某一元素是否寻在—— arrays_keys_exists(键,$数组);      

       字符串分割成数组——explode(“”,$字符串变量)//第一个参数为分割符,如“,”,空格等

       数组连接成字符串——implode(“”,$数组)//第一个参数为连接符,如“,”,空格等

       添加元素——array_push($数组, , ,…)//将后续参数添加到数组尾部

       删除元素——array_pop($数组)//删除数组最后一个元素

       匹配元素——in_array(表达式,$数组)//判断该表达式的值是否在数组中

        ……

    ▪数组访问:

     通过键访问,如:$list[键]

     通过指针访问:每个数组有一个内部指针,函数current($数组)返回当前指针指向的元素(数组创建时默认指向第一个        元素)。next($数组)指针后移一位,pre($数组),两者都是先移动当前指针再返回当前指针的值,each($数组)        则不同,先返回当前指针指向的元素(返回键为“key”和“value”的双元素数组)再移动指针。

    数组排序:

    字符串值排在数字前,字符串之间以首字母大小排序。

     sort($数组)——按值排序(升序),按顺序用数字键替换原来的键。

     asort($数组)——按值排序(升序),不改变原来的键。(多适用于散列)

     ksort($数组)——按键排序(升序),不改变原来的键。

会话

     cookie(网站为了辨别用户身份、进行session跟踪而存储在客户端上的记录数据):PHP可以方便的创建和使用cookie,setcookie(“cookie名”,“cookie值”,time()+秒)来创建cookie,所有cookie都存放在$_COOKIES数组中,可通过IsSet查找cookie是否存在。

      ▪session(在整个会话中一直存在,存储特定用户会话所需要的属性及配置信息):PHP中主要关注会话跟踪而不是会话ID,每次会话通过session_start()创建ID,会话变量及值存储在$_SESSION数组中,可通过IsSet查找变量是否存在。


PS:PHP功能强大,一些相对C++,Java等一般语言来说不太规范的形式也可以用,怕会搞混,所以诸如print()能省括号这种还是不要省了,尽量按一般语言形式写。



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
<>人民邮电出版社的教程哦,所以,好书,你懂的!! 第1章web应用开发简介 1 1.1何为web应用 1 1.1.1web的概念及发展 1 1.1.2web应用程序 2 1.2使用java开发web应用 3 1.2.1面向对象的编程语言 3 1.2.2丰富的框架技术 4 1.2.3xml、css的应用 4 1.2.4使用javascript与ajax提升用户体验 7 1.3多种集成开发环境 9 1.3.1集成开发环境简介 9 1.3.2web应用服务器说明 11 本章小结 14 课后练习 14 第2章 javaee运行及开发环境 15 2.1jdk的下载与安装 15 2.1.1jdk的下载与安装 15 2.1.2配置环境变量 17 >2.2tomcat的下载与安装 19 2.2.1下载并安装tomcat服务器 19 .2.2.2基本配置 22 2.2.3服务器页面介绍 23 2.3eclipse的下载与安装 24 2.3.1eclipse的下载与安装 24 2.3.2熟悉eclipse开发环境 24 2.4项目实战——第一个javaee应用:helloworld 28 2.4.1开始创建第一个javaee应用 28 2.4.2熟悉helloworld框架结构 29 本章小结 32 课后练习 32 第3章jsp和servlet 33 3.1开发第一个jsp+servlet应用 33 3.1.1创建工程 33 3.1.2编写程序 34 3.1.3部署应用 35 3.2认识jsp 36 3.2.1jsp的工作原理 37 3.2.2jsp注释方式 37 3.2.3jsp声明方式 38 3.2.4jsp表达式的应用 39 3.2.5jsp的脚本段 39 3.2.6jsp的编译指令 40 3.2.7jsp的动作指令 41 3.2.8jsp的内置对象 43 3.3认识servlet 46 3.3.1servlet的开发 46 3.3.2使用httpservlet 47 3.3.3servlet的生命周期 49 3.3.4load-on-startupservlet 50 3.4自定义标签库 51 3.5预处理用户请求:filter 53 3.6使用listener 56 3.7项目实战——用户登录 59 本章小结 62 课后练习 63 第4章sql与jdbc 64 4.1sql 64 4.1.1sql概述 64 4.1.2ddl与dml简介 64 4.1.3sql使用方法 65 4.2jdbc 67 4.2.1jdbc概述 67 4.2.2jdbc驱动程序 68 4.2.3使用jdbc读取数据 69 4.3项目实战——存储图书信息 73 本章小结 78 课后练习 79 第5章struts2框架基础 80 5.1mvc框架 80 5.1.1model1与model2 80 5.1.2mvc设计模式 81 5.1.3struts2框架的mvc架构 82 5.2struts2概览 84 5.2.1struts2的工作流程 84 5.2.2struts2的简单应用 85 5.3struts2基础 87 5.3.1action详解 88 5.3.2结果与视图 91 5.3.3struts.xml的配置 94 5.4值栈与ognl表达式 100 5.5struts2的标签库 103 5.5.1控制标签 103 5.5.2数据标签 104 5.5.3表单标签 105 5.5.4非表单ui标签 107 本章小结 108 课后练习 109 第6章struts2高级应用 110 6.1拦截器 110 6.1.1拦截器工作机制 110 6.1.2拦截器及拦截器栈的应用 111 6.1.3自定义拦截器 115 6.2类型转换器 117 6.2.1struts2内置类型转换器 117 6.2.2引用类型的转换方式 117 6.2.3特殊对象的类型转换 118 6.2.4类型转换的错误处理 121 6.3输入校验 123 6.3.1输入校验的必要性 123 6.3.2编程方式实现输入校验 125 6.3.3应用struts2输入校验框架 128 6.3.4自定义校验器 130 6.4国际化 131 6.4.1国际化实现原理 131 6.4.2准备国际化资源文件 131 6.4.3调用国际化资源文件 134 6.5上传和下载 135 6.5.1文件上传的实现原理 135 6.5.2struts2文件上传实现方式 136 6.5.3struts2文件下载实现方式 141 本章小结 143 课后练习 144 第7章 struts2中应用模板语言 145 7.1模板语言简介 145 7.2应用velocity 146 7.2.1velocity基础 146 7.2.2struts2对velocity的支持 153 7.3应用freemarker 155 7.3.1freemarker基础 155 7.3.2struts2整合freemarker 166 7.3.3使用struts2标签设计模板 170 7.4freemarker与velocity的比较 171 本章小结 171 课后练习 172 第8章hibernate框架基础 173 8.1orm简介 173 8.1.1应用orm的意义 173 8.1.2流行的orm框架 174 8.2准备hibernate运行环境 174 8.2.1下载与安装hibernate 175 8.2.2hibernate发布包介绍 175 8.3认识hibernate 176 8.3.1hibernate框架结构 176 8.3.2hibernate配置文件 177 8.3.3configuration与sessionfactory 178 8.3.4session类 179 8.3.5hibernate中的关联关系 179 8.3.6hibernate映射文件 180 8.3.7hibernate工作原理 182 8.4项目实战——新闻内容显示 183 本章小结 186 课后练习 187 第9章hibernate查询 188 9.1hibernate的数据检索策略 188 9.1.1立即检索 188 9.1.2延迟检索 189 9.1.3预先检索 190 9.1.4批量检索 191 9.2hibernate的数据查询方式 193 9.2.1hql方式 193 9.2.2qbc方式 194 9.2.3原生sql方式 195 9.3hibernate的关联查询 196 9.3.1一对一关联关系的使用 196 9.3.2一对多、多对一关联关系的使用 197 9.3.3多对多关联关系的使用 199 9.4hibernate过滤 201 9.4.1session过滤 201 9.4.2filter过滤 201 9.5项目实战——客户订单管理 202 本章小结 207 课后练习 207 第10章hibernate性能优化 208 10.1hibernate事务与并发 208 10.1.1什么是事务 208 10.1.2hibernate中的事务处理 209 10.1.3在hibernate中使用jta事务 210 10.1.4并发控制 211 10.2hibernate缓存 213 10.2.1缓存的工作原理 213 10.2.2应用一级缓存 214 10.2.3应用二级缓存 214 10.2.4应用第三方缓存 216 10.3项目实战——借还图书 217 本章小结 224 课后练习 224 第11章spring框架基础 226 11.1spring框架概述 226 11.1.1认识spring框架 226 11.1.2spring框架特点 226 11.1.3spring框架核心架构 227 11.2建立spring开发环境 228 11.2.1下载spring框架 228 11.2.2spring发布包与软件包 229 11.2.3创建spring应用环境 230 11.3bean的装配 231 11.3.1bean基本配置 232 11.3.2为bean添加属性 232 11.3.3简化配置 233 11.4理解spring的核心——ioc 234 11.4.1控制反转 234 11.4.2依赖注入的3种方式 236 11.5beanfactory与applicationcontext 238 11.5.1认识beanfactory 238 11.5.2使用applicationcontext 238 11.6项目实战——spring问候程序 239 本章小结 241 课后练习 241 第12章springaop 242 12.1aop基础 242 12.1.1aop与oop的比较 242 12.1.2aop的核心概念 243 12.1.3java动态代理与aop 244 12.1.4springaop简介 245 12.2使用spring的通知 246 12.2.1beforeadvice 246 12.2.2afterreturningadvice 248 12.2.3methodinterceptor 249 12.2.4throwadvice 250 12.3使用spring的切入点 251 12.3.1静态切入点 251 12.3.2动态切入点 253 12.4springaop的代理工厂 253 12.4.1选择合适的代理 253 12.4.2proxyfactory 254 12.4.3proxyfactorybean 254 12.5项目实战——输出日志 256 本章小结 258 课后练习 259 第13章 spring与javaee持久化数据访问 260 13.1spring对dao模式的支持 260 13.1.1统一的数据访问异常 260 13.1.2通用的数据访问模板及抽象支持类 261 13.2spring的jdbc 262 13.2.1为什么需要jdbctemplate 262 13.2.2通过jdbcdaosupport使用jdbctemplate 263 13.2.3jdbctemplate提供的常用数据操作方法 264 13.3spring中的事务处理 265 13.3.1spring事务处理概述 266 13.3.2编程式事务处理 266 13.3.3声明式事务处理 267 13.3.4标注式事务处理 268 13.4项目实战——公司人事管理 269 本章小结 276 课后练习 276 第14章spring与struts2、hibernate框架的整合基础 277 14.1spring与struts2的整合方式 277 14.1.1struts2应用的扩展方式 277 14.1.2spring插件的应用 278 14.2spring和hibernate的整合 279 14.2.1spring对hibernate的支持 279 14.2.2管理sessionfactory 279 14.2.3hibernate的dao实现 281 14.2.4使用hibernatetemplate 281 14.2.5管理hibernate事务 282 14.3项目实战——学生成绩查询系统 283 本章小结 292 课后练习 293 第15章图书馆管理系统 294 15.1系统功能解析 294 15.2系统数据库设计 295 15.2.1数据库分析 295 15.2.2数据表关联关系分析 298 15.3系统框架搭建 300 15.3.1创建工程 300 15.3.2工程目录结构 300 15.4系统代码实现 302 15.4.1数据库连接的实现 303 15.4.2工具类的实现 304 15.4.3管理员登录与退出实现 306 15.4.4系统管理实现 313 15.4.5图书管理实现 319 15.4.6读者管理实现 329 15.4.7借还管理实现 333 15.4.8前台功能实现 336 本章小结 342
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值