该课程内容属于PHP语言学习中的中级课程,只要有基本的php语法基础,四小时内上完这门课程绰绰有余。学习PHP面向对象编程,为我们进一步学习更高级的课程打下基础,如后台框架、微信后台的二次开发的学习等等。
课程链接:《PHP面向对象高级实践》
以下是课程的基本内容:
继承、访问控制、Static(静态)关键字、重写、Final关键字、数据访问深入探讨、接口多态和抽象类。
下面用实例代码加以叙述,并打有详细注释,方便初学者学习。
第一篇主要是用一个NBA球星的类加以阐述类的定义和实例化,通俗易懂,包括NBA球星的一般属性(包括打球的一些动作)、静态属性等
class01:类、对象的定义,类的实例化
1 <?php 2 date_default_timezone_set("PRC"); 3 /** 4 * 1. 类的定义以class关键字开始,后面跟着这个类的名称。类的名称命名通常每个单词的第一个字母大写。 5 * 2. 定义类的属性 6 * 3. 定义类的方法 7 * 4. 实例化类的对象 8 * 5. 使用对象的属性和方法 9 */ 10 class NbaPlayer 11 { 12 // 类的属性的定义 13 public $name="Jordan";// 定义属性 14 public $height="198cm"; 15 public $weight="98kg"; 16 public $team="Bull"; 17 public $playerNumber="23"; 18 19 // 类的方法的定义 20 public function run() { 21 echo "Running\n"; 22 } 23 24 public function jump(){ 25 echo "Jumping\n"; 26 } 27 public function dribble(){ 28 echo "Dribbling\n"; 29 } 30 public function shoot(){ 31 echo "Shooting\n"; 32 } 33 public function dunk(){ 34 echo "Dunking\n"; 35 } 36 public function pass(){ 37 echo "Passing\n"; 38 } 39 } 40 41 /** 42 * 1. 类实例化为对象时使用new关键字,new之后紧跟类的名称和一对括号。 43 * 2. 使用对象可以像使用其他值一样进行赋值操作 44 */ 45 $jordan = new NbaPlayer(); 46 // 访问对象的属性使用的语法是->符号,后面跟着属性的名称 47 echo $jordan->name."\n"; 48 // 调用对象的某个方法使用的语法是->符号,后面跟着方法的名称和一对括号 49 $jordan->run(); 50 $jordan->pass(); 51 52 ?>
class02构造函数与析构函数
<?php date_default_timezone_set("PRC"); /** * 1. 构造函数 * 2. 析构函数 */ class NbaPlayer { // 类的属性的定义 public $name="Jordan";// 定义属性 public $height="198cm"; public $weight="98kg"; public $team="Bull"; public $playerNumber="23"; // 默认的构造函数,在对象被实例化的时候自动调用 /*function __construct() { print "In NbaPlayer constructor\n"; }*/ // 构造函数通常用于初始化对象的属性值 function __construct($name, $height, $weight, $team, $playerNumber) { print $name . ";" . $height . ";" . $weight . ";" . $team . ";" . $playerNumber."\n"; $this->name = $name; // $this是php里面的伪变量,表示对象自身 $this->height = $height; // 通过$this可以设置对象的属性值 $this->weight = $weight; $this->team = $team; $this->playerNumber = $playerNumber; } // 析构函数,用于清理程序中使用的系统资源,比如释放打开的文件等等 // 析构函数在该对象不会再被使用的情况下自动调用 function __destruct() { print "Destroying " . $this->name . "\n"; } // 类的方法的定义 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"; } } /** * 1. 类实例化为对象时使用new关键字,new之后紧跟类的名称和一对括号。 * 2. 使用对象可以像使用其他值一样进行赋值操作 */ $jordan = new NbaPlayer("Jordan", "198cm", "98kg", "Bull", "23"); // 访问对象的属性使用的语法是->符号,后面跟着属性的名称 echo $jordan->name."\n"; // 调用对象的某个方法使用的语法是->符号,后面跟着方法的名称和一对括号 $jordan->run(); $jordan->pass(); $james = new NbaPlayer("James", "203cm", "120kg", "Heat", "6"); echo $james->name."\n"; // 当对象变量被赋值为Null的时候,对象的析构函数会被自动调用 // 同一个类的其他对象不受影响 $james = null; echo "From now on James will not be used anymore.\n"; // 当程序执行结束时,所有类的对象的析构函数都会自动被调用 ?>
class03对象引用
<?php date_default_timezone_set("PRC"); /** * 1. 对象引用的概念:对象的引用是访问对象属性和方法的媒介 * 2. 引用赋值会产生一个新的对象引用 * 3. 使用&进行引用赋值不会产生新的引用,而是产生了引用的一个复制品 * 4. 当指向对象的所有引用都被设为null时,对象的析构函数才被自动调用 */ class NbaPlayer { // 类的属性的定义 public $name="Jordan";// 定义属性 public $height="198cm"; public $weight="98kg"; public $team="Bull"; public $playerNumber="23"; // 默认的构造函数,在对象被实例化的时候自动调用 /*function __construct() { print "In NbaPlayer constructor\n"; }*/ // 构造函数通常用于初始化对象的属性值 function __construct($name, $height, $weight, $team, $playerNumber) { print $name . ";" . $height . ";" . $weight . ";" . $team . ";" . $playerNumber."\n"; $this->name = $name; // $this是php里面的伪变量,表示对象自身 $this->height = $height; // 通过$this可以设置对象的属性值 $this->weight = $weight; $this->team = $team; $this->playerNumber = $playerNumber; } // 析构函数,用于清理程序中使用的系统资源,比如释放打开的文件等等 // 析构函数在该对象不会再被使用的情况下自动调用 function __destruct() { print "Destroying " . $this->name . "\n"; } // 类的方法的定义 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"; } } /** * 1. 类实例化为对象时使用new关键字,new之后紧跟类的名称和一对括号。 * 2. 使用对象可以像使用其他值一样进行赋值操作 */ $jordan = new NbaPlayer("Jordan", "198cm", "98kg", "Bull", "23"); // 访问对象的属性使用的语法是->符号,后面跟着属性的名称 echo $jordan->name."\n"; // 调用对象的某个方法使用的语法是->符号,后面跟着方法的名称和一对括号 $jordan->run(); $jordan->pass(); $james = new NbaPlayer("James", "203cm", "120kg", "Heat", "6"); echo $james->name."\n"; // 当对象变量被赋值为Null的时候,对象的析构函数会被自动调用 // 同一个类的其他对象不受影响 $james1 = $james; // 引用赋值操作会产生对象的一个新的引用,亦即定义了一个新的对象并初始化 $james2 = &$james; // 使用&的引用赋值操作不会产生对象的一个新的引用,没有重新定义对象,只是用不同的变量名对同一个对象进行调用和管理 $james = null; echo "From now on James will not be used anymore.\n"; // 当程序执行结束时,所有类的对象的析构函数都会自动被调用 ?>
时间: 2024-10-17 04:21:33