PHP 類的一些知識點

2021-07-03 15:23:17 字數 3514 閱讀 4844

<?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 隱式轉換。從值型別轉換成引用型別。從引用型別轉換...