php面向对象——类和对象
1.类和对象
<?php
//定义一个类:
class A{
public $name="John"; //定义一个普通属性
static $age=18; //定义一个静态属性
const PI=3.14; //定义一个常量
/*定义一个普通方法*/
function print_name(){
echo $this->name; //在类内部使用属性
}
/*定义一个静态方法*/
static function print_age(){
echo static::$age; //在类内部使用静态属性
}
}
$A=new A(); //创建一个对象的第一种形式
$v1="A"; //创建一个对象的第二种形式
$A=new $v1();
$A->name; //在类外部使用属性
$A->print_(); //在类外部使用方法
A::print_age(); //在类外部使用静态方法
A::$age=22; //在类外部使用静态属性
?>
构造方法与析构方法
<?php
class A{
public $name=;
public $age;
/*定义一个构造方法,实例化传入参数*/
function __construct($name,$age){
$this->name=$name;
$this->age=$age;
}
/*定义一个析构方法
说明:
1,析构方法是一个特殊的方法,名字为固定的词:_ _desctruct
2,析构方法是在一个对象被“销毁”的时候会自动被调用的方法——我们无法调用它;
3,析构方法不能带参数(形参),但方法中也可以使用$this这个词,代表“当前对象”;
4.销毁的顺序一般情况下遵循栈结构
*/
function __destruct(){
$this->name;
}
}
$A=new A("John",24);
?>
综合实例:
1.定义一个“教师类”,并由此类实例化两个“教师对象”。
该类至少包括3个属性,其中有个方法是“自我介绍”,就能够把自身的所有信息显示出来。
<meta charset="utf-8">
<?php
class Teacher{
private $name;
private $age;
private $eduction;
function __construct($name,$age,$eduction){
$this->name=$name;
$this->age=$age;
$this->eduction=$eduction;
}
function showAllInfo(){
echo "<br/>姓名:".$this->name;
echo "<br/>年龄:".$this->age;
echo "<br/>学历:".$this->eduction;
}
}
$teacher1=new Teacher("张三",22,"本科");
$teacher2=new Teacher("李四",23,"研究生");
$teacher1->showAllInfo();
echo "<br>";
$teacher2->showAllInfo();
?>
2.定义一个“学生类”,并由此类实例化两个“学生对象”。该类包括姓名,性别,年龄等基本信息,并至少包括一个静态属性(表示总学生数)和一个常量,以及包括构造方法和析构方法。该对象还可以调用一个方法来进行“自我介绍”(显示其中的所有属性)。构造方法可以自动初始化一个学生的基本信息,并显示“xx加入本校,当前有xx个学生”。
<meta charset="UTF-8">
<?php
class Student
{
private $name;
private $age;
private $sex;
static $count=0; //计数器思想
function __construct($name, $age, $sex)
{
$this->name = $name;
$this->age = $age;
$this->eduction = $sex;
static::$count++;
echo "<br/>".$this->name."加入本校,当前有".static::$count."个学生";
}
function showAllInfo(){
echo "<br/>姓名:".$this->name;
echo "<br/>年龄:".$this->age;
echo "<br/>学历:".$this->sex;
}
}
$student1=new Student("张三",18,"男");
$student2=new Student("小红",19,"女");
$student1->showAllInfo();
$student2->showAllInfo();
?>