一步一步學習PHP(5) 類和對象

來源:互聯網
上載者:User

在這一節中,我們就來看看在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();
?>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.