PHP类中的静态方法使用实例.doc
文本预览下载声明
PHP类中的静态方法使用实例
在php中静态方法我们就直接在函数或变量前加一个static就可以了,使用的时候和静态变量差不多,不需要实例化,直接用::调用了,下面我来给大家举几个关于静态方法实例。
PHP也不例外!所谓静态方法(属性)就是以static关键词标注的属性或者方法(例如:静态属性public static username;)
静态方法和非静态方法最大的区别在于他们的生命周期不同,用一个实例来说明
静态方法定义
定义静态方法很简单,在声明关键词function之前加上static,例如:
代码如下复制代码
class A
{
static function fun()
{
// do somathing
}
}
静态方法使用
使用的时候和静态变量差不多,不需要实例化,直接用::调用,例如:
代码如下复制代码
A::fun()
对比普通方法
因为静态方法的调用不需要实例化, 所以在静态方法中引用类自身的属性或者方法的时候会出错,也就是形如self和$this是错误的。
代码如下复制代码
class MyClass
{
public $num = 5;
function __construct()
{
$this-num = 10;
}
function fun_1()
{
echo I am a public method named fun_1.n;
echo The num of object is {$this-num}.n;
}
static function fun_2()
{
echo I am a static method named fun_2.n;
}
function fun_3($n)
{
echo The arg is {$n}n;
}
}
$m = new MyClass;
$m-fun_1();
$m-fun_2();
$m-fun_3(test);
MyClass::fun_1();
MyClass::fun_2();
MyClass::fun_3(test);
输出结果:
lch@localhost:php $ php class_method.php
I am a public method named fun_1.
The num of object is 10.
I am a static method named fun_2.
The arg is test
I am a public method named fun_1.
PHP Fatal error: Using $this when not in object context in /Users/lch/program/php/class_method.php on line 14
再看一实例
用一个实例来说明。
代码如下复制代码
class user{
public static $username; //声明一个静态属性
public $password; //声明一个非静态属性
function __construct($pwd) {
echo ‘Username:’,self::$username; //输出静态属性
self::$username = ‘admin’; //为静态属性赋值
$this-password = $pwd; //为非静态属性赋值
}
public function show(){ //输出类属性
echo ‘
Username:’,self::$username;
echo ‘
Password:’,$this-password;
}
public static function sshow(){
echo ‘
Username:’,self::$username;
echo ‘
Password:’,$this-password;
}
}
user::$username = ‘root’; // 为赋值user类的静态属性赋值
$objUser = new user(’123456′); //实例化user类
$objUser-sshow();
unset($objUser);
echo ‘
Username:’,user::$username;
/*
* 输出结果为:
* User
显示全部