PHP和MySQL Web开发读书笔记---面向对象的PHP

本文介绍了PHP面向对象编程中的高级特性,包括多态、构造与析构函数、属性重载、延迟静态绑定、方法重载等。同时探讨了类的迭代、克隆对象及反射API的使用。

虽然写得比较简陋,但也是自己的心得体会,好好努力,开心赚钱

1.多态:不同的类对同一个操作表现出不同的行为

2.构造函数__construct()和析构函数__destruct()

3.通过__set()和__get()这两个访问器函数对类中的属性进行操作

4.我们可能需要在子类中给某个属性赋予一个同超类中不同的默认值,或者给某个操作赋予一个同超类中不同的功能,这就叫重载

5.如果子类中提供了替代定义,即重载了这个属性或方法,替代定义将有优先级并重载初始定义

6.如果想要在子类中调用父类被重载的方法,可以使用parent关键字,如parent::function()

7.使用final关键字可以禁止继承和重载

8.PHP中不支持多重继承,但可以使用接口,但继承接口的类必须实现里面所有的方法

9.Pec-Class常量可以通过const这个关键字来实现,

10.实现静态方法可以使用static关键字,在静态方法中,不可以使用this关键字

11.类型检查:instanceof关键字允许检查一个对象的类型,包括判断是否实现了某个接口

12.延迟静态绑定:该特性允许在一个静态继承的上下文中对一个被调用类的引用,父类可以使用子类继承的静态方法(这个方法只有在PHP5.3及以上才能使用)

<?php
	class A{
		public static function who(){
			echo __CLASS__;
		}
		public static function test(){
			static::who();//延迟静态绑定
		}
	}
	class B extends A{
		public static function who(){
			echo __CLASS__;
		}
	}
	B::test();

  上面是一个延迟静态绑定的例子,将返回B,其实关于这个,自己理解得也不是很透彻,姑且先放在这,等待高手来详细阐述

13.克隆对象,使用关键字clone可以复制一个已有的对象,且具有相同的值,如$b=clone $c;如果不需要克隆过来的默认行为,可以在基类中使用__clone()方法改变这种默认行为

15.使用__call()重载方法,方法的重载在许多面向对象中很常见,但在PHP中却不是,因为PHP中的灵活类型和较容易实现的可选的函数参数,就是通过这个方法来实现

<?php
	class A{
		public function echoarray(){
			echo "我是一个数组<br>";
		}
		public function echoint(){
			echo "我是一个数字<br>";
		}
		public function echostring(){
			echo  "我是一个字符串<br>";
		}
		public function __call($method,$p){
			if($method=="display"){
				if(is_array($p[0])){
					$this->echoarray();
				}
				if(is_numeric($p[0])){
					$this->echoint();
				}
				if(is_string($p[0])){
					$this->echostring();
				}
			}
		}
	}
	$i=1;
	$a=new A;
	$a->display(array());
	$a->display("hello PHP");
	$a->display($i);

  以上代码将返回:

  我是一个数组
  我是一个字符串
  我是一个数字

这个方法中有两点需要注意的地方:第一个是display()方法可以不用实现,第二点需要注意的是参数上面的$p是一个数组,所以判断的时候一定要用$p[0]

16.__autoload()是一个单独的函数,不是类中的方法,用来自动包含类,但貌似很多人都说这个函数效率较差,并不推荐使用

17.类的迭代,在PHP中可以使用foreach()方法可以取出对象中的所有属性

18.__toString()方法可以将类转换成字符串,即echo一个对象时,该函数会把所有返回内容echo出来

19.使用Reflection(反射)API,通过访问已有的类和对象找到类和对象的结构和内容

转载于:https://www.cnblogs.com/iamluzhe/archive/2013/04/08/3009100.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值