第1-5章 略

第6章 PHP基本语法

6.1 PHP的应用

  • 收集表单数据
  • 生成动态网页
  • 字符串处理
  • 动态输出图像
  • 处理服务器端文件系统
  • 编写数据库支持的网页
  • 会话跟踪控制
  • 处理XML文件
  • 支持利用大量的网络协议
  • 服务器端的其他相关操作

6.2 PHP语言标记

  • 标准风格:开始标记是<?php,结束标记是?>
  • 指令分隔符:分号
  • 程序注释:多行注释/* */,单行注释//或#
  • 空白的处理:
    • 使用两个空行:一个源文件的两个代码片段之间、两个类的声明之间
    • 使用一个空行:两个函数声明之间、注释之前。

6.3 变量

  • 变量的声明:使用$后面跟变量名表示,弱类型语言不区分类型
  • 判空:使用isset()函数检测变量是否设置,使用empty()函数检查变量是否为空。对于""、0、“0”、NULL、FALSE、array()、var、$var,以及没有任何属性的对象都被认为是空。
  • 变量的命名:严格区分大小写、以字母或下划线开头。
  • 可变变量:$num等价于num等价于num等价于{$num},即一个可变变量获取一个普通变量的值作为这个可变变量的变量名。
  • 变量的引用赋值:使用&符号,例如:car="BWM";car = "BWM";car="BWM";bike = &car;两个变量的值会互相关联,一个修改;另一个自动被修改。但unset(car;两个变量的值会互相关联,一个修改;另一个自动被修改。但unset(car;两个变量的值会互相关联,一个修改;另一个自动被修改。但unset(car)只会取消两个变量的关联关系,而变量$bike不会消失
  • 变量的类型:PHP支持8种原始类型,四种标量类型(boolean、integer、float、string)、两种复合类型(array、object)、两种特殊类型(resource、NULL)
  • 定界符<<<:从<<<之后的标识符开始,到最后是同样的标识符结束字符串。
  • 数组:使用逗号分隔的key=>value参数。例如:$arr = array(“foo” => “bar”, 12 => true);
  • 对象://创建对象 $p = new Person; //属性赋值 $p->name = “Taylor”; //调用方法 $p->say();
  • 强制类型转换:若参与运算:true->1.false->0,null->0,例如:num1="100Swift";num1 = "100Swift";num1="100Swift";num2 = 11;$result = $num1 + $num2; // 结果 result = 111
  • 常量的定义:例如 define(“PI”, 3.1415926); 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 数组的定义

  • 直接赋值的方式声明数组:例如:list[0]="WuLei";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 "<br>姓名:".$this->name.",年龄:".$this->age;
}private function walk() {echo "行走 <br>";
}function __destruct() {echo "<br>再见".$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 "<br>分数:".self::$score;
}function study() {echo "<br>学生:".$this->name.",正在学习".$this->school." <br>";
}// 方法重写
function say() {echo "<br>学生:".$this->name.",正在说话。。。 <br>";
}
}$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."<br>";
}
}echo Teacher::NAME."<br>";
$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”, “123456”);
  • 输出版本信息: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);

《细说PHP》读书笔记相关推荐

  1. 读书笔记 | 墨菲定律

    1. 有些事,你现在不做,永远也不会去做. 2. 能轻易实现的梦想都不叫梦想. 3.所有的事都会比你预计的时间长.(做事要有耐心,要经得起前期的枯燥.) 4. 当我们的才华还撑不起梦想时,更要耐下心来 ...

  2. 读书笔记 | 墨菲定律(一)

    1. 有些事,你现在不做,永远也不会去做. 2. 能轻易实现的梦想都不叫梦想. 3.所有的事都会比你预计的时间长.(做事要有耐心,要经得起前期的枯燥.) 4. 当我们的才华还撑不起梦想时,更要耐下心来 ...

  3. 洛克菲勒的38封信pdf下载_《洛克菲勒写给孩子的38封信》读书笔记

    <洛克菲勒写给孩子的38封信>读书笔记 洛克菲勒写给孩子的38封信 第1封信:起点不决定终点 人人生而平等,但这种平等是权利与法律意义上的平等,与经济和文化优势无关 第2封信:运气靠策划 ...

  4. 股神大家了解多少?深度剖析股神巴菲特

    股神巴菲特是金融界里的传奇,大家是否都对股神巴菲特感兴趣呢?大家对股神了解多少?小编最近在QR社区发现了<阿尔法狗与巴菲特>,里面记载了许多股神巴菲特的人生经历,今天小编简单说一说关于股神 ...

  5. 2014巴菲特股东大会及巴菲特创业分享

     沃伦·巴菲特,这位传奇人物.在美国,巴菲特被称为"先知".在中国,他更多的被喻为"股神",巴菲特在11岁时第一次购买股票以来,白手起家缔造了一个千亿规模的 ...

  6. 《成为沃伦·巴菲特》笔记与感想

    本文首发于微信公众帐号: 一界码农(The_hard_the_luckier) 无需授权即可转载: 甚至无需保留以上版权声明-- 沃伦·巴菲特传记的纪录片 http://www.bilibili.co ...

  7. 读书笔记002:托尼.巴赞之快速阅读

    读书笔记002:托尼.巴赞之快速阅读 托尼.巴赞是放射性思维与思维导图的提倡者.读完他的<快速阅读>之后,我们就可以可以快速提高阅读速度,保持并改善理解嗯嗯管理,通过增进了解眼睛和大脑功能 ...

  8. 读书笔记001:托尼.巴赞之开动大脑

    读书笔记001:托尼.巴赞之开动大脑 托尼.巴赞是放射性思维与思维导图的提倡者.读完他的<开动大脑>之后,我们就可以对我们的大脑有更多的了解:大脑可以进行比我们预期多得多的工作:我们可以最 ...

  9. 读书笔记003:托尼.巴赞之思维导图

    读书笔记003:托尼.巴赞之思维导图 托尼.巴赞的<思维导图>一书,详细的介绍了思维发展的新概念--放射性思维:如何利用思维导图实施你的放射性思维,实现你的创造性思维,从而给出一种深刻的智 ...

  10. 产品读书《滚雪球:巴菲特和他的财富人生》

    作者简介 艾丽斯.施罗德,曾经担任世界知名投行摩根士丹利的董事总经理,因为撰写研究报告与巴菲特相识.业务上的往来使得施罗德有更多的机会与巴菲特亲密接触,她不仅是巴菲特别的忘年交,她也是第一个向巴菲特建 ...

最新文章

  1. 如何用burp抓取手机的流量_用企业微信SCRM如何搭建流量新体系
  2. 技术图文:如何利用C# 实现 Kruskal 最小生成树算法?
  3. 攻击面管理预防网络攻击原理?
  4. docker nginx 简单的代理设置
  5. python中若干关于类的问题
  6. 04-spring的依赖注入
  7. android ImageButton设置背景图片无法显示
  8. 数字孪生技术从概念走向实际应用
  9. 爬虫python爬取页面请求_03 Python网络爬虫第三弹《爬取get请求的页面数据》,urllib...
  10. Qt调用face++的http接口,实现人脸对比
  11. XML解析:PULL解析
  12. iOS App 上架流程-新版本1.0上架
  13. 海西小霸王TD-299Z厂家10芯(密码 2.F2.4.蓝键.下.8)
  14. 【论文投稿】SOTA论文也未必能被接收,谷歌科学家Eric Jang谈顶会审稿标准
  15. BulletedList控件[转载]
  16. 不用写代码也能学会采集海量企业电话及邮箱数据
  17. 通过爬虫在GEO数据库上获取对应SRR号
  18. android edittext背景颜色,Android 设置 EditText 背景颜色、背景图片
  19. 解决oracle异常ORA-01012: not logged on
  20. 如何评价深度学习相关顶级期刊论文难复现的问题?

热门文章

  1. 美国网站服务器有哪些,可以搭建什么网站?
  2. nohup 命令的简单理解
  3. c语言内存泄露检查工具,检测C++的内存泄漏用哪些工具(1)
  4. OSI七层网络模型 TCP/IP五层网络模型
  5. python中怎么调整代码字体格式_PyCharm中代码字体大小调整方法
  6. weui 必填_小程序开发WeUI填坑(一)
  7. MFC做一个简易的登录界面
  8. 录屏软件——大黄蜂,rar压缩包,解压后直接安装使用即可
  9. 拍的视频怎么把录音去掉?
  10. 学生系统优化——字符限定