程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP作用域限定符::的幾個程序例子

PHP作用域限定符::的幾個程序例子

編輯:關於PHP編程

雙冒號::被認為是作用域限定操作符,用來指定類中不同的作用域級別。::左邊表示的是作用域,右邊表示的是訪問的成員。

系統定義了兩個作用域,self和parent。self表示當前類的作用域,在類之外的代碼是不能使用這個操作符的。

Program List:使用self作用域訪問父類中的函數

  
<?php
	class NowaClass
	{
		function nowaMethod()
		{
			print '我在類 NowaClass 中聲明了。';
		}
	}
	
	class ExtendNowaClass extends NowaClass
	{
		function extendNowaMethod()
		{
			print 'extendNowaMethod 這個方法在 ExtendNowaClass 這個類中聲明了。';
			self::nowaMethod();
		}
	}
	
	ExtendNowaClass::extendNowaMethod();
	
?>

程序運行結果:

extendNowaMethod 這個方法在 ExtendNowaClass 這個類中聲明了。
我在類 NowaClass 中聲明了。

parent這個作用域很簡單,就是派生類用來調用基類的成員時候使用。

Program List:使用parent作用域

    
<?php
	class NowaClass
	{
		function nowaMethod()
		{
			print '我是基類的函數。';
		}
	}
	
	class ExtendNowaClass extends NowaClass
	{
		function extendNowaMethod()
		{
			print '我是派生類的函數。';
			parent::nowaMethod();
		}
	}
	
	$obj = new ExtendNowaClass();
	$obj -> extendNowaMethod();
	
?>

程序運行結果:

我是派生類的函數。
我是基類的函數。

Program List:用基類的方法訪問派生類的靜態成員

如何繼承一個存儲位置上的靜態屬性。

  
<?php
class Fruit 
{
	public function get() 
	{
        echo $this->connect();
    }
}
class Banana extends Fruit 
{
    private static $bananaColor;
    public function connect() 
	{
        return self::$bananaColor = 'yellow';
    }
}
class Orange extends Fruit {
    private static $orange_color;
    public function connect() 
	{
        return self::$orange_color = 'orange';
    }
}
$banana = new Banana();
$orange = new Orange();
$banana->get();
$orange->get();
?>

程序運行結果:

yellow
orange。

Program List:靜態函數初始化

在一個類中初始化靜態變量比較復雜,你可以通過創建一個靜態函數創建一個靜態的構造器,然後在類聲明後馬上調用它來實現初始化。

    
<?php
class Fruit 
{
    private static $color = "White";
    private static $weigth;
    public static function init() 
	{
        echo self::$weigth = self::$color . " Kilogram!";
    }
}
Fruit::init();
?>

程序運行結果:

White Kilogram!

Program List:一個簡單的單例模式例子

這個應該可以幫到某些人吧。

  
<?php
class Fruit
{
	private static $instance = null;
    private function __construct()
    {
      $this-> color = 'Green';
    }
    public static function getInstance()
    {
      	if(self::$instance == null)
      	{
        	print "Fruit object created!<br />";
        	self::$instance = new self;
      	}
      	return self::$instance;
    }
    public function showColor()
    {
      	print "My color is {$this-> color}!<br>";
    }
    public function setColor($color)
    {
      	$this-> color = $color;
    }
}
  $apple = Fruit::getInstance(); // Fruit object created!
  $apple-> showColor(); // My color is Green!
  $apple-> setColor("Red");
  $apple-> showColor(); // My color is Red!
  $banana = Fruit::getInstance();
  $banana-> showColor(); // My color is Red!
  $banana-> setColor("Yellow");
  
  $apple-> showColor(); // My color is Yellow!
?>

程序運行結果:

Fruit object created!
My color is Green!
My color is Red!
My color is Red!
My color is Yellow!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved