PHP 相当于JavaBean的代码

<?php
	require_once("Collection1.class.php");
	
	require_once("Dog.class.php");
	
	require_once("User.class.php");
	
	
	
	
	function isEveryoneAwake(){
		if(time()< strtotime("today 8:30am") || time() > strtotime("today 10:30pm")){
			return false;
		}else{
			return true;
		}
	}
	
	try{
		$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '');
		//$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
		
		$user = new User($pdo);
		
		print "Running ....<br/>";
		$user->setFirstName("Steven");
		$user->setLastName("Nowicki");
		
		print "First Name is ".$user->getFirstName()."<br/>";
		print "Last Name is ". $user->getLastName() ."<br/>";
		
		print "saving .....<br/>";
		
		$user->save();
		
		print "ID in database is ".$user->getID()."<br/>";
		
		
		
		
		$objStatement = $pdo->prepare("select * from samsung");
		
		$result = $objStatement->execute();
		
		$i = 0;
		
		//var_dump($result);
		
		while($arrow = $objStatement->fetch(PDO::FETCH_ASSOC)){
			print "Row $i<br/> \n";
			foreach($arrow as $key=>$value){
				print "-Column $key, value $value <br/>\n";
			};
			$i++;
		}
		
		print "connect successful";
	}catch(PDOException $e){
		echo $e->getMessage();
	}
	
	$pdo = null;
	print "successfully disconnected\n";
	
	
	
	$objDog = new Dog("Fido");
	$objDog->onspeak('isEveryoneAwake');
	$objDog->bark();
	
	
	$coll = new Collection1();
	
	$coll->addItem("samsung","key1");
	$coll->addItem("sssssss", "key2");
	
	echo $coll->getItem("key1");
	echo $coll->__toString();
?>



<?php
	class User{
	
		private $ID;
		private $objPDO;
		private $strTableName;
		private $blForDeletion;
		
		private $FirstName;
		private $LastName;
		private $UserName;
		private $Password;
		
		public function __construct(PDO $objPDO, $id = NULL){
			$this->strTableName = "user";
			$this->arRelationMap = array(
				"id" => "ID",
				"first_name" => "FirstName",
				"last_name" => "LastName",
				"username" => "UserName",
				"md5_pwd" => "Password");
			
			$this->objPDO = $objPDO;
			
			if(isset($id)){
				$this->ID = $id;
				
				$strQuery = "SELECT ";
				
				foreach($this->arRelationMap as $key => $value){
					$strQuery .= $key. ",";
				}
				
				$strQuery = substr($strQuery, 0, strlen($strQuery) - 1);
				$strQuery .= " FROM". $this->strTableName. " WHERE id = :eid";
				$objStatement = $this->objPDO->prepare($strQuery);
				
				$objStatement->bindParam(":eid", $this->ID, PDO::PARAM_INT);
				$objStatement->execute();
				
				$arRow = $objStatement->fetch(PDO::FETCH_ASSOC);
				
				foreach($arRow as $key=>$value){
					$strMember = $this->arRelationMap[$key];
					
					if(property_exits($this, $strMember)){
						if(is_numeric($value)){
							eval('$this->$strMember = $value;');
						}else{
							eval("$this->$strMember = '$value';");
						}
					}
				}
				
			}
		}
		
		
		public function save(){
			if(isset($this->ID)){
				$strQuery = "UPDATE $this->strTableName SET ";
				foreach($this->arRelationMap as $key=>$value){
					eval("$actualValue = $this->".$value.";");
					
					if(isset($actualValue)){
						$strQuery .= "$key = :$value,"; 
					}
				}
				
				$strQuery = substr($strQuery, 0, strlen($strQuery) - 1);
				
				$strQuery .= " WHERE id = :eid";
				
				unset($objStatement);
				$objStatement = $this->objPDO->prepare($strQuery);
				
				$objStatement->bindValue(":eid", $this->ID, PDO::PARAM_INT);
				
				foreach($this->arRelationMap as $key=>$value){
					eval("$actualValue = $this->".$value.";");
					if(isset($actualValue) || $actualValue == NULL){
						if(is_int($actualValue)){
							$objStatement->bindValue(":".$value, $actualValue, PDO::PARAM_INT);	
						}else{
							$objStatement->bindValue(":".$value, $actualValue, PDO::PARAM_STR);
						}
					}
				}
				
				$objStatement->execute();
			}else{
				$strValueList = "";
				
				$strQuery = "INSERT INTO $this->strTableName (";
				
				foreach($this->arRelationMap as $key => $value){
					 eval('$actualValue = $this->'.$value.';');
					 
					 if($actualValue){
						$strQuery .= $key.",";
						
						$strValueList .= ":$value,";
					 }
				}
				
				$strQuery = substr($strQuery, 0, strlen($strQuery) - 1);
				
				$strValueList = substr($strValueList, 0, strlen($strValueList) - 1);
				
				$strQuery .= ") VALUES (".$strValueList.")";
				
				unset($objStatement);
				
				$objStatement = $this->objPDO->prepare($strQuery);
				
				foreach($this->arRelationMap as $key => $value){
					eval('$actualValue = $this->'.$value.';');
					
					if(isset($actualValue)){
						if(is_int($actualValue) || $actualValue == NULL){
							$objStatement->bindValue(":$value", $actualValue, PDO::PARAM_INT);
						}else{
							$objStatement->bindValue(":$value", $actualValue, PDO::PARAM_STR);
						}
					}				
				}
				
				$objStatement->execute();
				
				$this->ID = $this->objPDO->lastInsertId();
			}
		}
		
		public function MarkForDeletion(){
			$this->blForDeletion = true;
		}
		
		public function __destruct(){
			if(isset($this->ID)){
				if($this->blForDeletion == true){
					$strQuery = "DELETE FROM $this->strTableName WHERE ID = :eid";
					
					$objStatement = $this->objPDO->prepare($strQuery);
					
					$objStatement->bindValue(":eid", $this->ID, PDO::PARAM_INT);
					
					$objStatement->execute();
				}
			}
		}
		
		public function __call($strFunction, $arguments){
			$strMethodType = substr($strFunction, 0, 3);
			$strMethodMember = substr($strFunction, 3);
			switch($strMethodType){
				case "set": return ($this->SetAccessor($strMethodMember, $arguments[0])); break;
				case "get": return ($this->GetAccessor($strMethodMember));
			}
		
			return (false);
		}
		
		private function SetAccessor($strMember, $strNewValue){
		
			if(property_exists($this, $strMember)){
				if(is_numeric($strNewValue) || $strNewValue == NULL){
					eval('$this->'.$strMember. '= ' .$strNewValue.';');
				}else{
					//var_dump($strMember);
					//echo '<br/>$this->'.$strMember. '= "' .$strNewValue.'";<br/>';
					eval('$this->'.$strMember. '= "' .$strNewValue.'";');
				}
			}else{
				return (false);
			}
		}
		
		private function GetAccessor($strMember){
			if(property_exists($this, $strMember)){
				//echo'$strValue $this->'.$strMember.';'."<br/>";
				eval('$strValue = $this->'.$strMember.';');
				return ($strValue);
			}else{
				return (false);
			}
		}
	}
?>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值