<?php
class
cart
}
不能將乙個類分開定義在多個檔案,也不能將類定義分到多個php塊(函式內部可以分)。
不能定義名為以下的類:
stdclass
__sleep
__wakeup
事實上不要以__開頭定義類。
class
cart
}
類如果沒有建構函式,將呼叫基類建構函式。
構造函式引數可以賦預設值
<?php
class
constructor_cart
extends
cart
}// 買些同樣的無聊老貨
$default_cart = new constructor_cart;
// 買些實在貨...
$different_cart = new constructor_cart("20", 17);
?>
@new 可以抑制發生在建構函式中的錯誤。
$cart
=new cart;
$cart
->add_item("10", 1);
類內部使用$this代表自身。
__autoload — 嘗試載入未定義的類
call_user_method_array — 呼叫乙個使用者方法,同時傳遞引數陣列(已廢棄)
call_user_method — 對特定物件呼叫使用者方法(已廢棄)
class_alias — 為乙個類建立別名
class_exists — 檢查類是否已定義
get_called_class — 後期靜態繫結(」late static binding」)類的名稱
get_class_methods — 返回由類的方法名組成的陣列
get_class_vars — 返回由類的預設屬性組成的陣列
get_class — 返回物件的類名
get_declared_classes — 返回由已定義類的名字所組成的陣列
get_declared_inte***ces — 返回乙個陣列包含所有已宣告的介面
get_declared_traits — 返回所有已定義的 traits 的陣列
get_object_vars — 返回由物件屬性組成的關聯陣列
get_parent_class — 返回物件或類的父類名
inte***ce_exists — 檢查介面是否已被定義
is_a — 如果物件屬於該類或該類是此物件的父類則返回 true
is_subclass_of — 如果此物件是該類的子類,則返回 true
method_exists — 檢查類的方法是否存在
property_exists — 檢查物件或類是否具有該屬性
trait_exists — 檢查指定的 trait 是否存在
<?php
class
named_cart
extends
cart
}?>
php不支援多繼承。
<?php
classa }
class
bextendsa }
// a 類沒有物件,這將輸出
// i am the original function a::example().
a::example();
// 建立乙個 b 類的物件
$b = new b;
// 這將輸出
// i am the redefined function b::example().
// i am the original function a::example().
$b->example();
?>
<?php
classa }
class
bextendsa }
$b = new b;
// 這將呼叫 b::example(),而它會去呼叫 a::example()。
$b->example();
?>
<?php
// classa.inc:
class
a }
// page1.php:
include("classa.inc");
$a = new a;
$s = serialize($a);
// 將 $s 存放在某處使 page2.php 能夠找到
$fp = fopen("store", "w");
fwrite($fp, $s);
fclose($fp);
// page2.php:
// 為了正常解序列化需要這一行
include("classa.inc");
$s = implode("", @file("store"));
$a = unserialize($s);
// 現在可以用 $a 物件的 show_one() 函式了
$a->show_one();
?>
function obj2array(
obj)
這個方法比較簡單,另乙個方法要繼承arrayaccess要複雜一點。
/**
* 陣列轉物件
*@param unknown $e
*@return void|stdclass
*/public
static
function
arraytoobject
($e)
return (object)$e;
}
用在redis時比較方便:
/**
* 序列化物件,返回$json字串
*/public
static
function
serialize
($model)';
$json='
$json.='}';
return
$json;
}public
static
function
unserialize
($json)','',$json);
$array=explode(',', $json);
$result=;
foreach($array
as$key =>$value)
//$obj= (object)($result);
return obj2array($result);
//return $result;
}
參考: 一些知識點
字串拼接 1.a join b a為元素之間的分隔符,b為待分割的序列 可用於輸出時的資料處理,元素間有空格,末尾沒有 2 s s s str1,str2,str3 前半部分為字串,後半部分為索引。用於引入,s是物件 3.format str1,str2,str3 與f 括號裡為已有變數 關於for...
一些知識點
1.vector是在堆上還是棧上?在堆上.2.我們發現指標有一些 似是而非 的特徵 1 指標消亡了,並不表示它所指的記憶體會被自動釋放。比如函式中的指標是區域性變數,如果它指向了堆上,而自己出了函式後消亡了,但它所指向的記憶體還是存在的,導致了記憶體洩漏.2 記憶體被釋放了,並不表示指標會消亡或者成...
一些知識點
1 sln 解決方案檔案 csproj 專案檔案 cs 原始檔 解決方案包含多個專案,每個專案都是乙個程式。config 配置檔案 3 const int a 1 const 定義乙個量為常量,運算中用到當常量使用,不可以再重新賦值。4 型別轉換。1 隱式轉換。從值型別轉換成引用型別。從引用型別轉換...