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

?>
时间: 2024-10-17 04:21:33

PHP面向对象编程(imooc)代码合集(一)的相关文章

Android编程实用代码合集

1.android dp和px之间转换public class DensityUtil { /** * 根据手机的分辨率从 dip 的单位 转成为 px(像素) */ public static int dip2px(Context context, float dpValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (dpValue * scale + 0.5

转载:2013计算机视觉代码合集

转载,原文地址http://blog.csdn.net/daoqinglin/article/details/23607079 -------------------------------------------------------------------------- 来源: http://www.yuanyong.org/cv/cv-code-one.html http://www.yuanyong.org/cv/cv-code-two.html http://www.yuanyong

js验证网址等Javascript常见验证代码合集

发一个利用js验证网址是否正确,email格式是否正确,是否为数字及数字的范围,密码或字符长度及是否相等及要求的最小字符串长度,输入是否为空等Javascript常见验证代码合集,用的上的朋友可以拿去了自行添加整理. 关键的JavaScript代码函数: 查看代码 打印 001 /** 002 * 数据验证框架.增加了对id字段检查出错时,直接在对应后面添加一< span>元素来显示错误信息. 003 * 004 * @author www.phpernote.com 005 * @versi

UIUC同学Jia-Bin Huang收集的计算机视觉代码合集

[转载]UIUC同学Jia-Bin Huang收集的计算机视觉代码合集 原文地址:UIUC同学Jia-Bin Huang收集的计算机视觉代码合集作者:千里8848 UIUC的Jia-Bin Huang同学收集了很多计算机视觉方面的代码,链接如下: https://netfiles.uiuc.edu/jbhuang1/www/resources/vision/index.html 这些代码很实用,可以让我们站在巨人的肩膀上~~ Topic Resources References Feature

计算机视觉与模式识别代码合集第二版two

Topic Name Reference code Image Segmentation Segmentation by Minimum Code Length AY Yang, J. Wright, S. Shankar Sastry, Y. Ma , Unsupervised Segmentation of Natural Images via Lossy Data Compression, CVIU, 2007 code Image Segmentation Normalized Cut

计算机视觉与模式识别代码合集第二版three

计算机视觉与模式识别代码合集第二版three     Topic Name Reference code Optical Flow Horn and Schunck's Optical Flow   code Optical Flow Black and Anandan's Optical Flow   code Pose Estimation Training Deformable Models for Localization Ramanan, D. "Learning to Parse I

JS图片无间断滚动代码合集

JavaScript图片滚动代码合集,向上下左右四个方向的无缝滚动代码,前端设计开发时所能用的一个图片特效,你可只用其中的一种滚动.前端框架分享 .代码   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1

iOS开发中经常用的实用代码合集

iOS开发中经常用的实用代码合集 本文整理了,在iOS开发中我们所遇到一些开发问题的技巧类的代码,让你在开发过程中避免了很多弯路,希望能给你的开发带来帮助和启发. 1.判断邮箱格式是否正确的代码: // 利用正则表达式验证 -( BOOL )isValidateEmail:( NSString  *)email { NSString  *emailRegex =  @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}&

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

class04 类的继承 <?php date_default_timezone_set("PRC"); /** * 继承 * 1. 定义人类 * 2. 让NbaPlayer继承人类 * 3. PHP中类不允许同时继承多个父类,也就是extends后面只能跟一个父类名称,这个特性被称为PHP的单继承特性 */ class Human{ public $name; public $height; public $weight; public function eat($food){