对码当歌,猿生几何?

php静态方法与静态属性

        nblogs-markdown">


title: php静态方法与静态属性
date: 2017-09-09
categories:

  • PHP学习笔记
    tags:

  • php

  • static 修饰的类方法为静态方法,在静态方法中只能调用静态变量,不能调用普通变量

  • 在类的内部访问该类的静态方法 self::静态方法名

  • 在类的内部访问父类的静态方法 parent::静态方法名

  • 在类的外部访问静态方法 类名::静态方法名

在类的内部访问该类的静态方法

<?php
header("Content-type:text/html;charset=utf-8");

class People{
    public static function introduceMySelf(){  //定义静态类方法
        echo '本府芳名不便告知,望谅解!<br>';
    }
    public static function introduceSomeone($name){  //定义静态类方法
        if ($name == '我') {
            self::introduceMySelf();  //调用静态类方法
        }else{
        echo '这就是人见人爱花见花开的'.$name.'同学!<br>';
        }
    }
}
?>

在类的内部访问父类的静态方法

在类的外部使用静态方法

<?php
header("Content-type:text/html;charset=utf-8");

class People{
    public static function introduceMySelf(){  //定义静态类方法
        echo '本府芳名不便告知,望谅解!<br>';
    }
    public static function introduceSomeone($name){  //定义静态类方法
        echo '这就是人见人爱花见花开的'.$name.'同学!<br>';
    }
    People::introduceMySelf();  //调用无参数的静态方法
    People::introduceSomeone('沫沫');  //调用带参数的静态方法
}
?>

类的属性

访问类的成员属性

在类的方法中访问类的属性,需要使用this关键字。this是一个特殊变量,只能在类的内部使用,用于获得类的某个属性。

$this->属性名  //注意这里的属性名前没有$
<?php
header("Content-type:text/html;charset=utf-8");

class People{
    public $name;

    public function introduceSomeone(){  //定义静态类方法
        echo '我就是人见人爱花见花开的'.$this->name.'同学!<br>';  //这里的属性名前不要加$
    }
}

$p = new People();  //实例化People类
$p->name = '沫沫';  //修改类的属性
$p->introduceSomeone();  //调用类的方法
?>

静态属性

定义静态类的属性

[访问控制修饰符] static 属性名;

访问静态属性

  • 在类的内部访问该类的静态属性 self::$静态属性名

  • 在类的内部访问父类的静态属性 parent::$静态属性名

  • 在类的外部访问类的静态属性(前提时该属性可以访问)不要实例化类就可以直接调用,格式为:类名::$静态属性名

注意这里的静态属性名前带有 $

<?php
header("Content-type:text/html;charset=utf-8");

class People{
    static $number = 1;
}
    echo '$number = '.People::$number.'<br>';
    ++People::$number;
    echo '$number = '.People::$number.'<br>';
    $a = People::$number + People::$number;
    echo '$number + $number = '.$a.'<br>';
?>

常量

定义常量:

const 常量名 = '值';  //注意常量名前面没有$

注意:

  • 常量名前面没有 $

  • 常量在定义时需要赋初始值

  • 常量名字母一般全部大写

访问常量

  • 在类的内部访问该类的常量:self::常量名;

  • 在类的内部访问访问父类的常量名:parent::常量名;

  • 在类的尾部访问常量成员时,不需要实例化类,也不需要用操作符->,而是是哟个作用域符::。语法格式为:类名::常量名;(这里的常量名前面也不加$)