【深入PHP 面向对象】读书笔记(一) - 发展介绍与对象基础

【简介】从学习的角度来说,PHP 的学习可以按下面的路线前进:PHP 基础入门(语法、常用函数和扩展等) -> 面向对象的 PHP(对象、类等) -> 网站软件架构设计(设计模式、框架等) -> 网站物理层次架构设计(分布式计算、存储、负载均衡、高可用性等)。

1. PHP:介绍

1.1 历史介绍

PHP5 发布于2004年,新特性中最重要的就是加强了对面向对象编程的支持。

PHP 最初是用于管理个人主页的宏指令集合,随着 PHP3 和 PHP4 先后出现,PHP 很快成为了大型企业级站点成功的支持力量。

1.2 PHP 与对象
1.2.1 最初:PHP/FI

PHP 起源于用 Perl 开发的两个工具(PHP Tool 和FI)。PHP 是 Personal Homepage Tool 的简介,意为「个人主页工具」。而 FI 是 Form Interpreter,意为「表单解释器」。结合这两种工具形成的宏命令可用来发生SQL语句到数据库、处理表单和流控制。

通过这两种工具用 C 语言重写后,组成了 PHP/FI2.0。

1.2.2 PHP3

PHP3 是由PHP/FI2.0完成重写的,在PHP3 的计划中,对象也并不在安排之中。在这一时期对象只是个边缘话题。

1.2.3 一场静悄悄的革命:PHP4

PHP4 中大部分核心代码都被重写了,还特别增加了对象方面的内容,并且面向对象的代码还是成为主流。

1.2.4 拥抱变化:PHP5

PHP5 明确表示支持对象和面向对象程序设计。对象已经从事后的像想法变成 PHP 语言的驱动力。PHP是一个支持面向对象开发的语言,而不是一种纯面向对象的语言。但是其所拥有的面向对象的能力已经能满足我们面向对象编程的需要了。

2. 对象基础

2.1 类和对象
2.1.1 类

1)类是用来生成对象的代码模板。

2)使用 class 关键字和一个任意的类名来声明类。类名可以是任意数字和字母的组合。

class ShopProduct {
    // 类体
}
2.1.2 对象

1)对象是根据类中定义的模板所构造的数据。

2)使用 new 操作符实例出一个对象。

$product1 = new ShopProduct();
$product2 = new ShopProduct();

获得到的两个对象通过 var_dump 输出,得到一个包含对象 ID 的字符串(#号后面的数字为每个对象的内部标志符)。

var_dump($product1);
var_dump($product2);


object(ShopProduct)#1 (0) { } 
object(ShopProduct)#2 (0) { }
2.2 成员属性

1)用于存放对象之间互不相同的数据。

2)成员属性也称成员变量,和标准的变量很相似,不过必须在声明时加一个可见性的关键字(public,protected,private),它决定了成员属性的作用域。

class ShopProduct {
    public $name;
    public $price;
}

3)使用 -> 字符连接对象变量和属性名来访问成员属性。

$product1->name = "milk";
$product1->price = 12;
2.3 成员方法

成员属性用于存储对象数据,成员方法可以让对象执行任务。

方法是类中声明的特殊函数。

方法声明类似于函数声明。

public funciton getProductInfo() {
    return $this->name." : ".$this->price;
}

使用 -> 连接对象变量和方法名来调用方法。

$product1->getProductInfo();
2.4 构造方法

创建对象时,构造方法(constructor method,也称为构造器constructor)会被自动调用。

构造方法有固定的命名__construct。

function __construct($name,$price){
    $this->name = $name;
    $this->price = $price;
}
2.5 继承

继承是一个父类得到一个或多个子类的机制。

子类将继承父类的属性和方法。

子类可以增加父类之外的新功能。

创建子类时需要使用 extends 关键字。

class BookProduct extends ShopProduct {}
class CDProduct extends ShopProduct {}

子类若没有定义构造方法,在实例化时会自动调用父类的构造方法。

子类默认继承了父类所有的 public 和 protected 方法(但是不继承private方法或属性)。

2.6 public、private、protected:管理类的访问

public:任何地方都可以访问;

protected:仅在当前类或者子类中可以访问,外部无权访问;

private:仅在当前类中可以访问,子类和外部均无权访问。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值