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

 更新时间:2012年10月06日 22:33:29   作者:  
PHP面向对象学习笔记之一 基础概念,想要学习PHP面向对象编程的朋友可以参考下
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编程实现获取excel文档内容的代码实例

    php编程实现获取excel文档内容的代码实例

    最近刚刚做了个导入excle文件,群发短信的功能,在这里总结下用php获取excle文件数据的方法
    2011-06-06
  • php获取文件类型和文件信息的方法

    php获取文件类型和文件信息的方法

    这篇文章主要介绍了php获取文件类型和文件信息的方法,可实现获取文件类型、大小、修改时间等功能,非常简单实用,需要的朋友可以参考下
    2015-07-07
  • PHP中substr()与explode()函数用法分析

    PHP中substr()与explode()函数用法分析

    这篇文章主要介绍了PHP中substr()与explode()函数用法分析,以实例的形式较为详细的讲述了substr()与explode()函数处理字符串的技巧,是字符串操作中使用频率比较高的函数,具有一定的实用价值,需要的朋友可以参考下
    2014-11-11
  • PHP读取Excel类文件

    PHP读取Excel类文件

    本篇文章主要介绍了PHP读取Excel类文件的相关知识。具有很好的参考价值。下面跟着小编一起来看下吧
    2017-05-05
  • PHP详细彻底学习Smarty

    PHP详细彻底学习Smarty

    Smarty是一个php模板引擎,它分开了逻辑程序和外在的内容,提供了一种易于管理的方法. Smarty要求web服务器运行php4.0.6和以上版本. smarty安装需要smarty库文件。可以去官方网站http://smarty.php.net下载。 网上讲了很多安装的教程,但是我都没有成功,所以直接把整个目录名改为smarty直接复制到了网站所在的目录下,然后打开http://网站路径/smarty/demo/index.php,显示正常,应该算是安装成功了。
    2008-03-03
  • PHP删除数组中指定值的元素常用方法实例分析【4种方法】

    PHP删除数组中指定值的元素常用方法实例分析【4种方法】

    这篇文章主要介绍了PHP删除数组中指定值的元素常用方法,结合实例形式对比分析了4种常用的数组遍历与元素删除方法,并总结分析了相关算法优缺点,需要的朋友可以参考下
    2018-08-08
  • php 空格,换行,跳格使用说明

    php 空格,换行,跳格使用说明

    php 空格,换行,跳格使用说明,需要的朋友可以参考下。
    2009-12-12
  • PHP实现数组array转换成xml的方法

    PHP实现数组array转换成xml的方法

    这篇文章主要介绍了PHP实现数组array转换成xml的方法,涉及php针对数组的遍历及xml格式文件的构造技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2016-07-07
  • PHP调用QQ互联接口实现QQ登录网站功能示例

    PHP调用QQ互联接口实现QQ登录网站功能示例

    这篇文章主要介绍了PHP调用QQ互联接口实现QQ登录网站功能,结合实例形式分析php调用QQ互联接口实现QQ登录网站的相关操作技巧,需要的朋友可以参考下
    2019-10-10
  • PHP页面静态化——纯静态与伪静态用法详解

    PHP页面静态化——纯静态与伪静态用法详解

    这篇文章主要介绍了PHP页面静态化——纯静态与伪静态用法,结合实例形式分析了PHP页面静态化——纯静态与伪静态相关原理、实现方法与相关操作注意事项,需要的朋友可以参考下
    2020-06-06

最新评论