php 与 mysql权威指南_《php与mysql权威指南》第二部分

第二部分 PHP篇

第3章 PHP基础

3.1 PHP的工作原理

3.2 PHP的版本变迁

3.3 PHP特性

完全免费开源,升级快,很多成熟的框架支持

支持模块化开发,实现程序逻辑与用户界面的完全分类

便捷性,开发快,硬性快,易学习

良好的跨平台性

同目前主流技术兼容

简单的语言

支持所有主流与非主流数据库

面向对象

编辑简单,实用性强

3.4 PHP应用范围

3.5 PHP基本语法

标记

...?>

注释

// 注释内容 # C++风格单行注释

# 注释内容 # Shell风格单行注释

/ *

* 注释内容

* /

3.6 PHP中的变量与常量

变量

声明 $a

赋值 $a=1;

可变变量 B赋值给A,可通过B得到A变量的值

变量作用域

局部变量

函数参数

全局变量 GLOBAL

静态变量 static

超级全局变量:预定义变量

$GLOBALS

$_SERVER

$_GET|$_POST

$_SESSION|$_COOKIE

$_REQUEST

常量:在程序执行中无法修改的值

自定义常量

查看常量是否被定义

boolean define(starting name,mixed value[,bool case_insensitive])

# 定义常量不用$开头

魔术常量

根据位置而改变的常量

__LINE__

__FILE__

__FUNCTION__

__CLASS__

__METHOD__

3.7 表达式

分类

单目表达式:$a

双目表达式:$a+$b

三目表达式:$a?$b:$c

操作符(从上到下优先级降低)

非结合 new # new

从左向有 [ # array

非结合 ++ -- # 递增递减

非结合 !·-(int)(float)(string)(array)(object) # 类型

从左到右 * / % #算数运算符

从左到右 +-. #算数运算符和字符运算符

从左到右 << >> #位运算符

非结合 < <= > >= #比较运算符

非结合 == != === !== #比较运算符

从左到右 & #位运算符和引用

从左到右 ^ #位运算符

从左到右 | #位运算符

从左到右 && #逻辑运算符

从左到右 || #逻辑运算符

从左到右 ?: #三元运算符

从右到左 = += -= *= /= %= |= &= ^= <<= >>= #赋值运算符

从左到右 And #逻辑运算符

从左到右 Xor& #逻辑运算符

从左到右 Or #逻辑运算符

3.8 PHP中的数据类型

基本数据类型:整型、浮点型、布尔型、字符串

复合数据类型:数组、对象

特殊数据类型:null和资源

3.9 强制类型转换

显式和隐式强制转换

隐式:PHP语言引擎自动解析的转换方式。如一个字符串和一个整型相加,会将字符串转换成整型

显式:(int)|(float)|(string)|(bool)|(array)|(object)

有用的强制类型转换函数

is_type()/gettype/settype

3.10 PHP语句 顺序结构|分支结构|循环结构

循环语句

while语句

while(){

}

do while语句

do{

}while()

for(;;){

}

条件判断语句

if(){}elseif(){}else{}

switch($temp){case 'value':执行;break;...;default:执行}

第4章 字符串和正则表达式

4.1 什么是字符串

4.2 定义字符串

'' "" 标识符(定界符)

4.3 获取字符串

substr($string,$start[,$length])

4.4 拼接字符串

. .=

4.5 字符串格式化

printf($format[,$arg1][,$arg2])

sprintf($format[,$arg1][,$arg2])

nl2br($string):将字符串中的\n解释为html中的br

wordwrap($str[,$width[,$break[,$cut]]]):让字符串在指定的位置上强制换行

4.6 修改字符大小写

strtolower($str):转小写;

strtoupper($str):转大写;

ucwords($str):首字母转大写;

4.7 计算字符串长度和字符数目

strlen($str):字符串长度;

substr_count($str,$needle[,$offset[,$length]]):计算某字符串在另一字符串中出现的次数

$needle:要查询的字符串,$offset:搜索位置(默认0)

str_word_count($str[,$format[,$charlist]]):将字符串按单词拆分,只有第一个参数时返回单词数量,有多个参数时返回拆分的数组

4.8 字符串查找函数

strstr($str,$needle):查找字符串

strpos($str,$needle[,$offset]):搜索字符串位置

4.9 字符串的复制和替换

str_repeat($str,$num):复制

str_replace($str,$replace,$start[,$length]):替换

4.10 字符串比较

strcmp(),strcasecmp(),strnatcmp()

4.11 正则表达式的概念和语法

基本模式匹配

^ $ \

字符集

[a-z]

[A-Z]

[a-zA-Z]

[0-9]

[0-9\.\-]

[\f\r\t\n]

[[:alpha:]] # 字母

[[:digit:]]

[[:alnum:]] # 字母和数字

[[:space:]] # 白字符

[[:upper:]]

[[:lower:]]

[[:punct:]] # 标点符号

[[:xdigit:]] # 16进制数字

com|org|cn #或

重复

{n,n1}:某规则重复n到n1之间的次数(包括两者)

? :0个或1个前面的内容

* :0个或多个前面的内容

+ :1个或多个前面的内容

使用正则表达式查找子字符串:ereg(),eregi()

ereg($rule,$str[,$regs]):结果放在$regs中

用正则分隔字符串split(),explode()

split($rule,$str[,$limit]):以$rule规则分割$str,最多分割$limit个子字符串

explode($str,$rule[,$limit]):

第5章 数组

5.1 数组基本概念

操作符:[] + == === != !== <>

5.2 数字索引数组

初始化:$arr=array('val1','val2');

range($start,$end,$step);

访问数组:$arr[0]

循环访问数组

5.3 数组的创建和添加

创建

$arr=array('val1','val2');

$arr=array(1=>'val1','jds'=>'val2');

添加数组

$arr[]='val';

5.4 数组元素的添加和删除

array_unshift:数组头部添加元素

array_push:数组尾部添加元素

array_shift:数组头部删除元素

array_pop:数组尾部添加元素

5.5 数组遍历

for ;foreach ;list each;

5.6 字符串与数组之间转换

explode():字符串转数组

implode():数组转字符串

5.7 多维数组

5.8 数组排序

sort:低到高 rsort:高到低 # 键值对应关系会变,对值排序

asort:低到高 arsort:高到低 # 键值对应关系不变,对值排序

ksort:低到高 krsort:高到低 # 键值对应关系不变,对键排序

shuffle():随机排序,键值重新初始化

array_multisort():多维数组排序

5.9 数组判断函数

in_array()

array_key_exists()

5.10 数组合并和拆分

合并:

array_merge():第一个数组与第二个数组追加成一个数组

array_combine():第一个数组的值作为键,第二个数组的值作为值生成新的数组

拆分:array_chunk()

数组交集:array_intersect()

数组变成标量:extract()

5.11 快速初始化数组

range()

array_fill()

5.12 数组中查找值

array_search();

5.13 定位数组位置

in_array():判断是否在数组中

array_search():搜索给定的值,返回相应键名

array_keys():获取数组所有的键名

array_values():获取数组所有的值

第6章 PHP对文件的操作

6.1 打开/关闭文件

打开:$file=foppen("path",'r');

# r代表只读

# w代表写入

# a代表指向文件末尾,以写打开

# r+指针在头,读写打开

# x代表目标文件存在警告,不存在新建

关闭:fclose($file);

6.2 读取文件

fread()和file()

fpassthru():通过打开的文件指针作为参数,将文件信息标准输出到浏览器中,并在输出后关闭

fgets()和fgetss():读取一行

fgetcsv():根据定界符来分开文件中的文字信息

6.3 写入文件

fwrite()

6.4 方便的处理文件

file_get_contents()和file_put_contents()

6.5 其他文件处理函数

copy($source,$dest);//将文件source复制给dest

dirname(path);//返回文件所在路径

feof();//指针是否指向文件尾

file_exists($filename);//文件是否存在

file_size($filename);//文件大小

6.6 移动指针小案例

ftell():查看指针位置

6.7 文件锁定

flock($file,LOCK_SH):读操作锁定

flock($file,LOCK_EX):写操作锁定

flock($file,LOCK_NU):释放已有锁定

flock($file,LOCK_NB):防止加锁阻塞

flock($file,LOCK_UN):解锁

第7章 php函数与代码的重用性

7.1 定义和调用函数

7.2 参数

形参:定义函数时的参数;实参:调用函数时传递的参数

func_num_args():返回参数总数

func_get_args():返回参数具体信息

按值传递、引用传递、默认参数值

7.3 函数内的变量范围

随着声明位置的不同而有不同的作用范围

局部变量:函数内部声明

静态变量:static #内存地址不变也不会消失

全局变量:global|$GLOBAL['key']

7.4 函数的作用域和可用性

7.5 用变量存储函数的名称

PHP会自动解析变量的值是否为一个函数名

7.6 递归函数:函数内部直接或间接调用自己本身的语句

其实是耗内存的

7.7 使用和包含文件

include() include_once()找不到输出警告继续执行脚本 带once的仅引入一次

require() require_once()找不到输出致命错误终止脚本 带once的仅引入一次

第8章 面向对象的程序设计

8.1 类和对象的关键概念

类:具有相同特性的对象的集合。在oop术语中,实体的兴致和行为的具体定义成为类

声明:class 类名{var $temp;function 方法名(){}}

对象:在类的基础上创建实体的特定实例

创建对象的过程成为实例化 new关键字

特性:

对象的句柄:用于区分不同的对象

对象的属性:用于描述对象的静态特性(属性)

对象的方法:用于描述对象的动态特性(方法)

用操作符'->'来调用成员属性和方法

类成员的访问控制:public private protected

字段:也称类的属性(成员变量)

可用$this访问

属性:也称类的成员变量,用来保存信息数据

常量:const关键字,存储于对象直接相关的信息,公开可用,不能用$this调用

方法:函数时独立的实现某一功能,成员方法是类的一部分

$this关键字:只能在类内部使用,指向$this所在类的本身

面向对象编程的特性:封装,继承,多态

8.2 构造方法和析构方法:对象创建和销毁过程中自动执行

__construct()

__destruct()

8.3 静态类成员

静态属性

静态方法

调用操作符::

8.4 对象克隆

clone 对象名

__clone()方法:克隆的操作期间执行

8.5 继承

class child extends parent{}

使用parent::父类方法调用父类的方法

instanceof 关键字检测当前对象是否属于某一个类

覆盖父类的方法:与父类起同名的方法或属性

8.6 多态

通过继承实现多态

通过接口实现多态

interface 接口名 #方法都没有函数体

通过class child implements parent{}来实现,其中的方法存在函数体

8.7 抽象类和接口

抽象类

抽象类中至少包含一个关键字abstract修饰的抽象方法

抽象方法的不实现具体功能的空方法,只能由子类去继承

所有方法由子类去实现

abstract class 抽象类名称{

abstract function 成员方法1(参数1,参数2..);

function 成员方法1(参数1,参数2..);

}

接口:成员方法声明的集合

使用类实现接口时,必需包含接口中的所有方法

interface 接口名称{

function 成员方法1(参数1,参数2..);

function 成员方法1(参数1,参数2..);

}

接口与抽象类的区别

接口没有数据成员,抽象类有数据成员可实现数据封装

接口中没有构造和析构函数,抽象类可以有

接口中的方法都是public类型

一个类可同时继承多个接口,只能继承一个抽象类

接口中不能有实现的方法,自定义的方法只能在继承该接口的类中实现

8.8 命名空间

namespace

use

__NAMESPACE__

8.9 特殊方法(魔术方法)

__tostring():当对象调用echo|print方法时会输出对象 object id #5

__autoload():第一次引用一个类时调用该方法

__get()|__set():在程序打算获取|设置对象未定义的属性时调用

__call():调用类内未定义的方法时调用

第9章 php的错误、异常处理和调试

9.1 常见错误类型

语法错误:缺少分号,括号不完整等

逻辑错误:

未定义错误:未定义变量或常量,未定义有类或函数

环境错误:

windows下路径分隔符'\',linux下路径分隔符'/'

操作系统错误

php版本错误

PHP配置错误

运行错误:数据库不存在|数据库表不存在|正包含的文件不在include_path中|PHP服务器进程没有权限访问|网络上的主机因某种原因不允许被访问

9.2 错误处理机制

错误级别列表

E_ALL:所有错误和警告

E_COMPILE_ERROR:编译错误

E_COMPILE_WARNING:编译警告

E_CORE_ERROR:内部错误

E_CORE_WARNING:启动时警告

E_ERROR:严重错误,不可恢复

E_NOTICE:运行代码字啊操作一些位置的动作

E_PARSE:编译时解析错误

E_RECOVERABLE_ERROR:被用户自定义的错误处理程序所捕捉

E_SCRICT:版本迁移

E_USER_ERROR:用户定义错误

E_USER_NOTICE:用户定义通告

E_USER_WARNING:用户定义警告

E_WARNING:操作错误

指令:error_reporting=E_ALL

错误处理函数

trigger_error($error_msg[,$error_type]):触发自定义的错误信息函数

自定义错误页面:用header()|include()来进一步实现错误页面跳转|引用

错误日志:

初始化php日志文件:void define_syslog_varialbles(void),使用openlog(),closelog(),syslog()等日志函数时所必需的

打开日志连接:openlog(ident,option,facility)

关闭日志连接:closelog(void)

向日志目标发送消息:syslog(priority,message)

9.3 异常处理

异常处理的步骤

应用程序尝试做一些操作

如果尝试失败,则异常处理特性抛出一个异常

指定的处理器捕获该异常,完成必要的任务

异常处理特性清除在尝试期间占用的资源

PHP基本异常类:exception

内置方法:

getMessage()

getCode()

getFile()

getLine()

getTrace():返回一个包含产生异常代码的回退路径的数组

getTraceAsString():返回一个包含产生异常代码的回退路径的数组并格式化成字符串

__toString():显示一个exception对象,并给出以上所有方法提供的信息,可以重载

try、throw、catch

try:使用的异常函数位于try代码块内,如果没有触发异常,则代码继续执行,否则抛出异常

throw:规定如何触发异常

catch:捕获异常并创建一个包含异常信息的对象

示例:

-----

function checkNum($num){

if($num>1){

throw new Exception('不能大于1');

}

return true;

}

try{

checkNum(2);

}

catch(Exception $e){

echo 'Message:'.$e->getMessage();

}

?>

-----

创建自定义的exception类

必须是exception类的扩展,继承exception所有属性,并添加自定义函数

多个异常:if else|switch

重新抛出异常:对用户隐藏系统错误,再次抛出友好的消息异常

设置顶层异常处理器:set_exception_handle()-->可设置处理所有未捕获异常的用户自定义函数

异常的规则

需要进行异常处理的代码放在try内

每个try或throw代码块必须至少拥有一个对应的catch代码块

使用多个catch代码块可捕获不同种类的异常

可以在try内的catch代码块中再次抛出异常(re-thrown)

如果抛出异常,必须捕获它

9.4 使用Xdebug进行调试

调试函数echo print_r() var_dump() printf() exit()等函数

Xdebug一款开源的php调试程序

第10章 PHP与html交互

10.1 PHP和web表单

表单基本操作

表单安全性

验证表单输入

过滤表单数据

全局变量设置:register_globals

常用表单数据验证方法

姓名验证:用正则

日期验证:

email验证

密码验证

10.2 通过php上传文件

PHP文件上传资源指令:php.ini文件

file_uploads

upload_tmp_dir

upload_max_filesize

post_max_size

max_input_time

memory_limit

max_execution_time

上传错误信息:$_FILE['name']['error']

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
04-26
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值