12:PHP类与对象 基本概念

1、class

每个类的定义都以关键字 class开头,后面跟着类名,后面跟着一对花括号,里面包含有类的属性与方法的定义。

类名可以是任何非 PHP 保留字的合法标签。一个合法类名以字母或下划线开头,后面跟着若干字母,数字或下划线。不区分

一个类可以包含有属于自己的常量变量(称为“属性”)以及函数(称为“方法”)。

  1. <?php
  2.  class  blogs
  3.  {
  4.      // 公共变量
  5.      public  $var  =  '付杰博客:www.fujieace.com' ;
  6.      // 公共方法
  7.      public function  displayVar () {
  8.          echo  $this ->var ;
  9.     }
  10.  }

 

2、$this是谁?

当一个方法在类定义内部被调用时,有一个可用的伪变量 $this 。 $this 是一个到主叫对象的引用(通常是该方法所从属的对象);简单来说:谁new这个对象,$this就指的是谁;

  1. <?php
  2.  class  blogs
  3.  {
  4.      // 公共变量
  5.      public  $var  =  '付杰博客:www.fujieace.com' ;
  6.      // 公共方法
  7.      public function  displayVar () {
  8.          echo  $this ->var ;
  9.     }
  10.  }
  11. class Welcome
  12. {
  13.    public $var = '欢迎来到付杰博客!';
  14.     public function displayVar(){
  15.         echo $this->var;
  16.     }
  17. }
  18. $a=new blogs();
  19. $a->displayVar();//付杰博客:www.fujieace.com
  20. $b=new Welcome();
  21. $b->displayVar();//欢迎来到付杰博客!

 

3、new

要创建一个类的实例,必须使用 new关键字。当创建新对象时该对象总是被赋值,除非该对象定义了构造函数并且在出错时抛出了一个异常。类应在被实例化之前定义;

  1. <?php
  2. class fujieace{
  3.     function url(){
  4.        echo 'www.fujieace.com';
  5.     }
  6. }
  7. $blog=new fujieace();
  8. $blog->url();//www.fujieace.com
  9. //或者
  10. $classname='fujieace';
  11. $blogtwo=new $classname();
  12. $blogtwo->url();//www.fujieace.com

 

4、new self 和 new parent

在类定义内部,可以用 new self 和 new parent 创建新对象。
当把一个对象已经创建的实例赋给一个新变量时,新变量会访问同一个实例,就和用该对象赋值一样。此行为和给函数传递入实例时一样。可以用克隆给一个已创建的对象建立一个新实例。

  1. <?php
  2. class a{
  3.     function aaa(){
  4.         echo '这是一个父类a!';
  5.  }
  6. }
  7. class b extends  a{
  8.     function  bbb(){
  9.         echo 'parent:实例化父类;它继续了父类a!';
  10.         new parent;
  11.         $this->aaa();//parent:实例化父类;它继续了父类a!这是一个父类a!
  12.     }
  13.     function bb(){
  14.         echo 'self:实例化本身类';
  15.         new self;
  16.         $this->bbb();//self:实例化本身类parent:实例化父类;它继续了父类a!这是一个父类a!
  17.     }
  18. }
  19. $obj=new b();
  20. $obj->bbb();//parent:实例化父类;它继续了父类a!这是一个父类a!
  21. $obj->bb();//self:实例化本身类parent:实例化父类;它继续了父类a!这是一个父类a!
  22. /*切记:在类当中用new self 和 new parent 时,一定要注意,千万不要造成死循环!*/

 

5、extends

一个类可以在声明中用 extends关键字继承另一个类的方法和属性。PHP不支持多重继承,一个类只能继承一个基类。

被继承的方法和属性可以通过用同样的名字重新声明被覆盖。但是如果父类定义方法时使用了 final,则该方法不可被覆盖。可以通过 parent::来访问被覆盖的方法或属性。

当覆盖方法时,参数必须保持一致否则 PHP 将发出 E_STRICT 级别的错误信息。但构造函数例外,构造函数可在被覆盖时使用不同的参数。

  1. <?php
  2. class SimpleClass{
  3.     function displayVar(){
  4.         echo '付杰博客:www.fujieace.com';
  5.     }
  6. }
  7. class  ExtendClass  extends  SimpleClass
  8.  {
  9.      function  displayVar ()
  10.      {
  11.          echo  "我的品牌:" ;
  12.          parent :: displayVar ();
  13.      }
  14.  }
  15. $extended  = new  ExtendClass ();
  16. $extended -> displayVar ();//我的品牌:付杰博客:www.fujieace.com

 

6、::class

自 PHP 5.5 起,关键词 class 也可用于类名的解析。使用 ClassName::class 你可以获取一个字符串,包含了类 ClassName 的完全限定名称。这对使用了 命名空间 的类尤其有用。

  1. <?php
  2. namespace  NS  {
  3.     class  ClassName  {
  4.     }
  5.     echo  ClassName ::class;//NS\ClassName
  6. }

PHP类基本概念

    A+
发布日期:2017年01月01日 10:54:41  所属分类:PHP教程
最后更新时间:2017-01-01 10:56:02
付杰
  • ¥ 6.8元
  • 市场价:8.8元
  • ¥ 68.0元
  • 市场价:128.0元
  • ¥ 68.0元
  • 市场价:98.0元
  • ¥ 98.0元
  • 市场价:198.0元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: