前言:
而今朋友们对“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中静态变量