熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> PHP編程 >> 正文

開發大型PHP項目的技巧與方法[5]

2022-06-13   來源: PHP編程 

  這個功能很強大只要定義方法而不去考慮所有對象的類型在不同的類中按不同的方法實現它們然後在主腳本中對任意對象使用它們沒有ifelse也不需要兩個程序員只有高興

  現在你同意編程是容易的維護是便宜的可重用是真的嗎?

  如果你管理一組程序員分配工作就是很簡單的了每個人可能負責一個類型的對象和處理它的類

  可以通過這個技術實現國際化根據用戶所選的語言字段應用相應的類就可以了等等

  拷貝和克隆

  當你創建一個$obj的對象時你可以通過$obj=$obj來拷貝對象新的對象是$obj的一個拷貝(不是一個引用)所以它具有$obj在當時的狀態有時候你不想這樣你只是想生成一個象obj類一樣的一個新的對象可以通過使用new語句來調用類的構造函數在PHP中也可以通過序列化和一個基類來實現但所有的其它類都要從基類派生出來

  進入危險區域

  當你序列化一個對象你會得到某種格式的字符串如果你感興趣你可以調究它其中字符串中有類的名字(太好了!)你可以把它取出來

  代碼:

  以下是引用片段

以下是引用片段:
<?php 
$herring=serialize($obj); 
$vec=explode(´:´,$herring); 
$nam=str_replace("\"",´´,$vec[2]); 
?> 

  所以假設你創建了一個"Universe"的類,並且強制所有的類都必須從universe擴展,你可以在universe中定義一個clone的方法,如下代碼:

  以下是引用片段:

以下是引用片段:
  <?php 
class Universe { 
function clone() { 
$herring=serialize($this); 
$vec=explode(´:´,$herring); 
$nam=str_replace("\"",´´,$vec[2]); 
$ret=new $nam; 
return $ret; 


//然後 
$obj=new Something(); 
//從Universe擴展 
$other=$obj->clone(); 
?> 

   你所得到的是一個新的Something類的對象,它同使用new方法,調用構造函數創建出的對象一樣。TW.WINgWIT.cOM我不知道這個對你是否有用,但是Universe類可以知道派生類的名字是一個好的經驗。想象是唯一的限制。

[1]  [2]  [3]  [4]  [5]  


From:http://tw.wingwit.com/Article/program/PHP/201311/21400.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.