PHP 面向对象实现代码
2015-01-24信息快讯网
如果要创建一个模型,这个模型将由一些紧密相关的对象采用,就可以使用抽象类。
1,简单的对象创建//类的作用域final:将阻止子类重写这个字段 //方法的作用域abstract: 在父类中声明,在子类中实现 //定义类: class Employee{ //定义字段 private $name; protected $title; public $wage; //常量 const PI = 3.1415926; //静态成员变量 private static $visitors = 0; //定义构造函数 function __construct(){ //使用静态成员变量 self::$visitors++; echo "constructor"; } //定义析构函数 function __destruct(){ echo "destruct"; } //声明方法 public function clockIn(){ //使用字段 echo "Member $this->name"; } //在访问一个对象并不拥有的属性时(比如私有字段),如果该对象用户__get和__set方法,则会自动调用__get方法或__set方法 function __set($property,$value){ $this->$property = $value; } function __get($property){ return $this->$property; } } //类的继承 Manager继承Employee class Manager extends Employee { function __construct(){ //调用父类的构造函数或方法 parent::__construct(); parent::clockIn(); echo "Manager constructor"; } } //创建对象 $employee = new Employee(); $employee->wage = 10000; //使用常量 echo Employee::PI; //调用方法 $employee->clockIn(); $manager = new Employee(); //instanceof判断一个对象是类的实例、类的子类,还是实现了某个特定接口 if($manager instanceof Employee ) echo "Yes";
2,高级OO特性
(1)对象克隆
//对象克隆 class ClassA{ private $name; private $title; public function setName($name){ $this->name = $name; } function getName(){ return $this->name; } public function setTitle($title){ $this->title = $title; } public function getTitle(){ return $this->title; } function __clone(){ echo "我被克隆了","<br>"; } } $classA = new ClassA(); $classA->setName("NameA"); $classA->setTitle("TitleA"); $classB = clone $classA; $classB->setName("NameB"); echo $classA->getName(),"<br>",$classA->getTitle(),"<br>"; echo $classB->getName(),"<br>",$classB->getTitle(),"<br>"; /* output 我被克隆了 NameA TitleA NameB TitleA */
(2)接口
//接口 interface IPillage{ function method(); } class ClassC extends ClassA implements IPillage { function method(){ echo "inteface method"; } } $classC = new ClassC(); $classC->method(); //inteface method
(3)抽象类
//抽象类,是不能实例化的类,只能作为其它类继承的基类 abstract class BaseClass{ protected $name; abstract function method(); } class ChileClass extends BaseClass { function method(){ echo "method"; } } $child = new ChileClass(); $child->method(); //output method
注:
如果要创建一个模型,这个模型将由一些紧密相关的对象采用,就可以使用抽象类。如果要创建由一些不相关对象采用的功能,就使用接口。
如果必须从多个来源继承行为,就使用接口。php可以继承多个接口,但不能扩展多个抽象类。
如果知道所有类都会共享一个公共的行为实现,就使用抽象类,并在其中实现该行为。在接口中无法实现行为。
PHP取得一个类的属性和方法的实现代码
Look And Say 序列php实现代码
php利用cookie实现访问次数统计代码
php简单对象与数组的转换函数代码(php多层数组和对象的转换)
php小型企业库存管理系统的设计与实现代码
php 随机排序广告的实现代码
php中显示数组与对象的实现代码
zend api扩展的php对象的autoload工具
php 面向对象的一个例子
javascript,php获取函数参数对象的代码
php 分库分表hash算法
超级简单的php+mysql留言本源码
PHP 远程关机实现代码
php实现网站插件机制的方法
PHP CKEditor 上传图片实现代码
PHP 向右侧拉菜单实现代码,测试使用中
php实现jQuery扩展函数
php面向对象全攻略 (十七) 自动加载类
php面向对象全攻略 (十六) 对象的串行化
php面向对象全攻略 (十五) 多态的应用
php面向对象全攻略 (十四) php5接口技术
php面向对象全攻略 (十二) 抽象方法和抽象类