PHP中的面向对象实践
基本实践
高级实践
特殊实践
类的概念
实例化的概念
构造函数
析构函数
数据访问
对象引用的概念
类的概念

类
? 物以类聚,把具有相似特性的对象归类到一个类中
? 类定义了这些相似对象拥有的相同的属性和方法
? 类是相似对象的描述,称为类的定义,是该类对象的蓝图或者原型
? 类的对象称为类的一个实例(Instance) //类画了一个框架,对象把框架塞满
? 类的属性和方法统称为类成员
例子
? NBA球员就是一个类的定义(Class Definition)
? 乔丹、詹姆斯、科比称为类的实例(Instance)
NBA球员
+姓名
+身高
+体重
+所在球队
+球员号码
------------
+跑步()
+跳跃()
+运球()
+投篮()
+扣篮()
+传球()
类的实例化(instantiate)


案例
类和类的实例化案例
? 如何定义一个类
? 如何实例化类的
对象? 如何调用类的方法
? 构造函数
? 析构函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | <?php
class NbaPlayer{
public $name = "Jordan" ;
public $height = "198cm" ;
public $weight = "98kg" ;
public $team = "Bull" ;
public $playerNumber = "23" ;
public function run(){
echo "Running\n" ;
}
public function jump(){
echo "Jumping\n" ;
}
public function dribble(){
echo "Dribbling\n" ;
}
public function shoot(){
echo "Shooting\n" ;
}
public function dunk(){
echo "Dunking\n" ;
}
public function pass(){
echo "Passing\n" ;
}
}
$jordan = new NbaPlayer();
echo $jordan ->name. "\n" ;
$jordan ->dribble();
$jordan ->pass();
?>
|
登录后复制
Output:
Jordan
Dribbling
Passing
构造函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | <?php date_default_timezone_set( "PRC" );
class NbaPlayer{
public $name = "Jordan" ;
public $height = "198cm" ;
public $weight = "98kg" ;
public $team = "Bull" ;
public $playerNumber = "23" ;
function __construct( $name , $height , $weight , $team , $playerNumber ){
echo "In NbaPlayer Constructor\n" ;
$this ->name= $name ;
$this ->height= $height ;
$this ->weight= $weight ;
$this ->team= $team ;
$this ->playerNumber= $playerNumber ;
}
public function run(){
echo "Running\n" ;
}
public function jump(){
echo "Jumping\n" ;
}
public function dribble(){
echo "Dribbling\n" ;
}
public function shoot(){
echo "Shooting\n" ;
}
public function dunk(){
echo "Dunking\n" ;
}
public function pass(){
echo "Passing\n" ;
}
}
$jordan = new NbaPlayer( "Jordan" , "198cm" , "98kg" , "Bull" , "23" );
echo $jordan ->name. "\n" ;
$jordan ->dribble();
$jordan ->pass();
$james = new NbaPlayer( "James" , "203cm" , "120kg" , "Heat" , "6" );
echo $james ->name;
echo $james ->height;
echo $james ->weight;
echo $james ->team;
echo $james ->playerNumber;
?>
|
登录后复制
Output:
In NbaPlayer Constructor
Jordan
Dribbling
Passing
In NbaPlayer Constructor
James
203cm
120kg
Heat
6
析构函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | <?php date_default_timezone_set( "PRC" );
class NbaPlayer{
public $name = "Jordan" ;
public $height = "198cm" ;
public $weight = "98kg" ;
public $team = "Bull" ;
public $playerNumber = "23" ;
function __construct( $name , $height , $weight , $team , $playerNumber ){
echo "In NbaPlayer Constructor\n" ;
$this ->name= $name ;
$this ->height= $height ;
$this ->weight= $weight ;
$this ->team= $team ;
$this ->playerNumber= $playerNumber ;
}
function __destruct(){
echo "Destroying " . $this ->name. "<br>" ;
}
public function run(){
echo "Running\n" ;
}
public function jump(){
echo "Jumping\n" ;
}
public function dribble(){
echo "Dribbling\n" ;
}
public function shoot(){
echo "Shooting\n" ;
}
public function dunk(){
echo "Dunking\n" ;
}
public function pass(){
echo "Passing\n" ;
}
}
$jordan = new NbaPlayer( "Jordan" , "198cm" , "98kg" , "Bull" , "23" );
echo $jordan ->name. "\n" ;
$jordan ->dribble();
$jordan ->pass();
$james = new NbaPlayer( "James" , "203cm" , "120kg" , "Heat" , "6" );
echo $james ->name;
$james =null;
echo "From now on James will not be used. <br>" ;
?>
|
登录后复制
Output:
In NbaPlayer Constructor
Jordan
Dribbling
Passing
In NbaPlayer Constructor
James
Destroying James
From now on James will not be used.
Destroying Jordan
对象引用的基本概念
对象引用赋值

詹姆斯是一个对象。
$james就是对象的引用,直接指向詹姆斯这个对象。
$james1和$james是两个独立的引用,$james1这个对象的引用直接指向詹姆斯这个对象。
$james2是一个指向$james这个对象引用的对象引用(有点拗口),没有直接指向詹姆斯这个对象。$james2是通过$james这个对象引用去指向詹姆斯这个对象的
现在直接指向对象詹姆斯的对象的引用有两个,即$james和$james1。而$james2是$james的映像。
示例一:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | <?php date_default_timezone_set( "PRC" );
class NbaPlayer{
public $name = "Jordan" ;
public $height = "198cm" ;
public $weight = "98kg" ;
public $team = "Bull" ;
public $playerNumber = "23" ;
function __construct( $name , $height , $weight , $team , $playerNumber ){
echo "In NbaPlayer Constructor\n" ;
$this ->name= $name ;
$this ->height= $height ;
$this ->weight= $weight ;
$this ->team= $team ;
$this ->playerNumber= $playerNumber ;
}
function __destruct(){
echo "Destroying " . $this ->name. "<br>" ;
}
public function run(){
echo "Running\n" ;
}
public function jump(){
echo "Jumping\n" ;
}
public function dribble(){
echo "Dribbling\n" ;
}
public function shoot(){
echo "Shooting\n" ;
}
public function dunk(){
echo "Dunking\n" ;
}
public function pass(){
echo "Passing\n" ;
}
}
$jordan = new NbaPlayer( "Jordan" , "198cm" , "98kg" , "Bull" , "23" );
echo $jordan ->name. "\n" ;
$jordan ->dribble();
$jordan ->pass();
$james = new NbaPlayer( "James" , "203cm" , "120kg" , "Heat" , "6" );
echo $james ->name;
$james1 = $james ;
$james =null;
echo "From now on James will not be used. <br>" ;
?>
|
登录后复制
Output:
In NbaPlayer Constructor
Jordan
Dribbling
Passing
In NbaPlayer Constructor
James
From now on James will not be used.
Destroying James
Destroying Jordan
示例二:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | <?php date_default_timezone_set( "PRC" );
class NbaPlayer{
public $name = "Jordan" ;
public $height = "198cm" ;
public $weight = "98kg" ;
public $team = "Bull" ;
public $playerNumber = "23" ;
function __construct( $name , $height , $weight , $team , $playerNumber ){
echo "In NbaPlayer Constructor\n" ;
$this ->name= $name ;
$this ->height= $height ;
$this ->weight= $weight ;
$this ->team= $team ;
$this ->playerNumber= $playerNumber ;
}
function __destruct(){
echo "Destroying " . $this ->name. "<br>" ;
}
public function run(){
echo "Running\n" ;
}
public function jump(){
echo "Jumping\n" ;
}
public function dribble(){
echo "Dribbling\n" ;
}
public function shoot(){
echo "Shooting\n" ;
}
public function dunk(){
echo "Dunking\n" ;
}
public function pass(){
echo "Passing\n" ;
}
}
$jordan = new NbaPlayer( "Jordan" , "198cm" , "98kg" , "Bull" , "23" );
echo $jordan ->name. "\n" ;
$jordan ->dribble();
$jordan ->pass();
$james = new NbaPlayer( "James" , "203cm" , "120kg" , "Heat" , "6" );
echo $james ->name;
$james1 = $james ;
$james2 =&james;
$james =null;
$james1 =null;
echo "From now on James will not be used. <br>" ;
?>
|
登录后复制
Output:
In NbaPlayer Constructor
Jordan
Dribbling
Passing
In NbaPlayer Constructor
James
Destroying James
From now on James will not be used.
Destroying Jordan
以上就介绍了PHP面向对象编程——基本实践DAY 2,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。