学习心得(1)- 类

字体大小: 中小 标准 ->行高大小: 标准
<!--
学习类之前,先掌握几个函数:
1、 func_get_arg(int $arg_num) 
    返回参数列表,传回项目
    返回类型:mixed;
    说明:返回自定义函数列表的第$arg_num个参数,默认从0开始,如果$arg_num的值大于实际列表的值,返回false;
2、 func_get_args() 
    返回包含函数参数的数组。
    说明:返回数组,数组的数目由参数列组成。 
3、 func_num_args()
    返回传递的函数数量。
4、 function_exists()
    检查函数是否存在。  
-->
<?php

/* 演示继承类  */
//创建一个基类
class A {
        
   function __construct( ) { }
   function myfun()
   {
       echo "Class A : 类 A ";
   }
  function __destruct() {
   }
}

/* 测试
 $a=new A();
 $a->myfun();
*/

//继承 类A 的  
Class B extends A
{
   function __construct() {}   
   function myfun($str){
       echo A::myfun()."Class B : 类 B ".$str."\n";
   }   
   function __destruct(){}
}

Class C extends B  //不支持多重继承
{
   function __construct() {}
   
   function myfun($str){
       echo A::myfun()."\n";  //这样表示继承至 A (应为父类B继承了A)
       echo parent::myfun($str)."\n"; //这样表示继承至 B
       echo "Class C : 类 C\n";
   }   
   function __destruct(){}
}

/* 测试结果
$m=new C();
$m->myfun('hello');
*/

/* 演示重载构造函数(变通的方法)*/
Class D
{   
  function d(){
      $name="d".func_num_args(); 
    $this->$name(); 
  }   
  
  function d1() {
      echo 'd1'; 
  }
    
  function d2(){
    echo 'd2';
  }
}

/* 测试结果 
$d=new D(1); //调用d1
$d=new D(1,2); //调用d2
*/

/* 抽象类和接口 */
//先定义抽象类 
abstract class E {
   function myfun(){}
   function myfun1(){}
}

//继承抽象类
class F extends E {
   function myfun(){ echo "类 F 继承抽象类: E\n"; }    
}

//继承抽象类
class G extends E {
   function myfun1(){ echo "类 G 继承抽象类: E\n"; }    
}

/* 测试
$E=new E();  //这样就会出错,抽象类不能被实例化。
$f = new F();
$f->myfun();
$g = new G();
$g->myfun1();
*/
// 定义一个接口
interface ih{
   public function myfun();
   public function myfun1($a,$b);
}

class H implements ih {
    public function myfun()
    {
        echo "实现接口 ih 函数:myfun ";
    }
    
    public function myfun1($a,$b)
    {
        echo "实现接口 ih 函数:myfun 参数1:".$a." 参数2 ".$b;
    }
    
}

/*
//以下就会提示错误: Class I contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (ih::myfun)
class I implements ih {        
    public function myfun1($a,$b)
    {
        echo "实现接口 ih 函数:myfun 参数1:".$a." 参数2 ".$b;
    }
}*/

/* 测试
$h=new H();
$h->myfun();
$h->myfun1(1,a);
*/

/* 定义一个枚举enum类 */

class enum {
  private $ _this = array();
function __construct()
{
//调用属性构造器
$args = func_get_args();
$i = 0;
do{
$this->__this[$args[$i]] = $i;
} while(count($args) > ++$i);
}
//属性构造器
public function __get($n){
return $this->__this[$n];
}
};
/*  测试结果
$days = new enum(
"Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday"
);
$today = $days->Thursday;
echo "enum : ".$today;
*/
?>

此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/1112.html