PHP面向对象学习笔记之一 基础概念


Posted in PHP onOctober 06, 2012

1> if( "false" ) 等效于 if( true), 因为非空字符串是true
2> 检查数据类型:
is_array();
is_object();
is_string();
is_null();
is_integer();
3> PHP5 引入类的类型提示(type hint),用来约束一个方法的参数类型(不是基本数据类型,而是类):将类名放在需要约束的方法参数之前.
例如: function write( ShopProduct $shopProduct){}

4> instanceof 操作符: 如果左边操作数的对象是右边操作数所示的类型,结果为true
例如: if( $shopProduct instanceof BookProduct ) {}

5> 继承 class son extends parent{}
要调用父类的方法, 比如构造函数,用 parent::__construct();

6> 静态方法和属性
class StaticExample{
static public $a;
static public function hello(){}
}
外部访问使用::
例如: print StaticExample::$a;
内部访问使用self::
例如: self::$a;

7> 抽象类, 抽象方法
abstract class xxx{
...
abstract function write(); //没有{}
}

抽象类的子类要重新声明方法并实现之. 新实现的方法的访问控制不能比抽象方法的访问控制更严格.

8>接口 interface
只定义功能,不包含实现. 接口中可以包含属性和方法声明,但方法体为空;
例如: interface a{
public function b();
}
任何实现接口的类都要实现接口中定义的所有方法,否则就必须是抽象类.
类在声明中使用implements来实现某个接口.
class Shop implements a{
public function b(){
...
}
}

9> 异常 exception
PHP5引入异常类

10>拦截器 interceptor
__get($property); 访问未定义的属性时被调用
__set($property,$value); 给未定义的属性赋值时被调用
__isset($property); 对未定义的属性使用isset()时被调用;
__unset($property);对未定义的属性调用unset()时被调用;
__call($method, $arg_array); 调用未定义的方法时候被调用
例: __get()的实现

function __get($property){ 
$method="get{$property}"; 
if(method_exists($this,$method)){ 
return $this->$method(); 
} 
} function getName(){ return "Bob";} 
function __isset($property){ 
$method="get{$porperty}"; 
return(method_exists($this, $method)); 
} 
function __set($property, $value){ 
$method="set{$property}"; 
if( method_exists($this,$method)){ 
return $this->$method($value); 
} 
}

11> 析构方法 __destruct()

12> __clone(); 与clone关键字的区别
class CopyMe();
$first= new CopyMe();
$second=$first;
// PHP4 : $first和$second是两个完全不同的对象;
// PHP5: $first和$second指向同一个对象
PHP5中, 对象的赋值和传递都是引用.
如果要拷贝,就要用: $second= clone $first; //现在$first和$second是两个完全不同的对象,(by_value copy)
如果要想控制复制, 要通过实现一个特殊方法__clone()

13> 自动加载: __autoload()
PHP5引入__autoload()拦截器方法来自动包含类文件.当PHP遇到试图实例化一个未知类的操作时,会尝试调用__autoload()方法,并将类名当作字符串参数传递给它.
例如一个很简单的自动定位和包含策略:
function __autoload( $classname){
includ_once "$classname.php";
}

====================
14>使用字符串动态引用类

$classname="Task"; 
require_once("tasks/{$classname}.php); 
$myObj= new $classname(); 
$method="getTitle"; 
$myObj->$method(); //动态方法

15>类函数和对象函数
class_exist(); //检查类是否存在 
get_declared_classes(); //获得当前脚本进程中定义的所有类(array形式返回) 
get_class_methods();//类中所有的public方法列表(array) 
method_exist($objname,$method); //对象或类的方法是否存在 
is_callable();//对象或类的方法不仅存在,且能访问 
get_class_vars(); // 属性 
get_parent_class(类或对象名称); //父类 
is_subclass_of(); //是否子类,不管接口,接口用 instanceof操作符

16>反射API
由一系列可以分析属性、方法、类和参数的内置类构成,可以动态获取信息,动态调用方法.
PHP 相关文章推荐
smarty静态实验表明,网络上是错的~呵呵
Nov 25 PHP
asp和php下textarea提交大量数据发生丢失的解决方法
Jan 20 PHP
PHP,ASP.JAVA,JAVA代码格式化工具整理
Jun 15 PHP
coreseek 搜索英文的问题详解
Jun 08 PHP
phpmailer发送gmail邮件实例详解
Jun 24 PHP
php自动提交表单的方法(基于fsockopen与curl)
May 09 PHP
PHP实现的最大正向匹配算法示例
Dec 19 PHP
PHP 二维array转换json的实例讲解
Aug 21 PHP
laravel5.6实现数值转换
Oct 23 PHP
PHP利用curl发送HTTP请求的实例代码
Jul 09 PHP
基于ThinkPHP删除目录及目录文件函数
Oct 28 PHP
PHP连接MySQL数据库三种实现方法
Dec 10 PHP
php生成局部唯一识别码LUID的代码
Oct 06 #PHP
PHP实现提取一个图像文件并在浏览器上显示的代码
Oct 06 #PHP
PHP中3种生成XML文件方法的速度效率比较
Oct 06 #PHP
PHP中的生成XML文件的4种方法分享
Oct 06 #PHP
PHP 正则表达式之正则处理函数小结(preg_match,preg_match_all,preg_replace,preg_split)
Oct 05 #PHP
PHP正则表达式之定界符和原子介绍
Oct 05 #PHP
PHP超级全局变量数组小结
Oct 04 #PHP
You might like
PHP读取文件并可支持远程文件的代码分享
2012/10/03 PHP
解析PHP中的内存管理,PHP动态分配和释放内存
2013/06/28 PHP
php使用Jpgraph创建3D饼形图效果示例
2017/02/15 PHP
php解压缩zip和rar压缩包文件的方法
2019/07/10 PHP
jquery 延迟执行实例介绍
2013/08/20 Javascript
Node.js 服务器端应用开发框架 -- Hapi.js
2014/07/29 Javascript
深入浅析JavaScript中数据共享和数据传递
2016/04/25 Javascript
javascript常用经典算法详解
2017/01/11 Javascript
echart简介_动力节点Java学院整理
2017/08/11 Javascript
vue实现动态添加数据滚动条自动滚动到底部的示例代码
2018/07/06 Javascript
tracking.js实现前端人脸识别功能
2020/04/16 Javascript
JavaScript对象访问器Getter及Setter原理解析
2020/12/08 Javascript
[01:38]DOTA2 2015国际邀请赛中国区预选赛 Showopen
2015/06/01 DOTA
[46:47]完美世界DOTA2联赛PWL S2 FTD vs Magma 第二场 11.20
2020/11/23 DOTA
python实现搜索指定目录下文件及文件内搜索指定关键词的方法
2015/06/28 Python
使用Python3编写抓取网页和只抓网页图片的脚本
2015/08/20 Python
Python抓取聚划算商品分析页面获取商品信息并以XML格式保存到本地
2018/02/23 Python
selenium+python 对输入框的输入处理方法
2018/10/11 Python
朴素贝叶斯Python实例及解析
2018/11/19 Python
微信小程序python用户认证的实现
2019/07/29 Python
使用tensorflow框架在Colab上跑通猫狗识别代码
2020/04/26 Python
Python 实现将numpy中的nan和inf,nan替换成对应的均值
2020/06/08 Python
python数据类型强制转换实例详解
2020/06/22 Python
Python命名空间及作用域原理实例解析
2020/08/12 Python
css3中transition属性详解
2014/09/02 HTML / CSS
Daniel Wellington官方海外旗舰店:丹尼尔惠灵顿DW手表
2018/02/22 全球购物
英语演讲稿范文
2014/01/03 职场文书
师范教师毕业鉴定
2014/01/13 职场文书
函授自我鉴定范文
2014/02/06 职场文书
水电工岗位职责
2014/02/12 职场文书
降消项目实施方案
2014/03/30 职场文书
超市活动计划书
2014/04/24 职场文书
我的中国梦主题班会
2015/08/14 职场文书
Mysql案例刨析事务隔离级别
2021/09/25 MySQL
详细介绍MySQL中limit和offset的用法
2022/05/06 MySQL
Win Server2016远程桌面如何允许多用户同时登录
2022/06/10 Servers