ホームページ  >  記事  >  バックエンド開発  >  PHPのコレクションクラス

PHPのコレクションクラス

WBOY
WBOYオリジナル
2016-07-25 08:44:181484ブラウズ
  1. header("Content-type:text/html; charset=utf-8");
  2. class Collection{
  3. private $_members=array();
  4. private $_onload;
  5. private $_isLoaded=false;
  6. パブリック関数 startLoad(){
  7. $this->_checkCallback();
  8. }
  9. パブリック関数 addItem($obj,$key=NULL){
  10. $this->_checkCallback();
  11. if($key){
  12. if(isset($this->_members[$key])){
  13. throw new Exception("キー \"$key\" はすでに使用されています!");
  14. }else{
  15. $this->_members[$key]=$obj;
  16. }
  17. }else{
  18. $this->_members[]=$obj;
  19. }
  20. }
  21. public function RemoveItem($key){
  22. $this ->_checkCallback();
  23. if(isset($this->_members[$key])){
  24. unset($this->_members[$key]);
  25. }else{
  26. throw new Exception("無効なキー \"$key\"!");
  27. }
  28. }
  29. public function getItem($key){
  30. $this->_checkCallback();
  31. if(isset($this->_members[$key ])){
  32. return $this->_members[$key];
  33. }else{
  34. throw new Exception("無効なキー \"$key\"!");
  35. }
  36. }
  37. パブリック ファンクション キー() {
  38. $this->_checkCallback();
  39. return array_keys($this->_members);
  40. }
  41. public 関数 length(){
  42. $this->_checkCallback();
  43. return sizeof($this- >_members);
  44. }
  45. public 関数存在します($key){
  46. $this->_checkCallback();
  47. return (isset($this->_members[$key]));
  48. }
  49. public function setLoadCallback($functionName,$objOrClass=NULL){
  50. if($objOrClass){
  51. $callback=array($objOrClass,$functionName);
  52. }else{
  53. $callback=$functionName;
  54. }
  55. if(! is_callable($callback)){
  56. /*throw new Exception("$callableName is not callable"."as aparameter to oonload");*/
  57. echo "$callback is not callable
    ";
  58. return false;
  59. }
  60. $this->onload=$callback;
  61. }
  62. プライベート関数 _checkCallback(){
  63. if(isset($this->onload)&&!$this->_isLoaded){
  64. $this- >_isLoaded=true;
  65. call_user_func($this->_onload,$this);
  66. }
  67. }
  68. }
复制代

PHP、コレクション


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。