在這一節中,我們就來看看在PHP中如何建立一個類和對象。
1. 建立類
在PHP中,建立一個類和在C#/Java中基本類似,閑話少說,給大家看個最簡單的例子: 複製代碼 代碼如下:<?php
class People
{
var $name;
public function GetName()
{
return $this->name;
}
public function SetName($name)
{
$this->name=$name;
}
}
$p=new People();
$p->SetName("kym");
echo($p->GetName());
?>
這裡,我們就建立一個People的類,在這裡有四個要點說明一下:
第一個是在PHP中,訪問屬性(或者方法)不是用我們所常用的點運算子(.),而是用->。
第二個是在PHP中,方法需要用function在標識,這點於Javascript很類似。
第三點是當我們聲明一個變數時,需要用var,這點也與Javascript非常類似。
第四點是在PHP中,也有著public ,protected,private三個與C#同樣的存取修飾詞,不再贅述。
在這裡,我們發現,我們可以用$p直接存取$name屬性,那麼我們需要對其進行控制,方法如下: 複製代碼 代碼如下:class People
{
private $name;
public function GetName()
{
return $this->name;
}
public function SetName($name)
{
$this->name=$name;
}
}
這時,我們在外界就無法訪問到$name屬性了。
還記得我們在上文中提到了可變函數嗎?在這裡我們一樣可以用可變函數來訪問對象的方法: 複製代碼 代碼如下:<?php
class People
{
private $name;
public function GetName()
{
return $this->name;
}
public function SetName($name)
{
$this->name=$name;
}
}
$p=new People();
$get="GetName";
$set="SetName";
$p->$set("kym");
echo($p->$get());
?>
2. 靜態方法(屬性)
在PHP中聲明靜態方法(也可稱之為類方法)與C#中是十分類似的。 複製代碼 代碼如下:<?php
class DataBase
{
public static function CreateConnection()
{
echo("Success");
}
}
DataBase::CreateConnection();
?>
同理,聲明靜態屬性也是一樣。 複製代碼 代碼如下:<?php
class DataBase
{
static $connectionString="http://127.0.0.1";
public static function CreateConnection()
{
echo("Success");
}
}
echo(DataBase::$connectionString);
DataBase::CreateConnection();
?>
3. 類常量
在C#中,我們用const來標識常量,在PHP中也是一樣。 複製代碼 代碼如下:<?php
class DataBase
{
const AUTHOR="kym";
static $connectionString="http://127.0.0.1";
public static function CreateConnection()
{
echo("Success");
}
}
echo(DataBase::AUTHOR);
echo(DataBase::$connectionString);
DataBase::CreateConnection();
?>
4. 訪問靜態變數
我們知道,靜態屬性(方法)屬於類本身,而變數(方法)屬於對象本身,而類本身先於對象而存在,那麼我們如何來在動態方法中訪問靜態變數(方法)呢?在PHP中,為我們提供了self關鍵字。 複製代碼 代碼如下:<?php
class DataBase
{
const AUTHOR="kym";
static $connectionString="http://127.0.0.1";
public static function CreateConnection()
{
echo(self::$connectionString." Success");
}
}
echo(DataBase::AUTHOR);
echo(DataBase::$connectionString);
DataBase::CreateConnection();
?>