PHP 面向对象实现代码

前端之家收集整理的这篇文章主要介绍了PHP 面向对象实现代码前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1,简单的对象创建
<div class="codetitle"><a style="CURSOR: pointer" data="70278" class="copybut" id="copybut70278" onclick="doCopy('code70278')"> 代码如下:

<div class="codebody" id="code70278">
//类的作用域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)对象克隆
<div class="codetitle"><a style="CURSOR: pointer" data="61992" class="copybut" id="copybut61992" onclick="doCopy('code61992')"> 代码如下:
<div class="codebody" id="code61992">
//对象克隆
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 "我被克隆了","
";
}
}
$classA = new ClassA();
$classA->setName("NameA");
$classA->setTitle("TitleA");
$classB = clone $classA;
$classB->setName("NameB");
echo $classA->getName(),"
",$classA->getTitle(),"
";
echo $classB->getName(),$classB->getTitle(),"
";
/ output
我被克隆了
NameA
TitleA
NameB
TitleA
/

(2)接口
<div class="codetitle"><a style="CURSOR: pointer" data="39966" class="copybut" id="copybut39966" onclick="doCopy('code39966')"> 代码如下:
<div class="codebody" id="code39966">
//接口
interface IPillage{
function method();
}
class ClassC extends ClassA implements IPillage {
function method(){
echo "inteface method";
}
}
$classC = new ClassC();
$classC->method();
//inteface method

(3)抽象类
<div class="codetitle"><a style="CURSOR: pointer" data="79487" class="copybut" id="copybut79487" onclick="doCopy('code79487')"> 代码如下:
<div class="codebody" id="code79487">
//抽象类,是不能实例化的类,只能作为其它类继承的基类
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面向对象面向对象

猜你在找的PHP相关文章