抽象类+多态
<?php
abstract class Person{//抽象基类
abstract public function show();//抽象方法
}
class Student extends Person{
public function show(){//实现抽象方法
echo '学生'.'<br>';
}
}
class Teacher extends Person{
public function show(){//实现抽象方法
echo '教师'.'<br>';
}
}
function show($obj){//多态
if($obj instanceof Person){
$obj->show();
}
else{
echo '错误'.'<br>';
}
}
$s1 = new Student();
$s2 = new Teacher();
show($s1);
show($s2);
?>
重载 __toString()
<?php
class Student{
protected $name;
protected $score;
function __construct($name,$socre=100){
$this->name = $name;
$this->score = $score;
}
public function __toString(){
return "{$this->name}的成绩为:{$this->score}分<br>";
}
}
$s1 = new Student('LY',100);
echo $s1;
?>
工厂模式 动态实例化有共同接口的类
<?php
interface connect{
public function operate();
}
class MySQL implements connect{
public function operate(){
echo 'MySQL now<br>';
}
}
class SQLite implements connect{
public function operate(){
echo 'SQLite now<br>';
}
}
class Db{
public static function factory($type){
if($type=='MySQL'||$type=='SQLite')
return new $type();
else{
echo 'Error!<br>';
return 'Error';
}
}
}
$mysql = Db::factory('MySQL');
if($mysql!='Error')$mysql->operate();
$sqlite = Db::factory('SQLite');
if($sqlite!='Error')$sqlite->operate();
?>
PHP的数组操作
<?php
$arr1 = array(
'id' => 12,
'lover' => 13,
'asd' => 14,
'lover2' => 13,
);
var_dump($arr1);
echo "<br>";
unset($arr1['id']);
var_dump($arr1);
echo "\n";
foreach($arr1 as $key => $value){
echo "{$key} => {$value}"."<br>";
}
echo "数组元素的个数为:".count($arr1)."<br>";
$arr2 = array_unique($arr1);//移除重复元素
var_dump($arr2);
echo "去重后数组元素的个数为:".count($arr2)."<br>";
?>