做期货应该看的网站网上推广产品哪个网好
user.clss.php
<?php/*一个功能,可以分解成很多小的功能,可以一直细分下去,只到没有过分重复的代码。
重构,就是把一个小的功能,,拎出来,形成一个独立的服务。
这个函数虽然只有两行,但也确实是提供了一个服务。
原则: 重构一方面是重组代码;另一重要方面是设计的的重构
*/class User{protected $arr;//进行封装不让外部使用,除子类和父类function __construct(){$this->arr = $this->get_data();//构造函数,在类一实例化的时候就会执行}public function isNotExist(){echo "Does not exist<br/>";echo "<a href=\"http://localhost/Reconstruction/Reconstruction002/all.php\">重新输入</a>";}/***提供数据源*把文件内容变成数组*@param string wj* @return array*/protected function get_data(){$con =mysql_connect("localhost","root","123456");if(!$con){die('sorry,not connect'.mysql_error());}mysql_query("set character set 'utf-8'");mysql_query("set names utf8");mysql_select_db("my_user_db", $con);$b = mysql_query("select * from user");$ar = array();while($c=mysql_fetch_array($b)){array_push($ar,$c);}return $ar;}/*** 返回经过修改后的数据*把数组变成文件*@param string $wj文件名*@param array $arr数组* @return array *//* protected function save_data($arr){$file = fopen("data.txt","w+");foreach($arr as $c=>$v){$d=$c+1;fwrite($file,$d."#".$v['name']."#".$v['age']."#".$v['sex']);}fclose($file);} *//*** 提供一方法,以表格形式输出数据* @param array找到的数组* @return string */public function joinHtml($array){if(count($array)==0){User::isNotExist();}$d = 0;$b ="<body><form><table border=\"1\" cellspacing=\"0\" cellpadding=\"10\">";foreach($array as $t){$d = $d+1;$a = "<tr><td>".$d."</td><td>".$t['name']."</td><td>".$t['age']."</td><td>".$t['sex']."</td></tr>";$b = $b.$a;}$b = $b . "</table></form></body>";return $b;}/*** 返回所有数据* @return array */public function get_all(){$temp= array();foreach($this->arr as $c=>$v){array_push($temp,$this->arr[$c]);}return $temp;}/*** 返回包含指定年龄的数组* @param int $age年龄* @return array */public function get_by_age($age){$temp = array();foreach($this->arr as $c=>$v){if($v['age']==$age){array_push($temp,$this->arr[$c]);}}return $temp;}/*** 返回包含指定年龄间的数组* @param int $age1小年龄 $age2大年龄* @return array */public function get_between_ages($age1,$age2){$temp = array();foreach($this->arr as $c=>$v){if($v['age']>=$age1&&$v['age']<=$age2){array_push($temp,$this->arr[$c]);}}return $temp;}/*** 返回包含指定姓名的数组* @param string $name 姓名* @return array */public function get_by_name($name){$temp = array();foreach($this->arr as $c=>$v){if($v['name']==$name){array_push($temp,$this->arr[$c]);}}return $temp;}/*** 返回包含指定年龄和性别的数组* @param string $sex性别 $age年龄* @param int $age年龄* @return array */public function get_both_age_sex($age,$sex){$temp = array();foreach($this->arr as $c=>$v){if($v['age']==$age&&$v['sex']==$sex){array_push($temp,$this->arr[$c]);}}return $temp; }/*** 返回包含指定性别的数据的年龄的总和* @param string $sex性别* @return array */public function get_by_sexs($sex){$b=0;$temp = array();foreach($this->arr as $c=>$v){if($v['sex']==$sex){$d=$v['age'];$b=$b+$d;}}return $b;}/*** 返回包含指定性别的数组* @param string $sex性别* @return array */public function get_by_sex($sex){$temp = array();foreach($this->arr as $c=>$v){if($v['sex']==$sex){array_push($temp,$this->arr[$c]);}}return $temp;}/*** 返回包含指定姓氏的数组* @param string $firstname姓氏* @return array */public function get_by_firstname($firstname){$temp = array();foreach($this->arr as $c=>$v){$e=$v['name'];$f=substr($e,0,3);if($f==$firstname){array_push($temp,$this->arr[$c]);}}return $temp;}/*** 返回姓氏最多的的数组* @return array */public function get_mostname(){$temp = array();$arra=array();$array=array();$zf="";foreach($this->arr as $c=>$v){$e=$v['name'];$f=substr($e,0,2);$b=$f.$b;}foreach($this->arr as $c=>$v){$e=$v['name'];$f=substr($e,0,2);$m=substr_count($b,$f);array_push($arra,$m);}for($m=0;$m<count($arra);$m++){for($i=count($arra);$i>0;$i--){for($j=0;$j<=count($arra);$j++){if($arra[$i]>$arra[$j]){unset($arra[$j]);}}}}array_pop($arra);foreach($arra as $c=>$v){array_push($array,$c);}//var_dump($arra);foreach($array as $c=>$v){array_push($temp,$this->arr[$c]);}return $temp;}/*** 返回包含指定字符的数组* @param string $word字符* @return array */public function get_by_word($word){$temp = array();foreach($this->arr as $c=>$v){$e=$v['name'];for($i=0;$i<strlen($e);$i++){$f=substr($e,$i,3);if($f==$word){array_push($temp,$this->arr[$c]);}}}return $temp;}/*** 返回包含指定性别和在某年份以后的数组* @param string $sex 性别* @param string $year年份* @return array */public function get_between_sex_year($sex,$year){$temp = array();foreach($this->arr as $c=>$v){$age=$v['age'];if($v['sex']==$sex){$number=idate("Y")-$year;if($number>$age){array_push($temp,$this->arr[$c]);}}}return $temp;}/*** 返回性别为男后加先生,性别为女后加小姐的数组* @return array */public function get_both_miss_mr(){$temp = array();foreach($this->arr as $c=>$v){$d=$d+1;if($v['sex']=="男"){$v['name']=$v['name']."先生";array_push($temp,$this->arr[$c]);}elseif($v['sex']=="女"){$v['name']=$v['name']."小姐";array_push($temp,$this->arr[$c]);}}return $temp;}/*** 返回按年龄排序的数组* @return array */public function get_order_age(){$temp = array();$array=array();foreach($this->arr as $c=>$v){$a=$v['age'];array_push($array,$a);}asort($array);foreach($array as $c=>$v){array_push($temp,$this->arr[$c]);}return $temp;}/*** 返回按姓氏挨在一起排序的数组* @return array */public function get_order_firstname(){$temp = array();$array=array();foreach($this->arr as $c=>$v){$a=$v['name'];array_push($array,$a);}asort($array);foreach($array as $c=>$v){array_push($temp,$this->arr[$c]);}return $temp;}
}?>
newuser.class.php
<?php
/*一个功能,可以分解成很多小的功能,可以一直细分下去,只到没有过分重复的代码。
重构,就是把一个小的功能,,拎出来,形成一个独立的服务。
这个函数虽然只有两行,但也确实是提供了一个服务。
原则: 重构一方面是重组代码;另一重要方面
是设计的的重构
*///require_once("User.class.php");class NewUser extends User{/***返回包含指定年龄间和性别的数组* @param string $sex* @param int $age1 $age2* return array*/public function get_both_sex_ages($sex, $age1,$age2){$temp = array();$ages = $this->get_between_ages($age1,$age2);foreach($ages as $c=>$v){if($v['sex']==$sex){array_push($temp,$v);}}return $temp;}//因为$arr不是protected封装的,害我多花了n长时间。注意。。/*** 返回包含指定字符和性别的数组* @param string $sex نم* @param string $wordنممه،* @return array */public function get_both_word_sexs($sex,$word){$temp = array();$wds = $this->get_by_word($word);foreach($wds as $v){if($v['sex']==$sex){array_push($temp,$v);}}return $temp;}/***返会增加一个数组后的整个数组* @param string name age sex* @return array*//* public function add_record($name,$age,$sex){$id = count($this->arr)+1;$temp = array("id"=>$id,"name"=>$name,"age"=>$age,"sex"=>$sex."\r\n");array_push($this->arr,$temp);$this->save_data($this->arr);return $this->arr;} *//*** 返回修改数组后的新数组* return array*/public function update_record(){$this->conn();$name = $_GET['name'];$age = $_GET['age'];$sex = $_GET['sex'];$id = $_GET['id'];$upd = "UPDATE user SET name='{$name}',age='{$age}', sex='{$sex}' WHERE id='{$id}'";mysql_query($upd);$a = $this->read_array();return $a;}/*** 返回删除一个数组后的新数组*/public function delete_record(){$this->conn();$id = $_GET['id'];$del = "DELETE FROM user WHERE id='{$id}'";mysql_query($del);$a = $this->read_array();return $a;} /*** 返回插入一个数组后的新数组* return array*/public function insert_record(){ $this->conn();$name = $_GET['name'];$age = $_GET['age'];$sex = $_GET['sex'];$ins = "insert into user (name,age,sex) values ('{$name}','{$age}','{$sex}')";mysql_query($ins);$a = $this->read_array();return $a;}/***连接数据库*/public function conn(){$con =mysql_connect("localhost","root","123456");mysql_query("set character set 'utf-8'");mysql_query("set names utf8"); if(!$con){die('sorry,not connect'.mysql_error());}mysql_select_db("my_user_db", $con);}/***数据库取数据*/public function read_array(){$b = mysql_query("select * from user");$ar = array();while($c=mysql_fetch_array($b)){array_push($ar,$c);}//mysql_close($con);return $ar;}}?>