PHP Class

Class 基本用法

定義 class
class City{
 public $name;
 public $mayer;
 public $population;
 public $location;
}

想像一下,建立新城市時,需要的種種資訊,都在名為 Cityclass 裡預先定義出來。

new 物化 (instanciate) class 形成真的物件 (object)
<?php /*承接上述程式碼*/
 $tpe=new City;
 $kh=new City;
?>

建立 $tpe$kh 兩座城市。

指定物件 (object) 的屬性 (properties)
<?php /*承接上述程式碼*/
 $tpe->name='台北';
 $tpe->mayer='郝龍斌';
 $tpe->population='260 萬';
 $tpe->location='台灣北部';
 $kh->name='高雄';
 $kh->mayer='陳菊';
?>

使用 -> 符號指定個別物件的實際內容;現在兩座城市各有不同的資訊了,然而它們都是由同一個 class 的定義所建立出來的。

指定 class 裡的變數 (variables) 稱為屬性,而 class 裡的函數 (functions) 稱為方法 (methods) 。目前只以變數定義了屬性,存取變數型的屬性不需加 $ 符號。定義變數時, public 前置詞為必要的,稍後再解釋。

-> 符號取得物件的屬性
<?php /*承接上述程式碼*/
 echo '<ul>';
 echo "<li>$tpe->name</li>";
 echo "<li>$tpe->mayer</li>";
 echo "<li>$tpe->population</li>";
 echo '</ul>';
?>

結果

<ul>
 <li>台北</li>
 <li>郝龍斌</li>
 <li>260 萬</li>
</ul>

class 内的常數 (constant)

定義常數
class City{
 const CITY='城市';
 const MAYER='市長';
 const GOV='市政府';
 const POPULATION='人口';
 const LOCATION='位置';

 public $name;
 public $mayer;
 public $population;
 public $location;
}
class 本身即是物件,以 :: 符號取得常數屬性
<?php /*承接前述程式碼*/
 echo '<ul>';
 echo '<li>', City::CITY, '</li>';
 echo '<li>', City::MAYER, '</li>';
 echo '<li>', City::POPULATION, '</li>';
 echo '</ul>';
?>

結果

<ul>
 <li>城市</li>
 <li>市長</li>
 <li>人口</li>
</ul>

class 内的函數 (functions) 可稱爲方法 (methods)

定義方法 (methods)
class City{
 const CITY='城市';
 const MAYER='市長';
 const GOV='市政府';
 const POPULATION='人口';
 const LOCATION='位置';

 public $name;
 public $mayer;
 public $population;
 public $location;

 public function basicInfo(){
  echo '<p>城市基本資料</p>';
 }
}
-> 符號執行物化物件的方法
<?php
 $tpe=new City;
 $tpe->basicInfo();
?>

$this 特殊變數

class 内指出物化的物件本身
class City{
 const CITY='城市';
 const MAYER='市長';
 const GOV='市政府';
 const POPULATION='人口';
 const LOCATION='位置';

 public $name;
 public $mayer;
 public $population;
 public $location;

 public function basicInfo(){
  echo '<ul>';
  echo "<li>$this->name</li>";
  echo "<li>$this->mayer</li>";
  echo "<li>$this->population</li>";
  echo '</ul>';
 }
}

self 特殊物件

class 内指出 class 物件本身
class City{
 const CITY='城市';
 const MAYER='市長';
 const GOV='市政府';
 const POPULATION='人口';
 const LOCATION='位置';

 public $name;
 public $mayer;
 public $population;
 public $location;

 public function basicInfo(){
  echo '<ul>';
  echo '<li>', self::CITY, '</li>';
  echo '<li>', self::MAYER, '</li>';
  echo '<li>', self::POPULATION, '</li>';
  echo '</ul>';
 }
}
$this 變數屬性混用
class City{
 const CITY='城市';
 const MAYER='市長';
 const GOV='市政府';
 const POPULATION='人口';
 const LOCATION='位置';

 public $name;
 public $mayer;
 public $population;
 public $location;

 public function basicInfo(){
  echo '<ul>';
  echo '<li>', self::CITY, ":$this->name</li>";
  echo '<li>', self::MAYER, ":$this->mayer</li>";
  echo '<li>', self::POPULATION, ":$this->population</li>";
  echo '<li>', self::LOCATION, ":$this->location</li>";
  echo '</ul>';
 }
}

static 方法或屬性

定義 static method
class City{
 const CITY='城市';
 const MAYER='市長';
 const GOV='市政府';
 const POPULATION='人口';
 const LOCATION='位置';

 public $name;
 public $mayer;
 public $population;
 public $location;

 public function basicInfo(){
  echo '<ul>';
  echo '<li>', self::CITY, ":$this->name</li>";
  echo '<li>', self::MAYER, ":$this->mayer</li>";
  echo '<li>', self::POPULATION, ":$this->population</li>";
  echo '<li>', self::LOCATION, ":$this->location</li>";
  echo '</ul>';
 }
 public static function getSubject(){
  return '城市的基本資料';
 }
}
static 方法由 class 物件以 :: 符號執行
<?php
 echo '<p>',City::getSubject(),'</p>';
?>
參考資源

更新日期:

google 論壇

App javascript (groups.google.com/group/app-javascript/)