龙空技术网

编程代码规范(PHP)之——面向对象特性

核子力量 110

前言:

而今朋友们对“php中什么是静态变量的”都比较关心,你们都需要知道一些“php中什么是静态变量的”的相关文章。那么小编也在网络上搜集了一些有关“php中什么是静态变量的””的相关知识,希望兄弟们能喜欢,姐妹们快快来了解一下吧!

成员可见性

规则:类的成员变量应该定义为私有或保护类型,且不用加m_开始标记

说明:

class Fraction implements Printing

{

/**

* 分数的分子成员

*/

private int numerator;

/**

* 分数的分母成员

*/

private int denominator;

}

规则:类中访问控制符,只是该类内部调用的成员(变量/方法)使用 private,继承类可以使用的成员(变量/方法)使用protected,对外公开的成员(变量/方法)使用public(尽管方法PHP会默认为public)。

说明:提高可维护性,避免误解;成员变量必须声明访问控制符,否则PHP认为语法错误(静态变量除外)。

规则:抽象类中的抽象方法,abstract关键字前要有明确的访问控制符修饰(public/protected,尽管PHP会默认为public)。

说明:PHP语法规定,抽象类中抽象方法不能被private修饰;可定义普通成员方法(一定要有实现体)

eg:

abstract class SupEntity

{

public abstract function abstractFunc();

}//abstract class SupEntity

规则:接口中的字段只能定义常量,方法一律不用public访问控制符修饰(PHP默认为public修饰)。

说明:PHP语法规定,接口中不能定义变量(静态、非静态均不行),只能定义常量(只能被const修饰,类中定义常量时,也只能被const修饰);接口中方法只能被public控制符修饰(其它编译器不认),且不能有实现体

eg:

interface InterfaceT

{

const TT = "abcl";

function doStart();

}

等价于:

interface InterfaceT

{

const TT = "abcl";

public fuction doStart();

}

类成员访问

规则:对非静态成员(变量/方法)的访问,类内部用“$this->”方式、类外部用“$对象->”的方式;在类内部,除非需要访问容易产生混淆的成员方法时,才建议用“parent::”或“类名::”的方式。

说明:对于非静态成员变量,类内部、外部PHP均不允许采用其它方式访问(直接访问、parent::、类名::、self::);对于非静态成员方法,类内部可采用“parent::”或“类名::”的方式访问,类外部不允许用除“$对象->”外的任何其它方式访问。

eg:

public function setNumeratorAndDenominator($num,

$den

)

{

$this->numerator = $num;

$this->denominator = $den;

//非法访问

//$numerator = $num;

//非法访问

//$denominator = $den;

//非法访问

//Fraction::$numerator = $num;

//非法访问

//Fraction::$denominator = $den;

}//public function setNumeratorAndDenominator($num,

public function prints()

{

//实现分数的格式化打印

$this->printFormat();

//合法,但不推荐

//Fraction::printFormat();

//非法

//printFormat();

}//public function prints()

规则:类内部对静态成员(变量/方法)访问用“self::成员”,类外部对静态成员(变量/方法)访问用“类名::成员”的方式;在类内部,除非需要访问容易产生混淆的静态成员(变量/方法)时,才建议用“parent::”或“类名::”的方式。

说明:类内部,PHP不允许通过$this->或直接访问静态成员($this->访问静态成员变量非法,$this->访问静态成员方法合法、但不推荐);类外部,PHP也不允许通过对象直接访问静态成员(通过对象访问成员方法合法、但不推荐)

eg:

//Book类

class Book

{

/**

* 声明一个静态变量|$num|,初值为0

*/

static $num = 0;

/**

* 定义一个静态方法

*/

public static function sayHello()

{

echo ',请问好!';

}

/**

* 定义一个普通方法

*/

public function showMe()

{

//输出静态变量

echo '您是第'.self::$num.'位访客';

//将静态变量加1

self::$num++;

//合法,但不推荐

//echo '您是第'.Book::$num.'位访客';

//Book::$num++;

//语法错误

//echo '您是第'.$this->num.'位访客';

//$this->num++;

//语法错误

//echo '您是第'.$num.'位访客';

//$num++;

//打招呼

self::sayHello();

//合法,但不推荐

//Book::sayHello();

//合法,但不推荐

//$this->sayHello();

//语法错误

//sayHello();

}//public function showMe()

}//class Book

//实例化对象$book1

$book1 = new Book();

//调用showMe()方法

$book1 -> showMe();

echo "<br>";

//实例化对象$book2;

$book2 = new Book();

//再次调用showMe()方法

$book2 -> showMe();

echo "<br>";

//直接使用类名调用静态变量

echo '您是第'.Book::$num.'为访客';

//非法访问

//echo '您是第'.$book1->num.'为访客';

//打招呼

Book::sayHello();

//合法,但不推荐

//$book1->sayHello();

规则:类内部对类常量访问用self关键字,类外部对类常量访问用“类名::常量”的方式。

说明:类内部,PHP不允许通过$this->或直接访问类常量;类外部,PHP也不允许通过对象直接类常量

eg:

class Book

{

/**

* 声明一个常量,初值为1

*/

const NUM = 1;

/**

* 申明一个方法

*/

public function showMe()

{

//输出常量

echo '您是第'.self::NUM.'位访客';

//合法,但不推荐

//echo '您是第'.Book::NUM.'位访客';

//语法错误

//echo '您是第'.$this->NUM.'位访客';

//语法错误

//echo '您是第'.NUM.'位访客';

}

}

//实例化对象$book1

$book1 = new Book();

//调用showMe()方法

$book1 -> showMe();

echo "<br>";

//直接使用类名调用常量

echo '您是第'.Book::NUM.'为访客';

//非法访问

//echo '您是第'.$book1->NUM.'为访客';

标签: #php中什么是静态变量的 #phpconst类 #php中静态变量