Heim >php教程 >php手册 >PHP Class类与对象学习笔记

PHP Class类与对象学习笔记

WBOY
WBOYOriginal
2016-06-13 09:52:161038Durchsuche

在学习中写到的一个PHP Class类与对象学习笔记,下面与各位朋友分享,希望此教程对各位学习类与对象有所帮助。

个人做的笔记.....用于借鉴,如有错请指出,谢谢

 代码如下 复制代码

/*******************************************

   Class 对象实例说明( 普通类 )

*******************************************/
 class ClassDemo{
  public $PublicVar;
 
  private $PrivateVar;//私有变量 外部不能调用
 
  protected $ProtectedVar;//受保护变量 外部与子类不可访问
 
  public static $StaticVar=0;//static 静态变量 静态方法 不能访问非静态方法与变量,非静态方法与变量可以访问静太方法与变量
 
  const constVar='';//当你有一个属性,不希望被修改,则考虑使用const 做成常量,使用 类名::常量名; 接口名::常量
  /*
    1.常量在定义的时候需要赋初值
    2.常量不能修改.
    3.常量名不能有 $, 一般是大写, 默认是public
    4.常量在类的内部使用 self::常量的名称 类名::常量的名称
  */
  public function __construct( /*$name*/ ){//这个可以带参数,带了参数之后必创建时必须也带有参数,不然会出错
   //$this->PublicVar=$name;
   //self::$StaticVar++;//静态变量内部访问方法  外部访问方法 对象名::变量名( ClassDemo::$StaticVar )
   $this->PublicVar='$PublicVar';
   $this->PrivateVar='$PrivateVar';
   $this->ProtectedVar='$ProtectedVar';
   self::$StaticVar++;
   echo "ClassDemo __construct
";
   }
  
  public function __destruct(){//析构函数
   }
  final public function fun(){
   /*
    final 关键字( PHP5 中出现 )
    希望方法不被其它的类继承时间覆盖, 可以使用final
   
    当这个关键字用来修饰类的时候,那么这个类将不可被其它类给继承(可以实例化)
   
    注:此关键字不能用于修饰变量

   */
   }
  }//End Class
/*******************************************

   Class 对象实例说明( 抽象类 )

*******************************************/
 abstract class AbstractDemo{
  /***************************************
 
   1.抽象类不能被实例化
  
   2.抽象类不一定要包含abstract方法。
     也就是说抽象类可以没有abstract方法
    
   3.一旦包含了abstract方法,则这个类必须
     声明为abstract
  
   4.抽象类不能有函数体
  
   5.如果一个类继续了某个抽象类,则他必须实现
     该抽象类的所有抽象方法。(除非它自己也声明为抽象类)
    
  ***************************************/
  }

/*******************************************

   Class 对象实例说明( 继承类 )

*******************************************/
 class DemoTwo extends ClassDemo{
 
  }
/*******************************************

   Class 对象实例说明( 接口 )

*******************************************/
 interface Face{
  /*********************************
  1.当一个类实现了 某个接口,则要求该类必须实现这个接口的所有方法
  2.接口的方法都不能有方法体
  3.不能去实例化一个接口
  4.接口中可以有属性,但是必须是常量,并且是public

  什么情况下使用接口
 
   1.定规范
   2.定下规范,让别的程序员来实现,比如:

  **********************************/
  public function Name();
 
  }
 
 interface Face2 extends Face{
  /*******************************
 
   继承接口
   继承接口时候不用去实现父接口的方法
 
  ********************************/
 
  const namevar=20;
 
  }
 
 class Demo implements Face2{
  /**********************************
 
   实现接口,可以同时实现多个接口
   当一个类去实现了某些接口,则必须把所有接口的方法,都实现
  
  **********************************/
 
  public $Name1=0;
 
  public function Name(){
  
   echo Face2::namevar;
  
   }
 
  }

?>

小结

在类内部访问静态成员属性或者方法,使用 self::(注意不是 $slef),如:

 代码如下 复制代码

slef:: $country
slef:: myCountry()

在子类访问父类静态成员属性或方法,使用 parent::(注意不是 $parent),如:

 代码如下 复制代码

parent:: $country
parent:: myCountry()

外部访问静态成员属性和方法为 类名/子类名:: ,如:

 代码如下 复制代码

Person::$country
Person::myCountry()
Student::$country

但静态方法也可以通过普通对象的方式访问。


•类/对象 函数

•__autoload — 尝试加载未定义的类
•call_user_method_array — 调用一个用户方法,同时传递参数数组(已废弃)
•call_user_method — 对特定对象调用用户方法(已废弃)
•class_alias — 为一个类创建别名
•class_exists — 检查类是否已定义
•get_called_class — 后期静态绑定("Late Static Binding")类的名称
•get_class_methods — 返回由类的方法名组成的数组
•get_class_vars — 返回由类的默认属性组成的数组
•get_class — 返回对象的类名
•get_declared_classes — 返回由已定义类的名字所组成的数组
•get_declared_interfaces — 返回一个数组包含所有已声明的接口
•get_declared_traits — 返回所有已定义的 traits 的数组
•get_object_vars — 返回由对象属性组成的关联数组
•get_parent_class — 返回对象或类的父类名
•interface_exists — 检查接口是否已被定义
•is_a — 如果对象属于该类或该类是此对象的父类则返回 TRUE
•is_subclass_of — 如果此对象是该类的子类,则返回 TRUE
•method_exists — 检查类的方法是否存在
•property_exists — 检查对象或类是否具有该属性
•trait_exists — 检查指定的 trait 是否存在

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn