本文地址

点击关注微信公众号 wenyuqinghuai

分享提纲:

  1. 概述

  2. 精粹内容

    2.1 语言结构

    2.2 大小写问题

    2.3 变量函数

    2.4 常量相关函数

      2.5 字符串的使用

    2.6 函数

    2.7 数据库操作

    2.8 自动加载对象

    2.9 魔术方法

    2.10 重载 overload

    2.11 类与对象相关函数

    2.10 调试技巧

1. 概述


关于PHP整理的需要记忆和熟练掌握的内容

2. 精粹内容


  2.1)【语言结构】

 eval(): eval() 函数把字符串按照 PHP 代码来计算,该字符串必须是合法的 PHP 代码,且必须以分号结尾(详见 http://www.w3school.com.cn/php/func_misc_eval.asp)

  2.2)【大小写问题】

- 类名、方法名、属性名、函数名:不区分大小写
- 变量名、常量名、元素下标:区分大小写

 

   2.3) 【变量函数 】

get_defined_vars    //返回由所有已定义变量所组成的数组(包括环境变量、服务器变量和用户定义的变量)

  2.4)【常量相关函数】

defined
get_defined_constants

  2.5)【字符串的使用】

可将字符串当作一个字符的集合来使用,可独立访问每个字符。仅适用于单字节字符(字母、数字、半角标点符号),像中文等不可用
$str = "abcd";
echo $str[3]; // d
echo $str{0}; // a

 

   2.6)【函数】

1) 函数的声明是在编译时,故先定义再调用,定义与调用无先后关系!
2) 文件只是代码的载体,程序均在内存中执行!
3) 如果函数的定义在需要载入的文件内,则需要先载入该文件,否则调用出错!
4) 函数的定义可以出现在其他的代码段中,此时函数不会在编译阶段被执行
只有被执行到时才会被定义!只有独立定义时才会被编译在内存中!
如果出现在其他函数体内,也需要外层函数被调用时才被定义并生效!
5) 函数名不区分大小写
6) 不允许重名,包括系统函数
7) 【可变函数】
函数名可以用其他变量代替
$func_name = "sayHello";
$func_name(); //此时调用sayHello()函数
注意:只有在调用时才能使用变量,定义时不允许!
8) 变量可作为函数名调用函数,数组元素值也可以!
9) 形式参数parameter,实际参数argument
可以对参数传递 null,表示该形参不想传递值
形参与实参之间既可值传递,也可引用传递。
引用传递参数,应该在定义函数时就在形式参数前加上 & 符号,而此时调用函数实参必须为变量
如何选择使用哪种传递方式?
a. 是否需要保证原始数据的完整性
b. 是否需要增加效率
c. 对大数据引用传递可节省内存
10) 参数默认值
a. 函数的参数默认值必须是已经确定的值,不能是变量!
只要在调用之前定义该常量,则可以使用常量作为参数默认值
b. 函数默认值可以有多个,建议将有默认值的参数放在参数列表的最后面
这样可以在调用函数时,不赋予后面有默认值的参数值,否则会出错
c. 默认参数可以是非标量类型,比如数组、null
d. 任何默认参数必须放在任何非默认参数的右侧
11) 参数数量
a. 形参数量多于实参数量
报告警告级别错误,并以NULL代替
b. 实参多于形参
不报告错误,依次为形参赋值
c. 不确定参数数量
1) 一个形参都不定义,永远都是实参多于形参
2) 【可变数量参数】
func_get_args() 获取当前函数被调用时所有实参的值,返回一个所有实参值组成的数组
func_get_arg() 获取某个实参的值,通过索引值标识,e.g: func_get_arg(0)
func_num_args() 获取所有实参的数量
12)【return】返回值
a. 函数只有一个返回值,可以通过返回一个数组来得到类似的结果,但可以有多条return语句
b. return语句会立即中止函数的运行,并将控制权交回调用该函数的代码行
c. 可以返回包括数组和对象的任意类型
d. 函数的返回也分值传递和引用传递(返回的是一个变量才可)
1) 默认是值传递方式
2) 引用传递方式:
- 定义函数时,函数名前加上& 表示该函数可以返回引用
- 调用函数时,函数名前加上& 表示取得函数返回的引用
此时,函数外修改返回值,会修改函数内的该返回变量的值
- 如果函数需返回引用,则需要返回一个变量才可以
- 从函数返回一个引用,必须在函数声明和指派返回值给一个变量时都使用引用操作符&
function &returns_reference(){return $someref;}
$newref =& returns_reference();
3) 返回引用的作用   13)PHP Math 函数 1)decbin() 函数把十进制转换为二进制
2)pow() 函数返回 x 的 y 次方。
3)abs() 绝对值。
4)bindec() 把二进制转换为十进制
5)ceil() 向上舍入为最接近的整数
6)floor() 向下舍入为最接近的整数。
7)max() 返回最大值
8)min() 返回最小值
9)rand() 返回随机整数
10)round() 对浮点数进行四舍五入

函数

  2.7)【数据库操作】

#连接认证
mysql_connect 连接并认证数据库
#发送SQL语句,接收执行结果
mysql_query 发送SQL语句
仅对select, show, explain, describe语句执行成功返回一个资源标识符,其他语句成功返回true。执行失败均返回false。
#处理结果
mysql_fetch_assoc 从结果集中取得一行作为关联数组
每次只取回一条,类似each
结果集中记录指针
mysql_fetch_row 从结果集中取得一行作为枚举数组
mysql_fetch_array 从结果集中取得一行作为关联数组,或数字数组,或二者兼有
array mysql_fetch_array ( resource $result [, int $ result_type ] )
可选参数result_type可选值为:MYSQL_ASSOC,MYSQL_NUM 和 MYSQL_BOTH(默认)
mysql_free_result 释放结果内存
#关闭链接
mysql_close 关闭连接

  2.8)【自动加载对象】

- 在试图使用尚未被定义的类时自动调用 __autoload 函数
- 自动加载使用到的类名文件(根据类名找相应名称的文件,故需类名与类文件名一致)
- 每个需要加载类的文件都需要存在__autoload函数
- 将__autoload函数写入单独的文件,每个需要用到类的文件再require该函数文件
- __autoload 参数是类名
function __autoload($class_name) {
require_once $_SERVER["DOCUMENT_ROOT"] . "/class/$class_name.php";
}
// $_SERVER["DOCUMENT_ROOT"] 当前运行脚本所在的文档根目录
- 可以通过类名,来推导出类所在的文件名!
- 如果一个项目存在多个自动加载函数时,定义一个可以完成加载的普通函数,并在函数之前使用spl_autoload_register注册该函数。
# spl_autoload_register
- 注册__autoload()函数
bool spl_autoload_register ([ callback $autoload_function ] )
- 可以注册多个自动加载函数,先注册的先执行
- 一旦注册自动加载函数,__autoload就失效。
- 注册函数时,参数为函数名(注意加引号);注册方法时,参数为数组
# 注册类或对象的方法为自动加载方法时,参数需为数组:
spl_autoload_register(array(__CLASS__, '__autoload'));
__CLASS__表示当前类名,若是对象可用$this,详细见手册

  2.9)【魔术方法】

__construct        构造方法
__destruct 析构方法
__clone 克隆对象
__sleep 序列化对象
__wakeup 反序列化对象
__autoload 自动加载,使用类但未找到时 __toString 对象被当作字符串使用时
__invoke 当尝试以调用函数的方式调用一个对象时

  2.10)【重载 overload】

指动态地"创建"类属性和方法
用户可以自由的为对象添加额外的属性,该特性就是重载。
所有的重载方法都必须被声明为public。
当调用当前环境下未定义或不可见的类属性或方法时,重载方法会被调用。
重载相关魔术方法的参数都不能通过引用传递。
# 属性重载
- 处理不可访问的属性
属性重载只能在对象中进行。
# 属性重载对于静态属性无效
在静态方法中,这些魔术方法将不会被调用。所以这些方法都不能被声明为static。
__set 在给不可访问的属性赋值时
public void __set(string $name, mixed $value)
作用:批量管理私有属性,间接保护对象结构
__get 读取不可访问的属性的值时
public mixed __get(string $name)
__isset 当对不可访问的属性调用isset()或empty()时
public bool __isset(string $name)
__unset 当对不可访问的属性调用unset()时
public void __unset(string $name)
# 方法重载
- 处理不可访问的方法
__call 当调用一个不可访问的非静态方法(如未定义,或者不可见)时自动被调用
public mixed __call(string $name, array $arguments)
__callStatic 当在调用一个不可访问的静态方法(如未定义,或者不可见)时自动被调用
public static mixed __callStatic(string $name, array $arguments)
# $name参数是要调用的方法名称。$arguments参数是一个数组,包含着要传递给方法的参数。

  

  2.11)【类与对象相关函数】

class_alias([$original [,$alias]])  给类取别名
class_exists($class [,$autoload]) 检查类是否已定义
interface_exists($interface [,$autoload]) 检查接口是否已被定义
method_exists($obj, $method)检查类的方法是否存在
property_exists($class, $property) 检查对象或类是否具有该属性
get_declared_classes(void) 返回由已定义类的名字所组成的数组
get_declared_interfaces(void) 返回一个数组包含所有已声明的接口
get_class([$obj]) 返回对象的类名
get_parent_class([$obj]) 返回对象或类的父类名
get_class_methods($class) 返回由类的方法名组成的数组
get_object_vars($obj) 返回由对象属性组成的关联数组
get_class_vars($class) 返回由类的默认属性组成的数组
is_a($obj, $class) 如果对象属于该类或该类是此对象的父类则返回TRUE
is_subclass_of($obj, $class) 如果此对象是该类的子类,则返回TRUE
get_object_vars($obj) 返回由对象属性组成的关联数组

  2.12)【调试技巧】

  

-- 使用 debug_print_backtrace()函数可以打印出程序的调用栈
-- Xdebug也是一个不错的调试工具

【精粹系列】PHP精粹的更多相关文章

  1. 谢孟军:The State of Go | ECUG Con 精粹系列

    本月 17 日,Go 1.8 版本火热发布.相较于以往的版本,Go 1.8 具体有哪些新的特性呢?想必这是不少 Gopher 们热切关注和讨论的问题.作为著名的Golang 布道者,Gopher Ch ...

  2. 【精粹系列】Mysql精粹

    关于Mysql整理的需要记忆和熟练掌握的内容 1.查询数据表的信息(比如有多少行数据): show table status like 'tab_User' -- 数据表中的数量   2. 使用 ex ...

  3. js 继承inheritance/extends

    主要就是<javascript语言精粹>语言精粹中的内容 5.1伪类 Function.prototype.method = function(name,func){ this.proto ...

  4. OO课程的完结,软件工程学习的开始

    目录 UML小结 阅读学习 大象:Thinking in UML UML精粹 UML和模式应用 本单元作业的架构设计 四个单元中架构设计及OO方法的演进 四个单元中测试与实践的演进 课程收获 三个具体 ...

  5. 《NoSQL精粹》思维导图读书笔记

    <NoSQL精粹>思维导图读书笔记 各主题笔记 这本书短小精悍,虽不能解答所有NoSQL疑问,但在读书过程中会抛给你不少未曾想过的问题,给人以更深入的思考: 这里对每一个主题分别做了笔记: ...

  6. 读《javascript语法精粹》知识点总结

    昨天泡了大半天的读书馆,一口气看完了<javascript语法精粹>这本书,总体来说这本书还是写的不错,难怪那么多的推荐.<javascript语法精粹>主要是归纳与总结了ja ...

  7. [置顶] CSS语言精粹

    本文主要是对CSS中一些比较重要的高级部分作了一些整理,这些内容也许不是经常使用,但是都很强大.本文将长期更新. 边框 CSS2.1 规定:元素的背景是内容.内边距和边框区的背景.设置背景颜色时是没有 ...

  8. JavaScript 语言精粹笔记3

    方法 毒瘤 糟粕 记录一下阅读蝴蝶书的笔记,本篇为书中最后一部分:方法.代码风格.优美的特性.毒瘤.糟粕等. 方法 这一章主要介绍了一些方法集.这里写几个我不太熟悉的方法和要点吧. array.joi ...

  9. 《JavaScript语言精粹》小记

    一.前言 以下内容均摘自<JavaScript语言精粹>一书,本人在读这本书时,发现作者诠释JavaScript很犀利,特别是数组部分,固记录下来,想和大家分享下. 随笔主要包含两大部分: ...

随机推荐

  1. wpf ListView DataTemplate方式的鼠标悬停和选中更改背景色

    今天使用wpf技术弄一个ListView的时候,由于需求需要,需要ListView显示不同的数据模板,很自然的使用了DataTemplate方式来定义多个数据模板,并在ListView中使用ItemT ...

  2. iOS-网络基础

    概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博.微信等,这些应用本身可能采用iOS开发,但是所有的数据支撑都是基于后台网络服务器的.如今,网络编程越来越普遍,孤立的应用通常是没有生命力 ...

  3. Loadrunner时间函数、用时间生成订单编号例子

    Loadrunner中取时间函数.用时间函数生成订单编号例子: <如要转载,请注明网络来源及作者:Cheers_Lee> 问题的提出: (1)有时候在Loadrunner中用C语言设计脚本 ...

  4. 【.NET深呼吸】清理对象引用,有一个问题容易被忽略

    大家知道,托管代码一个重要的特点是自动管理内存,即我们常说的垃圾回收机制,那些高大上的理论我就不重复了,有兴趣的朋友可以翻书.我这个有个毛病——不喜欢很严肃地去说一些理论的东西,所以我不多介绍了. 一 ...

  5. 移动混合应用HTML5数据查询优化

    项目介绍 pheongap混合应用,跨平台,做应用加工厂提供应用模板编辑器~ 本地应用,完全是模拟IOS,安卓原生应用的实现,所以支持14种手势,所有PPT动画,视觉差效果,等等功能组合... 这是I ...

  6. js表单动态添加数据并提交

    情景1:已经存在form对象了,动态为form增加对象并提交 function formAppendSubmit(){ var myform=$('#newArticleForm'); //得到for ...

  7. TextView+Fragment实现底部导航栏

    前言:项目第二版刚上线没多久,产品又对需求进行了大改动,以前用的是左滑菜单,现在又要换成底部导航栏,于是今天又苦逼加班了.花了几个小时实现了一个底部导航栏的demo,然后总结一下.写一篇博客.供自己以 ...

  8. 【前端性能】必须要掌握的原生JS实现JQuery

    很多时候,我们经常听见有人说jquery有多快多快.在这个各种类库满天飞的时候,不得不说的是,能有原生JS快吗? 是的,明显原生JS要更快,因为诸如JQuery这样的库必须要兼容各种浏览器和低版本和许 ...

  9. [备忘] Automatically reset Windows Update components

    这两天遇到Windows 10的更新问题,官方有一个小工具,可以用来修复Windows Update的问题,备忘如下 https://support.microsoft.com/en-us/kb/97 ...

  10. PHP精选数组函数

    编程怎么能少的了数组呢,以下是学习PHP时常用的数组处理函数.在编程中要遵循一个原则就是DRY(Don`t Repeat Yourself)原则,PHP中有大量的函数,都记住这些函数不太现实,但常用的 ...