PHP面向对象编程(imooc)代码合集(一)

  该课程内容属于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";
// 当程序执行结束时,所有类的对象的析构函数都会自动被调用

?>

 

posted @ 2015-12-05 09:01  constructora  阅读(218)  评论(0编辑  收藏  举报