zoukankan      html  css  js  c++  java
  • php对象之静态方法和属性

          我们把类当生成对象的模版,把对象作为活动组件,对象的方法可以被调用,对象的属性可以被访问。面向对象编程中实际操作都是通过类的实例(而不是类本身)完成的。但是,我们也可以通过类来访问对象的方法和属性,这样的方法和属性是“静态的”,必须用static关键字声明。

     1 <?php
     2 class StaticExample
     3 {
     4       static public $num = 0;
     5       static public function sayHello()
     6       {
     7              echo "hello world";
     8       }
     9 }
    10 echo StaticExample :: $num;
    11 StaticExample :: sayHello();
    12 ?>

          一个子类可以使用parent关键字可以访问父类,而不使用其类名。要从当前类中访问静态方法和属性,可以使用self关键字。self指向当前类,就像伪变量$this指向当前对象一样。

         根据定义,我们不能再对象中调用静态方法,因此静态方法和属性又被称为类变量和属性,因此不能再静态方法中使用伪变量$this。

         我们为什么要用静态方法和属性呢?

         首先,他们在代码中的任何地方都可以用(假设你可以访问该类)。也就是说,你不需要在对象间传递类的实例,也不需要将实例放到全局变量中,就可以访问类中的方法。

         其次,类的每个实例都可以访问类中定义的静态方法,所以你可以利用静态属性来设置改值,改值可以被类的所有对象使用。

         最后,不需要实例对象就可以访问静态方法和属性。

        PHP类中的常量属性

        PHP 5可以在类中定义常量属性。和全局常量一样,类常量一旦设置后就不能改变。常量属性用const关键字声明。常量不像常规属性那样以美元符号开头。按照惯例,只能以大写字母命名常量。

        

     1 <?php
     2 class Example
     3 {
     4       const  AVAILABLE    = 0;
     5       const  OUT_OF_STOCK = 1;
     6      //   ...
     7 }
     8 
     9 print Example :: AVAILABLE;
    10 ?>

        常量属性只包括基本数据类型。不能将一个对象指派给常量。像静态属性一样,只能通过类而不能通过类的实例访问常量属性。

    <<因果&矛盾>>
  • 相关阅读:
    数据类型
    python安装
    计算机基础
    Ajax--1
    ASP.net+MVC--2
    More lumber is required
    History Grading
    strcmp() Anyone?
    How Many Points of Intersection?
    Remember the Word
  • 原文地址:https://www.cnblogs.com/bridger/p/2714795.html
Copyright © 2011-2022 走看看