• 1. PHP 开发与应用
  • 2. 目录PHP 简介及环境搭建 PHP 语法基础 处理 WEB 请求 操作 MySQL 数据库 面向对象编程 正则表达式和文件操作 MVC 和 PHP 框架
  • 3. 什么是PHP?PHP - Hypertext Preprocessor PHP的特点 脚本语言 速度快 开源 支持各种流行的数据库 跨平台、支持各种流行的WEB服务器 支持面向对象
  • 4. PHP开发工具Zend Studio VS.PHP for Visual Studio
  • 5. 搭建开发环境Apache HTTP Server 2.2 http://httpd.apache.org/download.cgi PHP 5.3.4 http://www.php.net/downloads.php MySQL 5.5.8 http://www.mysql.com/downloads/mysql/ Zend Studio 8.0 http://www.zend.com
  • 6. 集成配置I将PHP安装目录下的php.ini-development文件复制一份改名为php.ini 打开php.ini文件,找到“; extension=php_mysql.dll”,将前面的分号去掉,以加载PHP的MySQL模块;找到,将php_mysql.dll改为绝对路径“; default_charset”改为“default_charset = "utf-8"”;找到“;date.timezone”改为“date.timezone=RPC” 打开Apache的conf子目录下的httpd.conf文件,找到“#Include conf/extra/httpd-vhosts.conf”,将前面的#号去掉。 httpd-vhosts.conf中德DocumentRoot修改目录 在httpd.conf最後添加如下配置以集成PHP LoadModule php5_module "PHP目录/php5apache2_2.dll" PHPIniDir "PHP目录" AddType application/x-httpd-php .php //支持php文件 Action application/x-httpd-php "PHP目录/php-cgi.exe" //php类型的文件由php-cgi.exe解析
  • 7. 集成配置II打开apache\conf\extra\httpd-vhosts.conf文件,添加以下配置: ServerAdmin webmaster@dummy-host2.localhost DocumentRoot "ZEND工作区目录" ServerName localhost:8080 ErrorLog "logs/zend.localhost-error.log" CustomLog "logs/zned.localhost-access.log" common allow from all allow from all
  • 8. 目录PHP 简介及环境搭建 PHP 语法基础 处理 WEB 请求 操作 MySQL 数据库 面向对象编程 正则表达式和文件操作 MVC 和 PHP 框架
  • 9. Hello PHP
  • 10. 输出函数print(string) print(“Hello world!”) print(‘Hello world!’) echo(string) echo(“Hello world!”); echo(‘Hello world!’); printf(format,arg1,arg2,…) printf("%s的工资是%.2f元
    ","sve",10000); printf("%s的工资是%2\$.2f元,整数部分为%2\$u元。","sve",10000.5);
  • 11. printf的格式化指示符符号描述%b显示为二进制数字%c显示为数字对应的ASCII字符%d显示为带符号的十进制数字%f显示为浮点数%o显示为八进制数%s显示为字符串%x显示为小写形式的十六进制数%X显示为大写形式的十六进制数
  • 12. 变量和常量PHP 标识符命名规则 必须以字母或下划线开头 只能包含字母、数字以及下划线 区分大小写 变量 以$符号开头 在给变量赋值之前不需要声明变量 不需要显式声明变量的数据类型(弱类型) 常量 define(string name, mixed value[, bool case_insensitive])
  • 13. 数据类型布尔、整型、浮点型、字符串 布尔值以0代表False,非0为True 字符串连接运算符“.” 字符串中如果有出现“$”号,必须使用转义符号(“\$”)
  • 14. 转义符号 使用单引号界定的字符号不执行转义以变量替换 字符串格式化函数 sprintf(string format[, mixed arguments) 字符中转义和格式化转义符号描述转义符号描述\n换行符\r回车\t水平制表符\\反斜杠\$美元符号\”双引号\x[0-9A-F]{1,2}十六进制\[0-7]{1,3}八进制
  • 15. 类型转换 类型函数 string gettype(mixed var) bool settype(mixed var,string type) is_XXX 系列函数 自动类型转换类型转换转换操作符转换为转换操作符转换为(bool)或(boolean)布尔值(string)字符串(int)或(integer)整型(array)数组(real)或(double)或(float)浮点数(object)对象
  • 16. PHP中的循环while do…while for foreach foreach( array as value){}
  • 17. PHP中的数组数字键的数组 关联键的数组 多维数组
  • 18. 数组操作Ilist函数提取数组中的多个值 range函数生成值的序列 array_unshift函数在数组头部插入元素 array_push函数在数组尾部插入元素 array_shift函数在数组头部删除并返回元素 array_pop函数在数组尾部删除并返回元素
  • 19. 数组操作IIin_array函数判断数组中是否存在指定的元素 array_key_exists函数判断数组中是否存在指定的键 array_search函数返回数组中指定元素的键,如果不存在则返回 FALSE array_keys函数返回数组的键的数组 array_values函数返回数组的元素的数组
  • 20. 遍历数组key函数返回数组当前指针所在的位置的键 current函数返回数组当前指针所在的位置的元素 each函数返回数组当前指针所在的位置的键值对 next函数将指针移到下一个位置并返回下一个位置的元素 prev函数将指针移到上一个位置并返回上一个位置的元素 reset函数将指针移到第一个元素的位置并返回第一个元素 end函数将指针移到最后一个元素的位置并返回最后一个元素 array_walk函数依次将数组各元素传递给一个自定义函数
  • 21. 数组计数和排序count函数返回数组的元素个数 array_count_values函数返回数组中各元素在数组中出现相同元素的次数 array_unique函数返回去除掉重复元素后的子数组 array_reverse函数对数组进行反转 array_flip函数对数组的键和值进行置换 sort和asort函数对数组进行排序 rsort和arsort函数对数组进行逆序排序 ksort和rksort函数按键对数组进行(逆序)排序 usort函数可根据用户自定义规则对数组进行排序
  • 22. 合并、拆分数组array_merge函数将多个数组合并到一起,遇到相同键时覆盖旧的值 array_merge_recursive函数将多个数组合并到一起,遇到相同键时构建子数组 array_combine函数将两个一维数组组装成一个关联键数组 array_slice函数返回数组中指定范围的元素
  • 23. 函数function 函数名(参数列表) 按值传递 按引用传递 指定参数的默认值 从函数里返回值 函数变量 变量作用域 全局变量 静态变量
  • 24. 文件包含include(string url) include_once(string url) require(string url) require_once(string url) include_path配置 set_include_path(string path) allow_url_fopen配置
  • 25. 目录PHP 简介及环境搭建 PHP 语法基础 处理 WEB 请求 操作 MySQL 数据库 面向对象编程 正则表达式和文件操作 MVC 和 PHP 框架
  • 26. 读取请求字符串的数据使用 $_GET 全局数组获取以 GET 方式传递到服务器的数据
  • 27. 读取表单的的数据使用 $_POST 全局数组获取以 POST 方式提交到服务器的数据
  • 28. 处理文件上传使用 $_FILES 全局数组获取用户上传到服务器的文件 $_FILES 数组是一个二维数组,第一维是上传文件标签的 name 属性值,每二维的内容如下 name – 客户端上传的文件的原名 type – 文件的 MIME 类型 size – 以字节为单位的文件大小 tmp_name – 文件在服务器的临时文件名 error – 错误代码,UPLOAD_ERR_OK 表示文件成功上传 文件上传的设置 file_uploads – 是否允许通过 HTTP 上传文件,布尔值 upload_max_filesize – 以字节为单位的文件大小限制 upload_tmp_dir – 服务器保存上传文件的临时目录
  • 29. 访问会话数据使用 $_SESSION 全局数组可访问会话状态中的数据 会话状态的相关函数 session_start() session_destroy() isset($_SESSION[key]) unset($_SESSION[key]) string session_id([string id])
  • 30. 访问 COOKIE 数据使用 $_COOKIE 访问 COOKIE 的数据 设置 COOKIE 的值 setcookie(string name, string value, int seconds, string path, string domain, bool secure, bool httponly) 删除 COOKIE 的值 setcookie( name, “”, time() – 3600 )
  • 31. 访问环境信息$_REQUEST 包含 $_GET、$_POST、$_COOKIE 全局数组的所有内容 $_SERVER 用于访问服务器的环境变量 $_ENV 用于访问系统的环境变量
  • 32. 目录PHP 简介及环境搭建 PHP 语法基础 处理 WEB 请求 操作 MySQL 数据库 面向对象编程 正则表达式和文件操作 MVC 和 PHP 框架
  • 33. MySQL Workbench创建数据库 创建数据表 插入示例数据
  • 34. PHP 中的 MySQL 配置PHP.ini 中的 MySQL 配置 mysql.allow_persistent – 是否允许 MySQL 的持久连接 mysql.max_persistent – 每个进程中最大持久连接数,默认为-1 mysql.max_links – 每个进程的最大连接数,默认为-1 mysql.trace_mode – 跟踪模式,默认为0 mysql.default_port – 默认的数据库服务器端口号 mysql.default_socket mysql.default_host – 默认的服务器地址 mysql.default_user – 默认使用的登录名 mysql.default_password – 默认使用的密码 mysql.connect_timeout – 连接超时秒数,默认60秒
  • 35. 建立数据库连接打开数据库连接 mysql_connect(server,user,pwd,newlink) newlink – 强制建立新连接 连接成功则返回连接标识符,失败则返回 FLASE mysql_pconnect(server,user,pwd) 关闭数据库连接 bool mysql_close(link_identifier) 选择数据库 bool mysql_select_db(database,connection) 读取 MySQL 的错误信息 mysql_error()
  • 36. 执行查询mysql_query – 执行 SQL 语句 mysql_affected_rows – 返回前一次操作所影响的行数 mysql_unbuffered_query – 执行不带缓存的查询 mysql_fetch_object – 返回结果集中的行 mysql_fetch_array – 返回结果集中的行,一次一行 mysql_fetch_field – 返回结果集中指定的列信息对象 mysql_data_seek – 移动结果集的指针 mysql_free_result – 释放结果集占用的内存 mysql_insert_id – 返回上一步插入操作产生的 ID mysql_num_rows – 返回结果集中的行数 mysql_num_fields – 返回结果集的字段数 mysql_list_dbs – 列出 MySQL 服务器的所有数据库
  • 37. 示例 - 增、删、改、查
  • 38. 示例 – 通用数据表
  • 39. 目录PHP 简介及环境搭建 PHP 语法基础 处理 WEB 请求 操作 MySQL 数据库 面向对象编程 正则表达式和文件操作 MVC 和 PHP 框架
  • 40. 类和接口的定义class 关键字 interface 关键字 abstract 关键字 extends 关键字 implements 关键字 new 关键字 注意 PHP 不支持方法和操作符重载 PHP 不支持多重继承
  • 41. 成员的修饰符和运算符成员修饰符 public private protected final abstract static 运算符 :: ->
  • 42. 构造函数与析构函数构造函数 与类同名的方法被认为是构造函数 __construct 方法 析构函数 __destruct 方法 在子类的构造函数中不会自动调用父类的构造函数
  • 43. MySQL 实用工具类
  • 44. 目录PHP 简介及环境搭建 PHP 语法基础 处理 WEB 请求 操作 MySQL 数据库 面向对象编程 正则表达式和文件操作 MVC 和 PHP 框架
  • 45. 正则表达式正则表达式的作用 字符串格式较验 从字符串中按模式匹配子串 从字符串中按模式替换子串内容 按模式分割字符串 PHP 支持的正则表达式 POSIX 风格的正则表达式(PHP 6将不再支持) PCRE 风格的正则表达式(兼容 Perl)
  • 46. PHP 的 PCRE 函数preg_match – 进行正则表达式匹配 preg_match_all – 进行全局正则表达式匹配 preg_grep – 从指定数组中提取所有与模式匹配的数组元素 preg_quote – 转义正则表达式字符 preg_replace – 执行正则表达式的匹配和替换 preg_replace_callback – 使用回调函数执行正则表达式的匹配和替换 preg_split – 用正则表达式分割字符串 preg_filter – 执行正则表达式的匹配和替换 preg_last_error – 返回上一次正则表达式匹配时发生错误
  • 47. 匹配规则符号含义符号含义^断言目标的开头$断言目标的结尾.除换行符号外的任意一个字符|或者()分组[]定义字符类\d十进制字符\D非十进制字符\s空白字符\S非空白字符\w任意字母、数字或下划线\W非字母、数字或下划线\b字分界线\B非字分界线符号含义符号含义?出现0或1次*出现0或多次+出现1或多次{m}出现m次{m,n}出现m到n次{m,}出现至少m次
  • 48. preg_matchint preg_match( string $pattern, string $subject [, array $matches [, int $flags [, int $offset] ] ] ) pattern – 要匹配的模式 subject – 断言目标 matches – 保存匹配结果的数组 flags – 指示是否设置偏移量,可用的值只有PREG_OFFSET_CAPTURE offset – 匹配开始位置的偏移量 未匹配到数据时返回 0,否则返回 1
  • 49. preg_match_allint preg_match_all( string $pattern, string $subject [, array $matches] ) pattern – 要匹配的模式 subject – 断言目标 matches – 保存匹配结果的数组 返回匹配到的结果的数量
  • 50. preg_greparray preg_grep(string $pattern, array $input [, int $flags] ) pattern – 要匹配的模式 input – 断言目标 flags – 反向标识,可取值是 PREG_GREP_INVERT
  • 51. preg_replacemixed preg_replace( mixed $pattern, mixed $replacement, mixed $subject) $pattern – 要匹配的模式或模式数组 $replacement – 用于替换的字符串或字符串数组 $subject – 替换目标
  • 52. 文件操作resource fopen( string $filename, string $mode ) filename – 要打开的文件的 URL mode – 打开文件的模式 r 只读 r+ 读写 w 只写(覆盖模式) w+ 读写 a 只写(追加模式) a+ 读写 x 创建并写入 x+ 创建并读写 bool fclose( resource $handle ) bool feof( resource $handle ) string fgets( resource $handle [, int $length]) string fgetc( resource $handle ) int fseek( resource $handle, int $offset [, int $whence]) whence -> SEEK_SET, SEEK_CUR, SEEK_END int fwrite( resource $handle, string $content )
  • 53. 目录PHP 简介及环境搭建 PHP 语法基础 处理 WEB 请求 操作 MySQL 数据库 面向对象编程 正则表达式和文件操作 MVC 和 PHP 框架
  • 54. Zend Framework一个优秀的 PHP 开源框架 提供了数十个开源组件 可用于快速开发基于 MVC 风格的 PHP 应用程序 http://www.zend.com/en/community/downloads 下载后在PHP目录中创建一个includes目录,并解压这个目录下 打开PHP.ini文件,找到include_path配置,添加Zend框架的library目录的全路径到include_path配置中。
  • 55. 应用程序的目录结构Zend Framework 没有强制规定应用程序的目录,但建议使用左侧所示的目录结构 图片、JS、CSS等公共资源放在 public 目录的相应子目录下 Zend Framework 或其他第三方组件库放在 library 目录下 controllers、models、views 目录分别放置控制器、模型和视图的文件
  • 56. 配置 URL 重写规则在网站根目录下创建一个名为.htaccess的文件,文件内容如下 RewriteEngine on RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php 启用 Apache 的URL Rewrite 模块 在httpd.conf中找到“;LoadModule rewrite_module modules/mod_rewrite.so”,将前面的分号去掉 打开httpd-vhosts.conf,在标签下加“allowOverride all”一行。
  • 57. 配置前端控制器打开public目录下的index.php 添加以下语句
  • 58. 多模块应用程序的目录结构如果应用程序不作为服务器根应用程序运行,则需要配置多模块支持 在application目录下创建一个名为modules的目录 在modules目录下创建controllers、models和views子目录,子目录的结构与application目录下的相关子目录的结构一致 修改控制器类的名称,加上“模块名_”前缀
  • 59. 配置模块的前端控制器打开public目录下的index.php 添加以下语句
  • 60. MVC的页面组织方式在Zend Framework中,每个页面叫做Action,一个Controller包含多个Action URL的构成是/Module/Controller/Action Module是模块名 Controller是控制器名 Action是请求动作的名称 控制器要放在controllers目录下,命名规则要求以模块名加下划线为前缀,Controller为后缀,控制器类要从Zend_Controller_Action继承 请求动作是控制器里的一个方法,命名规则要求以Action为后缀,同时要求方法名以小写字母开头 每个请求动作要对应一个视图,视图放在views/scripts目录下相应控制器的子目录中,视图文件以请求动作的名称作为文件名,以.phtml作为扩展名。
  • 61. 示例 – 用户账户管理实现用户账户的显示、增加、修改、删除
  • 62. (本页无文本内容)