程式碼
//'9.1'建立物件
$session_name = $session_txt['9.1'];
echo $session_name."<br>";
//echo ROOT_PATH."<br>";
class Name{
var $property1;
var $property2;
function print_name($first_name,$last_name){
print "You first name is :$first_name,<br>";
print "and your last name :$last_name.";
}
}
$obj = &new Name;
$obj->firstname='Oliver';
$obj->lastname='Butin';
$obj->print_name($obj->firstname,$obj->lastname);
$message="
<fieldset><legend><font color=red>TIPS</font></legend>
\$obj = &new Name;<br>
\$obj->firstname='Oliver';<br>
\$obj->lastname='Butin';<br><br>
\$obj->print_name(\$obj->firstname,\$obj->lastname);
<br>
</fieldset>
";
echo $message."<br>";
//'9.2'在類別裡存取變數
$session_name = $session_txt['9.2'];
echo $session_name."<br>";
//echo ROOT_PATH."<br>";
class Name1 {
var $firstname;
var $lastname;
function print_name(){
print 'Firstname :'. $this->firstname;
print '<br>Lastname :'. $this->lastname."<br>";
}
function change_name ($name){
$name = preg_split('/\s+/',$name);
$this->firstname = $name[0];
$this->lastname = $name[1];
}
}
$obj = &new Name1;
$obj->change_name("Sterlling Hughes");
$obj->print_name();
$obj->change_name("Andrei Zmievski");
$obj->print_name();
$message="
<fieldset><legend><font color=red>TIPS</font></legend>
取class的變數 \$this->firstname,不用加\$符號。
<br>
</fieldset>
";
echo $message."<br>";
//'9.4'設定公開和私有變數或函式
$session_name = $session_txt['9.4'];
echo $session_name."<br>";
//echo ROOT_PATH."<br>";
class Car {
var $_name; // 私有變數
var $brandname;
function analyze(){
if ($this->_name == "Corola"){
$this->brandname = 'Toyota';
}else {
$this-_delete();
}
}
function _delete(){
$this->name ='';
$this->brandname ='';
}
}
$message="
<fieldset><legend><font color=red>TIPS</font></legend>
如果要宣告函式和變數為類別所私有,你必須將它們放在函數內。<br>
然而有個標準命名慣例,私有方法和變數應該有底線(_)開頭。
<br>
</fieldset>
";
echo $message."<br>";
//'9.5'撰寫建構函式(constructor)
$session_name = $session_txt['9.5'];
echo $session_name."<br>";
//echo ROOT_PATH."<br>";
class Human {
var $name;
function Human ($na){
print "Wake up $na, you have been initalized!<br>";
$this->name = $na;
}
}
$obj = &new Human ('Stephen Hughes');
class SuperHuman extends Human {
var $power;
function SuperHuman($power){
Human::Human(); //呼叫class Human 及 class 裡的 Human方法
$this->$power = $power;
print "You power is $power";
}
function user_power(){
}
}
$obj1 = &new SuperHuman (10);
$message="
<fieldset><legend><font color=red>TIPS</font></legend>
在PHP,建構函式是一個與類別名稱大小寫相同的函式,它可以接受參數<br>
,以便在初始化的時候讓物件有機會修改預設的資料。另外請注意,如果<br>
親代類別也有一個建構函式,那麼當子類別產生物件時並不會呼叫親代的<br>
建構函式。所以你必須手動作點工。<br>
function SuperHuman(\$power){<br>
<font color=red>
Human::Human(); //呼叫class Human 及 class 裡的 Human方法
</font>
<br>
\$this->\$power = \$power;<br>
print 'You power is \$power';<br>
}
<br>
</fieldset>
";
echo $message."<br>";
//'9.8'直接使用類別函式而不需產生物件
$session_name = $session_txt['9.8'];
echo $session_name."<br>";
//echo ROOT_PATH."<br>";
class Conversion {
function feet_to_meters($feet){
return $feet * 0.3054;
}
}
$orgin_height = 6;
$average_height = Conversion::feet_to_meters($orgin_height);
print "輸入的$orgin_height 呎<br>";
print "換算成$average_height 公尺";
$message="
<fieldset><legend><font color=red>TIPS</font></legend>
範例:原始碼<br>
class Coversion {<br>
function feet_to_meters(\$feet){<br>
return \$feet * 0.3054;<br>
}<br>
}<br>
\$averge = Conversion::feet_to_meters(6);<br>
直接用符號::來用Conversion -class裡的方法feet_to_meters()<br>
也可以存取變數。
<br>
</fieldset>
";
echo $message."<br>";
//'9.9'直接存取親代類別的函式
$session_name = $session_txt['9.9'];
echo $session_name."<br>";
//echo ROOT_PATH."<br>";
class Computer {
var $is_on = 1;
function turn_on(){
$this->is_on = 1;
print "You turned me on";
}
function turn_off(){
$this->is_on = 0;
print "You turned me off";
}
}
class HP extends Computer {
var $processor = 0;
var $hard_driver =0;
function turn_on(){
parent::turn_on();
$this->processor = 1;
$this->hard_drive = 1;
}
function turn_off(){
$this->hard_drive = 0;
$this->processor = 1;
parent::turn_off();
}
}
$message="
<fieldset><legend><font color=red>TIPS</font></legend>
parent類別是個特殊類別,只能用::表示法存取。它可以讓你存取<br>
親代類別的函式。
<br>
</fieldset>
";
echo $message."<br>";