七、类和对象

1、如果用echo或print语句输出一个对象,PHP就会调用这个对象的__toString()方法,如下:

class Person

{

protected $name;

protected $email;

public function setName( $name )

{

$this->name = $name;

}

public function setEmail( $email )

{

$this->email = $email;

}

public function __toString()

{

return "$this->name email>";

}

}

$rasmus = new Person;

$rasmus->setName( "linglongwunv" );

$rasmus->setEmail( "linglongwunv@gmail.com" );

print $rasmus;

?>

输出如下:

linglongwunv linglongwunv@gmail.com

2、PHP5拷贝的是对象的引用而不是值。当把一个现存的对象指定给一个新变量时,新变量中保存的只是这个现存对象的引用。而不管是通过新变量还是旧变量来访问这个对象,都会得到相同的结果。要拷贝对象的值,要使用clone:

$rasmus = clone $zeev;

?>

3、使用魔术方法——__get()和__set()来拦截对属性的请求。

4、调用父类构造器parent::__construct();,这种简化得益于PHP5对构造器实行的一致的命名方案。

5、pathinfo():返回一个关联数组包含有文件路径的信息,包括一下数组单元:dirname,basename和extension。

6、is_resource():检测变量是否为资源类型。

7、func_num_args():返回函数的参数个数,用在函数内部,5.3后在include中返回错误。

8、即使以下代码中的语法结构对于非常量表达式而言是合法的(如$class->pi),但对于常量仍然会产生错误解析:

class Constants

{

const pi = 3.14159;

}

$class = 'Constants';

print $class::pi;

?>

9、为获得对类的快速预览,调用Reflection::export():

Reflection::export( new Reflection( 'Person' ) );

?>

静态方法Reflection::export()将一个ReflectionClass类的技巧作为参数,返回了丰富的信息。

10、使用__autoload()魔术方法在对象技巧化期间自动地加载类文件,下面是如何在脚本中包含所有需要的类的实例:

function __autoload( $class_name )

{

include "$class_name.php";

}

$person = new Person;

?>

这样,当我们技巧化一个new Person时,它就会在包含路径中查找并加载Person.php文件。但是,如果Person.php再次使用__autoload会产生错误。

八、Web基础

1、Cookie是随着HTTP头部一起发送的,所以如果没有使用输出缓冲,那么必须在生成任何输出之前调用setcookie()。

(1)如果setcookie()的第三个参数丢失了(或留空),那么cookie就会在浏览器关闭的时候过期。

(2)setcookie()的第四个参数是一个路径,只有在被请求的页面路径以指定的字符串开头的情况下,cookie才会被发送会服务器。

(3)setcookie()的第五个参数是一个域名。只有当被请求页面的主机名以指定的域名结尾时,cookie才会被发送回服务器。例如:

setcookie('flavor','chocolate chip','','','.example.com');

setcookie('flavor','chocolate chip','','','linglongwunv.example.com');

?>

如果上面设置的第一个cookie中只使用了example.com而不是.exaple.com,那么这个cookie只能发回到唯一的主机example.com(而不是www.example.com或linglongwunv.example.com)。如果在调用setcookie()时没有指定域名,那么浏览器则只有在请求的主机名与设置cookie的主机名相同时,才会发回cookie。

(4)setcookie()的最后一个可选参数是一个安全标记,如果将其设为true,表示浏览器只能以SSL连接的方式发送cookie。如果cookie中包含敏感的信息,使用这个选项会有一些用处,但是不要忘了cookie中的数据可能仍然是以未加密的纯文本形式保存在用户的计算机上。

(5)在调用setcookie()时在第二个参数的位置使用空值,并传递一个已经过期的时间参数,可以删除cookie。

2、get_browser()只能告诉你浏览器是否支持那些功能,而不会告诉你用户是否关闭了该功能。

3、http_build_query():生成URL-encode之后的请求字符串。

4、flush()函数会把PHP内部缓冲的所有输出发送到web服务器,而web服务会在数据到达浏览器之前提供它自己的内部延迟缓冲。

九、表单

1、PHP表单处理应用程序中很重要的两个步骤:数据验证(保证输入的信息对程序而言是可以接受的)和输出转义(保证恶意用户不会利用你的网站攻击其他的网站)。

2、使用isset()、strlen()、is_array(),以便完成最严格的表单验证。

3、用ctype_digit()验证数字:

(1)$_GET和$_POST中的值始终是字符串。

(2)要保证在将值传递给ctype_digit()之前,要先验证一下输入是否为空。

(3)ctype_digit()不是很灵活,只能用于验证数字,对于负数和小数无能为力。

(4)ctype_digit()函数不论比类型转换还是比正则表达式的速度都要快得多,所以如果该函数能满足的你的需要,它还是首选。

4、strval():获取变量的字符串值。

(1)使用非常简单的正则表达式的效率与使用类型转换函数是没有什么差别的。

(2)正则表达式也可以处理PHP无法在不损失精度的前提下保存的有效浮点数。

5、Web浏览器不会让你自己在下拉菜单中生成选项,虽然如此,也要记住发送到你的PHP程序的请求不一定来自一个行为规范的浏览器。即使在多数用户不会出现差错的环境中,也需要验证输入。

6、array_intersect():计算数组的交集。返回一个数组,该数组包含了所有在array1中也同时出现在所有其它参数数组中的值,键名保留不变。

7、使用uniqid()和md5函数在表单中插入一个值为唯一ID的字段。

8、如果有一个表单输入元素名字为linglong.wunv,那么在PHP中就需要以$_GET['linglong_wunv']或$_POST['linglong_wunv']来访问它。

php cookbook怎么样,《PHP Cookbook》学习笔记(三)相关推荐

  1. J2EE学习笔记三:EJB基础概念和知识 收藏

    J2EE学习笔记三:EJB基础概念和知识 收藏 EJB正是J2EE的旗舰技术,因此俺直接跳到这一章来了,前面的几章都是讲Servlet和JSP以及JDBC的,俺都懂一些.那么EJB和通常我们所说的Ja ...

  2. tensorflow学习笔记(三十二):conv2d_transpose (解卷积)

    tensorflow学习笔记(三十二):conv2d_transpose ("解卷积") deconv解卷积,实际是叫做conv_transpose, conv_transpose ...

  3. Ethernet/IP 学习笔记三

    Ethernet/IP 学习笔记三 原文为硕士论文: 工业以太网Ethernet/IP扫描器的研发 知网网址: http://kns.cnki.net/KCMS/detail/detail.aspx? ...

  4. iView学习笔记(三):表格搜索,过滤及隐藏列操作

    iView学习笔记(三):表格搜索,过滤及隐藏某列操作 1.后端准备工作 环境说明 python版本:3.6.6 Django版本:1.11.8 数据库:MariaDB 5.5.60 新建Django ...

  5. 吴恩达《机器学习》学习笔记三——多变量线性回归

    吴恩达<机器学习>学习笔记三--多变量线性回归 一. 多元线性回归问题介绍 1.一些定义 2.假设函数 二. 多元梯度下降法 1. 梯度下降法实用技巧:特征缩放 2. 梯度下降法的学习率 ...

  6. Python基础学习笔记三

    Python基础学习笔记三 print和import print可以用,分割变量来输出 import copy import copy as co from copy import deepcopy ...

  7. Mr.J-- jQuery学习笔记(三十二)--jQuery属性操作源码封装

    扫码看专栏 jQuery的优点 jquery是JavaScript库,能够极大地简化JavaScript编程,能够更方便的处理DOM操作和进行Ajax交互 1.轻量级 JQuery非常轻巧 2.强大的 ...

  8. MYSQL学习笔记三:日期和时间函数

    MYSQL学习笔记三:日期和时间函数 1. 获取当前日期的函数和获取当前时间的函数 /*获取当前日期的函数和获取当前时间的函数.将日期以'YYYY-MM-DD'或者'YYYYMMDD'格式返回 */ ...

  9. ROS学习笔记三:创建ROS软件包

    ,# ROS学习笔记三:创建ROS软件包 catkin软件包的组成 一个软件包必须满足如下条件才能被称之为catkin软件包: 这个软件包必须包含一个catkin编译文件package.xml(man ...

  10. Python学习笔记三之编程练习:循环、迭代器与函数

    Python学习笔记三之编程练习 1. 编程第一步 # 求解斐波纳契数列 #/user/bin/python3#Fibonacci series:斐波那契数列 #两个元素的总和确定了下一个数 a,b= ...

最新文章

  1. html中右侧三角形代码,html – 使用CSS边框的三角形和倒三角形
  2. 拓扑排序基础题——排序
  3. spark中的广播变量broadcast
  4. 使用heroku进行免费分布式运算.Vs.AWS
  5. 2008至今,Chrome如何成长为霸主
  6. C语言 const 修饰指针 - C语言零基础入门教程
  7. 对DataList模板中的绑定数据进行再加工
  8. Hadoop The Definitive Guide:Hadoop权威指南-PART 1
  9. 2022年华为杯研究生数学建模竞赛ABCDEF题思路资料汇总贴
  10. C语言学习——编程软件安装和使用
  11. 企业微信 Android端开发
  12. 二元函数偏导数公式_偏导数计算公式大全
  13. 35岁程序员:被大厂裁员后,我赚到手的却是这样:
  14. JAVA图形编程Swing之——JPanel绘图
  15. 10个实用技巧让你的 Vue 代码更优雅
  16. 【BZOJ】1778: [Usaco2010 Hol]Dotp 驱逐猪猡
  17. 面子对中国人为什么这么重要
  18. python制作slack bot聊天机器人02
  19. GoJS-FlowChart样例代码分析
  20. 业务设计师(产品经理)P级晋升必备职能(P3-P7)

热门文章

  1. topcoder srm 440 div1
  2. Tomcat实现Web Socket
  3. python常用的一些东西——sys、os等(转)
  4. Office 2007中的config.xml个性定制说明
  5. microsoft azure Media Services 媒体服务解决方案
  6. 自定义UITabBarController以及UITabBar的分析
  7. Convirt 2.0 更新到 2.1版本
  8. 《MySQL必知必会》学习笔记——第四章(检索数据)
  9. 中晋最新消息2020年_最新消息!洛阳市第一高级中学发布2020年招生简章
  10. Springboot: 修改启动时默认图案