PHP面向对象精要总结 |
|||||||||
本文标签:PHP,面向对象,精要 本文实例汇总了PHP面向对象程序设计的精要 。分享给大家供大家参考 。具体分析如下: 1 使用extends实现继承以及重载、魔术方法的含义 class B extends A $b=new B(); 如果$a=new A(); 属性方法private不可以被继承 3 php中双冒号::的应用 php类代码中常看到"::"的操作符,这个是作用域限定操作符,是用一个双冒号"::"表示,它用来置顶类中不同作用域的级别 。左边是作用域右边是访问作用域的成员 。 复制代码 代码如下: class MyClass {
const CONST_VALUE = A constant value; } echo MyClass::CONST_VALUE; public static function doubleColon() { OtherClass::doubleColon(); class OtherClass extends MyClass $class = new OtherClass(); 4 php中this和self以及parent的作用 this:就是指向当前对象实例的指针,不指向任何其他对象或类 。 复制代码 代码如下: private static $firstCount = 0; private $lastCount; //构造函数 parent:表示当前类父类的作用域,其余的跟self特性一样 。parent是指向父类的指针,一般我们使用parent来调用父类的构造函数 。 复制代码 代码如下: //继承类的构造函数
function __construct( $personSex, $personAge ) { parent::__construct( "test" ); //使用parent调用了父类的构造函数 $this->personSex = $personSex; $this->personAge = $personAge; } 5 构造函数与析构函数 具有构造函数的类会在每次创建对象时先调用此方法,所以非常适合在使用对象之前做一些初始化工作 。 PHP 5 新增了一个 final 关键字 。如果父类中的方法被声明为final,则子类无法覆盖该方法; 如果一个类被声明为final,则不能被继承 。
8 接口 可以通过interface来定义一个接口,就像定义一个标准的类一样 。 复制代码 代码如下: // 声明一个iTemplate接口
interface iTemplate { public function setVariable($name, $var); public function getHtml($template); } // 实现接口 // 下面的写法是正确的 class Template implements iTemplate { private $vars = array(); public function setVariable($name, $var) { $this->vars[$name] = $var; } public function getHtml($template) { foreach($this->vars as $name => $value) { $template = str_replace({ . $name . }, $value, $template); } return $template; } } 9 属性 类的变量成员叫做“属性”,属性声明是由关键字public或者protected或者private开头,然后跟一个变量来组成 。 属性中的变量可以初始化,但是初始化的值必须是常数,这里的常数是指php脚本在编译阶段时就为常数,而不是在编译阶段之后在运行阶段运算出的常数 。 复制代码 代码如下: <?php
class Person{ //下面是人的成员属性 private $name; //人的名字 private $sex; //人的性别 private $age; //人的年龄 //__get()方法用来获取私有属性 private function __get($property_name){ if(isset($this->$property_name)){ return($this->$property_name);}else { return(NULL); } } } //__set()方法用来设置私有属性 private function __set($property_name, $value){ $this->$property_name = $value; } //__isset()方法 private function __isset($nm){ echo "isset()函数测定私有成员时,自动调用<br>"; return isset($this->$nm); } //__unset()方法 private function __unset($nm){ echo "当在类外部使用unset()函数来删除私有成员时自动调用的<br>"; unset($this->$nm); } } $p1=new Person(); $p1->name="this is a person name"; //在使用isset()函数测定私有成员时,自动调用__isset()方法帮我们完成,返回结果为true echo var_dump(isset($p1->name))."<br>"; echo $p1->name."<br>"; //在使用unset()函数删除私有成员时,自动调用__unset()方法帮我们完成,删除name私有属性 unset($p1->name); //已经被删除了, 所这行不会有输出 echo $p1->name; ?> 复制代码 代码如下: <?php
class Person{ //下面是人的成员属性 private $name; //人的名字 private $sex; //人的性别 private $age; //人的年龄 //__get()方法用来获取私有属性 private function __get($property_name){ if(isset($this->$property_name)){ return($this->$property_name); }else{ return(NULL); } } } //__set()方法用来设置私有属性 private function __set($property_name, $value){ $this->$property_name = $value; } //__isset()方法 private function __isset($nm){ echo "isset()函数测定私有成员时,自动调用<br>"; return isset($this->$nm); } //__unset()方法 private function __unset($nm){ echo "当在类外部使用unset()函数来删除私有成员时自动调用的<br>"; unset($this->$nm); } } $p1=new Person(); $p1->name="this is a person name"; //在使用isset()函数测定私有成员时,自动调用__isset()方法帮我们完成,返回结果为true echo var_dump(isset($p1->name))."<br>"; echo $p1->name."<br>"; //在使用unset()函数删除私有成员时,自动调用__unset()方法帮我们完成,删除name私有属性 unset($p1->name); //已经被删除了, 所这行不会有输出 echo $p1->name; ?> 10 克隆 对象复制可以通过clone关键字来完成(如果对象中存在__clone()方法,会先被调用) 。对象中的 __clone()方法不能直接调用 。 希望本文所述对大家的php面向对象程序设计有所帮助 。 |