《细说PHP》读书笔记

《细说PHP》读书笔记第 1 5 章略第 6 章 PHP 基本语法 6 1PHP 的应用收集表单数据生成动态网页字符串处理动态输出图像处理服务器端文件系统编写数据库支持的网页会话跟踪控制处理 XML 文件支持利用大量的网络协议服务器端的其他相关操作 6 2PHP 语言标记标准风格 开始标记是 php 结束标记是 指令分隔符 分号程序注释 多行注释 单行注释 或 空白的处理 使用两个空行 一个源文件的两个代码片段之间 两个类的声明之间使用一个空行 两个函数声明之间 注释之前

第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

(0)
上一篇 2026年3月19日 上午9:35
下一篇 2026年3月19日 上午9:35


相关推荐

  • U872在企业平台中做自定义报表显示空白的格子

    U872在企业平台中做自定义报表显示空白的格子问题:在企业平台中做自定义报表时,调试的时候通过,但是打开的时候却有记录却没有显示出数据,出现空白的格子。解决办法:在SQL查询分析器中,我们看到了源码,发现定义别名的时候后面使用了多余的空格,可能是空格引出了问题,把空格删除后,运行正常。 

    2026年4月15日
    5
  • html显示毒经,谁能肩负剑三PVE王者之名?哪怕职业再强,这点恐怕都比不上毒经…「建议收藏」

    html显示毒经,谁能肩负剑三PVE王者之名?哪怕职业再强,这点恐怕都比不上毒经…「建议收藏」随着白帝江关的削弱,全民PVE的时代来临,最近打本的人是越来越多了。对于很多入坑pve的萌新来说,一个问题就来了:我玩啥职业?什么职业才是副本里的最强王者?每当面对萌新这样的提问,剑三各大门派“招生办”就立马启动了,为了证明自己才是PVE中的王者,以下几个门派就站了出来,纷纷表示要是说这个,我可就来劲了!玩最帅的气纯,下最强的镇山河首先我要推荐你玩气纯,作为pve中的常青职业,气纯凭着一手“镇山河…

    2025年6月27日
    4
  • 张予彤,出任月之暗面Kimi总裁

    张予彤,出任月之暗面Kimi总裁

    2026年3月12日
    2
  • mysql自定义函数写法_mysql多实例部署

    mysql自定义函数写法_mysql多实例部署本文实例讲述了mysql自定义函数原理与用法。分享给大家供大家参考,具体如下:本文内容:什么是函数函数的创建函数的调用函数的查看函数的修改函数的删除首发日期:2018-04-18什么是函数:函数存储着一系列sql语句,调用函数就是一次性执行这些语句。所以函数可以降低语句重复。【但注意的是函数注重返回值,不注重执行过程,所以一些语句无法执行。所以函数并不是单纯的sql语句集合。】mysql函数有自己…

    2025年10月4日
    3
  • pycharm远程ssh连接服务器,配置interpreter时,出现“Permission denied“字样

    pycharm远程ssh连接服务器,配置interpreter时,出现“Permission denied“字样pycharm 远程 ssh 连接服务器 配置 interpreter 时 出现 Permissionde 字样的解决办法

    2026年3月17日
    2
  • 详解网站WEB日志格式

    详解网站WEB日志格式WEB日志是网站的WEB服务处理程序,根据一定的规范生成的ASCII文本。它主要记录了网站访问记录数据内容,是网站分析和网站数据仓库的数据基础来源,而网站分析和数据分析也将对SEO产生一定的影响,所以了解WEB日志的格式和组成将有利于我们更好地进行网站数据的收集、处理和分析,从而更好的进行网站优化。一、WEB日志格式分类目前常见的WEB日志格式主要由两类,一类是Apache的NCSA日志格

    2022年5月18日
    44

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号