第1-5章 略
第6章 PHP基本语法
6.1 PHP的应用
- 收集表单数据
- 生成动态网页
- 字符串处理
- 动态输出图像
- 处理服务器端文件系统
- 编写数据库支持的网页
- 会话跟踪控制
- 处理XML文件
- 支持利用大量的网络协议
- 服务器端的其他相关操作
6.2 PHP语言标记
- 标准风格:开始标记是
- 指令分隔符:分号
- 程序注释:多行注释/* */,单行注释//或#
- 空白的处理:
- 使用两个空行:一个源文件的两个代码片段之间、两个类的声明之间
- 使用一个空行:两个函数声明之间、注释之前。
6.3 变量
- 变量的声明:使用$后面跟变量名表示,弱类型语言不区分类型
- 判空:使用isset()函数检测变量是否设置,使用empty()函数检查变量是否为空。对于””、0、“0”、NULL、FALSE、array()、var、$var,以及没有任何属性的对象都被认为是空。
- 变量的命名:严格区分大小写、以字母或下划线开头。
- 可变变量:$ n u m 等 价 于 num等价于 num等价于{$num},即一个可变变量获取一个普通变量的值作为这个可变变量的变量名。
- 变量的引用赋值:使用&符号,例如: c a r = ” B W M ” ; car = “BWM”; car=“BWM“;bike = & c a r ; 两 个 变 量 的 值 会 互 相 关 联 , 一 个 修 改 ; 另 一 个 自 动 被 修 改 。 但 u n s e t ( car;两个变量的值会互相关联,一个修改;另一个自动被修改。但unset( car;两个变量的值会互相关联,一个修改;另一个自动被修改。但unset(car)只会取消两个变量的关联关系,而变量$bike不会消失
- 变量的类型:PHP支持8种原始类型,四种标量类型(boolean、integer、float、string)、两种复合类型(array、object)、两种特殊类型(resource、NULL)
- 定界符<<<:从<<
<之后的标识符开始,到最后是同样的标识符结束字符串。< li="">
之后的标识符开始,到最后是同样的标识符结束字符串。<> - 数组:使用逗号分隔的key=>value参数。例如:$arr = array(“foo” => “bar”, 12 => true);
- 对象://创建对象 $p = new Person; //属性赋值 $p->name = “Taylor”; //调用方法 $p->say();
- 强制类型转换:若参与运算:true->1.false->0,null->0,例如: n u m 1 = ” 100 S w i f t ” ; num1 = “100Swift”; num1=“100Swift“;num2 = 11;$result = $num1 + $num2; // 结果 result = 111
- 常量的定义:例如 define(“PI”, 3.); echo PI; 常量的定义默认区分大小写,当define函数的第三个参数为true,则不区分大小写。
- 运算符,字符串运算符:英文句号.可将字符串与变量相连。比较运算符:全等于===,操作数相同并且类型相同。
第7章 PHP的流程控制结构
7.1 分支结构
- if else
- switch
7.2 循环结构
- while
- do while
- for
7.3 特殊的流程控制语句
- break
- continue
- exit:直接退出当前脚本
第8章 PHP的函数应用
8.1 自定义函数
例如:
function getName($name) {
echo "姓名 = $name"; return $name; } $result = getName("函数调用"); echo "函数执行结果 = $result";
8.2 PHP变量的范围
- 局部变量:只作用于函数内部
- 全局变量:在函数中使用需要用global关键字声明,或使用$GLOBALS[“age”]
- 静态变量:内部动态变量在函数调用结束后自动释放,而静态变量在函数执行结束后依然保存在内存中,在所有对该函数的调用之间共享
8.3 声明及应用各种形式的PHP函数
- 常规参数的函数:string chr(int ascii)
- 伪类型参数的函数:mixed funName(mixed $args)
- 引用参数的函数:void funName(array &arg),PHP默认是按值传递参数,在函数内部改变参数的值并不会改变函数外部的值。
- 默认参数的函数:function getDefault($m_name=“LiZongWei”, $m_age=“11”) {}
- 可变个数参数的函数:使用系统的func_get_args()函数接收多个参数。
function more_args() {
$args = func_get_args(); echo print_r($args); } more_args("Taylor", "Swift", "LinDan", "LiZongWei");
- 回调函数:变量函数
function add($num1, $num2) {
return $num1 + $num2; } $result = "add"; echo "运算结果:".$result(2, 3);
8.4 使用自定义函数库
- include函数:读入指定文件并执行程序,用于流程控制或设置配置文件和拦截器。
- require函数:读入目标文件内容并替换,用于文件的开头/结尾处或定义类的映射关系。
- include_once 函数:在脚本执行期间包含并运行指定文件。与 include 语句类似,唯一区别是如果该文件中已经被包含过,则不会再次包含;
- require_once 函数:和 require 语句完全相同,唯一区别是 PHP 会检查该文件是否已经被包含过,如果是则不会再次包含。
第9章 PHP中的数组与数据结构
9.1 数组的分类
- 数组分为索引数组和关联数组两种
9.2 数组的定义
- 直接赋值的方式声明数组:例如: l i s t [ 0 ] = ” W u L e i ” ; list[0] = “WuLei”; list[0]=“WuLei“;list[1] = 27;若没有指定索引值,则紧跟索引值元素中最高的索引值递增。
- 输出数组的所有值:使用系统的print_r()或var_dump()函数(输出变量类型)
- 使用array()新建数组:例如:$soccer = array(2, “name” => “WuLei”, 8 => 27, “Man”);
- 多位数组的声明:例如:
$user = array( "InsertUser" => [ 'connection' => 'dzone', 'exchange' => [ 'name' => 'dzone', 'type' => 'direct' ], 'queue' => [ 'name' => 'InsertUser' ], 'routing_key' => 'saveusertask', 'count' => 2 ], 'UpdateUser' => [ 'connection' => 'dzone', 'exchange' => [ 'name' => 'dzone', 'type' => 'direct' ], 'queue' => [ 'name' => 'UpdateUser' ], 'routing_key' => 'handleusertask', 'count' => 2 ] ); echo "多维数组"; echo print_r($user["UpdateUser"]);
9.3 数组的遍历
- 数组的遍历:使用for循环或foreach,例如:
for ($i=0; $i < count($list); $i++) {
echo $list[$i].",\n"; } foreach ($list as $value) {
echo "value=".$value.",\n"; } foreach ($list as $key => $value) {
echo "key=".$key.",value=".$value.";\n"; }
- 联合使用list()、each()、while循环遍历数组
9.4 预定义数组
- $_SERVER:服务器信息
- $_ENV:执行环境提交至脚本的变量
- $_GET:由URL请求提交至脚本的变量
- $_POST:由HTTP POST方法提交至脚本的变量
- $_COOKIE:由HTTP Cookies方法提交至脚本的变量
- $_REQUEST:包含 $_GET、 $_POST、 $_COOKIE中的全部内容。
9.5 数组的相关处理函数
| 方法名 | 作用 |
|---|---|
| array_values() | 返回数组中的所有元素值 |
| array_keys() | 返回数组中的所有键名 |
| in_array() | 检查数组中是否存在某个值 若可选第三个参数为true,只有元素存在于数组中且数据类型相同时才返回true |
| array_search() | 搜索给定值,若存在返回相应的键名 若可选第三个参数为true,只有元素存在于数组中且数据类型相同才返回对应的key |
| array_flip() | 交换数组中的键值,返回一个反转后的数组 若同一个值出现了多次,则最后一个键名作为它的值 |
| array_reverse() | 将原数组中的元素顺序翻转,创建新的数组并返回 |
| count() | 计算数组中的元素数目或对象中的属性个数 对于数组的其它值会返回1,若参数是变量而变量没有定义或变量包含一个空的数组则返回0 |
| array_count_values() | 统计数组中所有值出现的次数 |
| array_unique() | 删除数组中重复的值,并返回没有重复值的新数组 |
| array_filter() | 用回调函数过滤数组中的元素 |
| array_walk() | 对数组中的每个元素应用回调函数的处理 |
| array_map() | 可处理多个数组,将回调函数作用到给定数组的元素上 比array_walk()函数更灵活 |
| sort() | 升序排序 |
| rsort() | 降序排序 |
| usort() | 按用户自定义的回调函数对数据排序 |
| asort() | 对数组进行升序排序并保持索引关系 |
| arsort() | 对数组进行降序排序并保持索引关系 |
| uasort() | 按用户自定义的回调函数对数组进行升序排序并保持索引关系 |
| ksort() | 按键名对数组进行升序排序 为数组值保留原来的键 |
| uksort() | 按用户自定义的回调函数按键名对数组进行升序排序 |
| natsort() | 用自然顺序算法对给定数组中的元素排序 |
| natcasesort() | 用不区分大小写的自然顺序算法对给定数组中的元素排序 |
| array_multisort() | 对多个数组或多维数组进行排序 |
| array_slice() | 在数组中根据条件取出一段值并返回 |
| array_splice() | 选择数组中的一系列元素用入参代替 |
| array_combine() | 合并两个数组来创建一个新数组,其中一个数组作为键,一个数组作为值 若其中一个数组为空或两个数组的元素个数不同,则会返回false |
| array_merge() | 把一个或多个数组合并为一个数组 若键名有重复,则取最后一个键名对应的值 |
| array_intersect() | 计算数组的交集 键名保留不变。仅有值用于比较 |
| array_diff() | 返回两个数组的差集数组 返回的数组中,键名保持不变 |
| array_rand() | 从数组中随机选出一个或多个元素并返回 |
| shuffle() | 将数组中的元素按随机顺序重新排列 |
| array_sum() | 返回数组中所有值得总和 |
| range() | 创建并返回一个包含特定范围的元素的数组 |
第10章 PHP面向对象的程序设计
10.1 面向对象的示例
class Person {
var $name; private $age; // 构造方法1 function Person($name="Taylor") {
$this->name = $name; } /* 构造方法2 function __construct($age="my_default") { $this->age = $age; } */ public function __set($propertyName, $propertyValue) {
$this->$propertyName = $propertyValue; } public function __get($propertyName) {
return $this->$propertyName; } function say() {
echo "
姓名:"
.$this->name.",年龄:".$this->age; } private function walk() {
echo "行走
"
; } function __destruct() {
echo "
再见"
.$this->name; } } $p = new Person(); $p->say(); // 姓名:Taylor $p2 = new Person("Swift"); $p2->say(); // 姓名:Swift // $p2->walk(); 调用报错,不能在外部调用私有方法 // 若无预定义__set()会调用报错,因为不能在外部调用私有属性 $p2->age = 66; echo $p2->age; $p2->say(); // 继承 class Student extends Person {
var $school; static $score; static function getScore() {
return "
分数:"
.self::$score; } function study() {
echo "
学生:"
.$this->name.",正在学习".$this->school."
"
; } // 方法重写 function say() {
echo "
学生:"
.$this->name.",正在说话。。。
"
; } } $s = new Student("Tom"); $s->study(); $s->school = "math"; $s->study(); $s->say(); Student::$score = 99; // 静态变量的调用 echo Student::$score; echo Student::getScore();
10.2 预定义方法
| 方法名 | 作用 | 备注 |
|---|---|---|
| __set() | 对所用私有属性能进行赋值操作 | 可在外部调用 |
| __get() | 对所用私有属性能进行获取操作 | 可在外部调用 |
| __isset() | 检查私有属性是否存在 | 可在外部调用 |
| __unset() | 删除对象中私有属性的方法 | 可在外部调用 |
10.3 常见的关键字和魔术方法
- final:可加在类或方法前,表示类不能被继承、方法不能被覆盖。但不能标识成员属性。
- static:用来表示属性和方法,多个对象之间共享,类似于全局变量。访问静态变量:Person::$count
- 单例设计模式:一个类只实例化一个对象。
class Singleton {
private static $instance; protected function __construct() {
} public static function getInstance() {
// if (false == self::$instance instanceof self) {
if (is_null(self::$instance)) {
self::$instance = new self(); } return self::$instance; } function query($content) {
echo $content; } } $db = Singleton::getInstance(); echo $db->query("select * from singlton");
- const关键字:将类的成员属性定义为常量
class Teacher {
const NAME = 'TEACHER'; function showConstant() {
echo self::NAME."
"
; } } echo Teacher::NAME."
"
; $t = new Teacher(); $t->showConstant(); // echo $t::NAME; 不能通过对象名称访问常量
- instanceof关键字:判断一个对象是类的实例、类的子类,还是实现了某个特定接口。
- 克隆对象:使用clone关键字创建一个对象的副本,改变原对象不影响副本,例如:$p2 = clone $p1;
- 类中的通用方法:
- __toString():获取对象的字符串表示
- __call():调用对象不存在的方法就会自动调用call()方法,并且程序可以继续向下执行。
- __autoload()全局函数提供了类的自动加载功能
- serialize():对象串行化
10.4 抽象类与接口
- 抽象类:
- 接口
- 只能继承一个类,但可实现多个接口。
第11章 字符串处理
- 常用的字符串处理函数
| 方法名 | 作用 |
|---|---|
| sprintf() | 将格式化的字符串以返回值的形式写入一个变量中 |
| ltrim() | 从字符串左侧删除空格或其它预定义字符 |
| trim() | 从字符串的两端删除空白字符和其它预定义字符 |
| strtolower() | 把字符串转换为小写 |
| strtoupper() | 把字符串转换为大写 |
| strrev() | 反转字符串 |
| md5() | 将一个字符串进行MD5计算 |
| strcmp() | 按字节顺序进行字符串的比较 |
第12章 正则表达式
12.1 正则表达式语法
| 元字符 | 含义描述 |
|---|---|
| * | 匹配0次、1次或多次前面的字符 |
| + | 匹配1次或多次前面的字符 |
| ? | 匹配0次或1次前面的字符 |
| . | 匹配除了换行符外的任意一个字符 |
| {n} | 表示前面的字符恰好出现了n次 |
| {n,m} | 表示前面的字符至少出现n次,最多出现m次 |
| ^或\A | 匹配输入字符串的开始位置 |
| $或\Z | 匹配输入字符串的结束位置 |
| \b | 匹配单词的边界 |
| \B | 匹配除单词边界以外的部分 |
| [ ] | 匹配方括号中指定的任意一个字符 |
| [ ^ ] | 匹配除方括号中的字符以外的任意一个字符 |
| () | 模式单元,即由多个字符组成的匹配单元 |
12.2 与Perl兼容的正则表达式
- preg_match():对字符串进行搜素和匹配一次。
- perl_grep():匹配数组中的元素,返回正则表达式匹配的数组单元。
- preg_replace():执行正则表达式的搜素和替换。
第13章 PHP的错误和异常处理
13.1 错误处理
- openlog():打开一个和当前系统中日志器的连接
- syslog():向系统日志中发送一个定制消息
- closelog():向系统日志中发送完成定制消息以后调用。
13.2 异常处理
- 使用try catch语句块,可捕获多个异常
- 扩展异常处理类
第14章 PHP的日期和时间
- 常用的日期处理函数
| 方法名 | 作用 |
|---|---|
| mktime() | 将日期和时间转变为UNIX时间戳 |
| getdate() | 返回一个由时间戳组成的关联数组 |
| microtime() | 返回当前UNIX时间戳和微秒数 |
第15-19章略
第20章 PHP访问MySQL
- 连接MySQL,例如:$link = mysql_connect(“localhost”, “root”, “”);
- 输出版本信息:echo mysql_get_server_info();
- 选择数据库:mysql_select_db(“mysql”);
- 插入数据:mysql_query(“insert into qgl_my_user(id,name,age,type) values (2, ‘Swift’, 22, 5)”);
- 更新数据:mysql_query(“update qgl_my_user set age = 29 where type = 3”);
- 删除数据:mysql_query(“delete from qgl_my_user where type = 3”);
- 查询数据:$result = mysql_query(“select id,name,age,type from qgl_my_user”);
- 获取查询结果
- 从结果集中获取行数:mysql_num_rows($result);
- 从结果集中获取列数:mysql_num_fields($result);
- 将一条结果以普通索引数组的形式保存:mysql_fetch_row($result);
- 将一条结果以普通关联数组的形式保存:mysql_fetch_assoc($result);
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/209297.html原文链接:https://javaforall.net
