php5面向对象学习实例清单
■oop_01.php
<?php
class person{
public $name="shuwill"; //定义public属性 $name ,如果改为private属性将出错,但若非要private属性,怎么办,看oop_02.php
}
$p=new person(); //创建对象
echo "his name is ".$p->name;
$p->name="tomore"; //变更姓名为 tomore
echo "<br />";
echo "his name is ".$p->name;
?>
________________________________________________________________________________
■oop_02.php
<?php
/*-----------php5类的方法------------*/
class person{
private $name="shuwill"; //定义private属性 $name ,不能直接获取private属性的值,只能通过调用方法来获取
public function getName(){ //定义方法
return $this->name; //在方法内部通过 $this-> 符号调用同一对象的属性;
}
}
$p=new person(); //创建对象
echo "his name is ".$p->getName();
?>
________________________________________________________________________________
■oop_03.php (存放地:公司/php_mysql/oop_03.php)<?php/*-----------带参数的方法------------*/
class person{
private $a;
public function setName($_a){
$this->a=$_a; //局部变量 $_a 传值给属性 a
}
public function getName(){
return $this->a; //返回属性 a
}
}
$p=new person();
$p->setName("shuwill");
echo "his name is ".$p->getName();
echo "<br />";
//也可以直接给参数带上值
class human{
private $a;
public function setName($_a="shuwilltoo"){
$this->a=$_a;
}
public function getName(){
return $this->a;
}
}
$bb=new human();
$bb->setName();
echo "his name is ".$bb->getName();
echo "<br />";
?>
________________________________________________________________________________
■oop_2-4-8.php 但这个实例,我还没理解透
2-4-8.php <br>
<!--通过$this传递对象
在这个例子中,我们写一个根据不同的年龄发不同的工资的类
我们设置处理年龄和工资的业务模型为一个独立的类.
-->
<?php
class User{
private $age;
private $sal;
private $payoff;//声明全局属性
//构造函数,并创建Payoff的对象.
public function __construct(){
$this->payoff = new Payoff();
//★★★
/*【评】:通过构造函数,自动声明属性payoff是类Payoff的一实例*/
}
public function getAge(){
return $this->age;
}
public function setAge($age){
$this->age =$age;
}
//获得工资.
public function getSal(){
$this->sal = $this->payoff->figure($this);
//★★★★★★★
/*---------------------------------------------------------------
时间:2009-06-30
【评】:这是该类的精髓所在:
方法getSal()的作用是:①返回属性sal的值;
②将属性payoff中的方法figure的结果传给属性sal;
③同时方法figure的参数是$this,为一对象,且是类User本身
--------------------------------------------------------------*/
return $this->sal;
}
}
//这是对应工资和年龄关系的类
class Payoff{
public function figure($a){ //★★★这里的参数将是一个对象
$sal =0;
$age =$a->getAge();
/*★★★
这一句,我反复看了多遍才明白,当时我的困惑是:
$a为一对象,但并没有说是它是类User的一实例,又怎么可以调用方法getAge()呢?
看看2009-06-30我的理解正确不正确*/
if($age>80 || $age<16){
$sal =0;
}elseif($age>50){
$sal=1000;
}else{
$sal=800;
}
return $sal;
}
}
//实例化User
$user =new User();
$user->setAge(55);
echo $user->getAge(). "age, his sal is ".$user->getSal();
echo "<br />";
$user->setAge(25);
echo $user->getAge(). "age, his sal is ".$user->getSal();
echo "<br />";
$user->setAge(10);
echo $user->getAge(). "age, his sal is ".$user->getSal();
echo "<br />";
?>
________________________________________________________________________________
■oop_2-5-1.php <?php/*-----------用parent::调用父类的方法------------*/
<?php//用parent::调用父类的方法
//声明一个员工类,经理类继承自员工类
class employer{
protected $sal=3000;
public function getSal(){
$this->sal=$this->sal+1200;
return $this->sal;
}
}
class manager extends employer{
//如果想让经理在员工的基础上多发1500元,
//先要调用父类的方法
public function getSal(){
parent::getSal(); //这里调用了父类的方法
$this->sal=$this->sal+1500;
return $this->sal;
}
}
$emp=new employer();
$manag=new manager();
echo "普通员工的工资是: ".$emp->getSal()."<br />";
echo "经理的工资是: ".$manag->getSal(). "<br />";
?>
________________________________________________________________________________

浙公网安备 33010602011771号