·与java相同,final关键字是使用了他的方法或属性,子类是无法覆盖的,而且类如果给声明为final则无法被继承的。
·final关键字位置在访问控制符之前。
·static的成员变量是在不被实例化的情况就可以直接访问的,但是不能通过对象的引用来访问(静态方法除外)。所以$this不能用了。
·接口,必须是public的。只有函数头。可指定一个类去实现这个方法。
·类型转换的判别,php的自动类型转换的一个例子是加号+.$foo = "0";//字符串$foo += 12;//为整数$foo = $foo + 1.3;//为浮点类型。
·强制转换,与java一样,也是在所要转换的变量前加“(封装类型)”。
·当将@放在表达式之前,该表达式产生的错误可能会被忽略。不能被放在函数或类定义之前,也不能用于条件结构,如if,foreach。只对表达式有效。
·数组运算符“+”的意思是,将数组合并,但合并也有规矩,就是将键值不同的合并。而不考虑这些因素的数组合并函数就是array_merge().
·instanceof用于判断一个php变量是否属于某个类的实例。
·继承时利用原有的方法,要小心使用。
·最最重要的一点,注释要写的别人一目了然
<?php
/*一个功能,可以分解成很多小的功能,可以一直细分下去,只到没有过分重复的代码。
重构,就是把一个小的功能,,拎出来,形成一个独立的服务。
这个函数虽然只有两行,但也确实是提供了一个服务。
原则: 重构一方面是重组代码;另一重要方面
是设计的的重构
*/
require_once("User.class.php");
class NewUser extends User{
/**
*返回包含指定年龄间和性别的数组
* @param string $sex
* @param int $age1 $age2
* return array
*/
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
*/
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年龄 $sex 性别
* @param int $age年龄
* @return array
*/
function add_record($name,$age,$sex){
$temp = array("name"=>$name,"age"=>$age,"sex"=>$sex);
array_push($this->arr,$temp);
return $this->arr;
}
/**
* 返回修改数组后的新数组
* @param string $name姓名 $newname新姓名 $sex性别 $newsex新性别
* @param int $age年龄 $newage新年龄
* return array
*/
function update_record($name,$age,$sex,$newname,$newage,$newsex){
$ar = array(array("name"=>$newname,"age"=>$newage,"sex"=>$newsex));//这里为什么是个二维的??
foreach($this->arr as $c=>$v){
if($this->arr[$c]['name']==$name&&$this->arr[$c]['age']==$age&&$this->arr[$c]['sex']==$sex){
array_splice($this->arr,$c,1,$ar);
}
}
return $this->arr;
}
/**
* 返回删除一个数组后的新数组
* @param string $name姓名 $sex性别
* $param int $age年龄
* return array
*/
function delete_record($name,$age,$sex){
foreach($this->arr as $c=>$v){
if($this->arr[$c]['name']==$name&&$this->arr[$c]['age']==$age&&$this->arr[$c]['sex']==$sex){
$a=array_splice($this->arr,$c,1);
}
}
return $this->arr;
}
}
?>