Php六大面向对象,6.php面向对象

面向对象的基本概念

什么是类

类是由相同特征(属性、静态的)和行为(方法、动作)的一组对象构成

分类、类型、自定义类型

比如:人类...

什么是对象

对象就是一个一个的实体,看得见、摸得着

比如:任何一个人的个体都是一个对象

类和对象的关系

类的实例就是对象,对象的抽象就是类

比如:将人类实例化才有人的个体,

所有的人都可以抽象的说他属于人类

类的定义和类的实例

类的定义:

class 类名{

类中成员;

}

举个栗子:

class Person {

//成员属性: 姓名、性别、年龄、身高、体重、电话等 -- 静态描述

var $name;

//成员方法:说话、学习、走路、吃饭、开车、敲代码等 -- 动态描述

function say() { //声明第一个成员方法,定义人说话的功能

//方法体

}

}

?>

类的实例:

通过关键字new 来声明一个对象,并使用 对象名->成员属性/方法 操作对象属性

举个栗子:

class Person {

public $name;

public function say() {

echo '哇哦~哇哦~哇哦~哇哦!';

}

}

$person = new Person();

$person->name = '小团团';

echo "person的名字是:".$person->name."";

$person ->say();

?>

类常量

常量是不会改变的值,是一个恒值

定义常量使用关键字const

常量输出格式 类名::常量名

注意:在定义和使用常量的时候不需要使用 $ 符号

举个栗子:

class Person {

const PERSON_NAME = ''人类'';

}

echo Person::PERSON_NAME;

?>

$this的使用

变量

math?formula=this%20%E4%BB%A3%E8%A1%A8%E8%87%AA%E8%BA%AB%E7%9A%84%E5%AF%B9%E8%B1%A1%EF%BC%8C%E4%BD%BF%E7%94%A8this->可以调用类中方法,$this只能用在成员方法中,其它任何地方都不能使用。

举个栗子:

class People {

public $name;

function setName($par){

$this->name= $par;

}

function getName(){

echo $this->name;

}

}

$tuantuan= new People ;

$tuantuan->setTitle( "一条小团团" );

// 调用成员函数,获取名字

$tuantuan->getTitle();

?>

封装/继承/多态

定义成员变量时的关键字:public、private、protected

public -- 公开成员,可以在程序中的任何位置(类内/外)被其他的类/子类和对象调用。

private -- 私有成员,只能在所属类的内部被调用和修改,不可以再类外/子类被访问

protected -- 保护成员,在本类和子类中被调用,其他地方则不可以被调用

封装:

也可以称为信息隐藏,封装后对外只提供可操作的方法,不会告诉你内部结构。封装一个类需要两步 第一步是私有化一个类 第二步是用set和get 做出读取赋值的操作

预定义两种函数来进行获取与敷值操作

__get 获取值

__set 设置值

class Person {

private $name;

private function __get($property_name) { //__get()方法用来获取私有属性

echo "在直接获取私有属性值的时候,自动调用了这个__get()方法
";

if(isset($this->$property_name)) {

return($this->$property_name);

} else { return(NULL); }

}

private function __set($property_name, $value) { //__set()方法用来设置私有属性

echo "在直接设置私有属性值的时候,自动调用了这个__set()方法为私有属性赋值
";

$this->$property_name = $value;

}

}

$p1=newPerson();

$p1->name="张三"; //直接为私有属性赋值的操作,会自动调用__set()方法进行赋值

echo "年龄:".$p1->name."
"; //直接获取私有属性值,会自动调用__get()方法,返回成员属性值

?>

继承

继承:子类可以继承父类的属性和方法,但是是有限继承,public、protected、private三个修饰的属性都可以继承,public、protected两个修饰的方法可以继承,父类的常量可以继承。

extends声明继承关系

语法格式:class B extends A 此范例指明 B继承了A

子类继承父类的所有内容,但父类中的private部分不能直接访问

子类中新增加的属性和方法是对父类的扩展

子类中定义的与父类同名的属性是对父类属性的覆盖,同名的方法也是对父类方法的覆盖

重写的方法

在子类中,使用parent访问父类中的被覆盖的属性和方法

parent::__construct();

parent::$name;

parent::fun();

clone克窿对象 语法格式

$c=clone $p;

math?formula=c%E5%85%8B%E7%AA%BF%E7%9A%84%E5%AF%B9%E8%B1%A1p 输出

echo $c->name;

多态

多态:同一个操作(函数)作用于不同的类的实例,将产生不同的执行结果

举个栗子:

class Animal{

public $name;

public $price;

function talk(){

echo 'wu wu wu';

}

}

class Dog extends Animal{

//覆盖、重写

function talk(){

echo 'Wang Wang!';

Animal::talk();//这里不会报错,能正确执行父类的talk();

}

}

$dog1=new Dog();

$dog1->talk();

?>

构造方法和析构方法

构造方法:生成对象时自动执行的成员方法,作用就是初始化对象。该方法可以没有参数,可以有多个参数。定义构造方法:void __construct (arg)

举个栗子:

class Person{

public $name;

public $age;

function __construct($p1, $p2){//使用构造方法给自己的成员属性赋值

$this->name = $p1;

$this->age = $p2;

}

function say(){

echo "我叫{$this->name},我今年{$this->age}
";

}

}

$person= new Person('小仙女', 18);

$person->say();

?>

析构方法:与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数,作用时释放内存。定义析构方法: void __destruct()

举个栗子:

class Person{

public $name;

function __construct($p){

$this->name = $p;

echo "我的名字是{$this->name},很高兴认识你。
";

}

//声明一个析构方法,在对象销毁前自动调用

function __destruct(){

echo "感谢相遇{$this->name}先生,珍重!
";

}

}

$person= new Person('易烊千玺');

?>

静态变量和静态方法

static -- 静态成员,不需要实例化对象即可使用,在对象被销毁后仍可保存被修改的值

写法:

static $属性名/static fun()

使用:

类名::$属性名/类名::方法名

举个栗子:

class Math{

static $a = 0;

static function b ($x,$y){

$q = $x + $y;

return $p;

}

}

$matn_a = Math::$a;//调用类中的静态属性

var_dump($matn_a);

$math_b = Math::b(2,3);//调用类中的静态方法

var_dump($math_b);

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LAMP大讲堂 PHP面向对象技术 (全面讲解) LAMP大讲堂 PHP面向对象技术(全面讲解) 作者:高洛峰 本部分一共包括以下一些技术点: 1.面向对象的概念 2.什么是类,什么是对象,类和对象之间的关系 3.什么是面向对象编程呢? 4.如何抽象出一个类? 5.如何实例化对象? 6.如何去使用对象中的成员? 7.特殊的引用“$this”的使用 8.构造方法与析构方法 9.封装性 10.__set()、__get()、__isset()、__unset()四个方法的应用 11.类的继承 12.多态的应用 13.重载新的方法 14.访问类型 15.静态成员的使用 16.final关键字的应用 17.__toString()方法 18.克隆对象 19.__call处理调用错误 20.自动加载类 21.把对象串行化 22.抽象方法和抽象类 23.php5接口技术 1.面向对象的概念 面向对象编程 (ObjectOrientedProgramming,OOP, 面向对象程序设计)是一种计算机编程 架构,OOP的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成,OOP 达到了软件工程的三个目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收 信息、处理数据和向其它对象发送信息。面向对象一直是软件开发领域内比较热门的话题,首先, 面向对象符合人类看待事物的一般规律。其次,采用面向对象方法可以使系统各部分各司其职、各 尽所能。为编程人员敞开了一扇大门,使其编程的代码更简洁、更易于维护,并且具有更强的可重 用性。有人说PHP不是一个真正的面向对象的语言,这是事实。PHP 是一个混合型语言,你可以使 用OOP,也可以使用传统的过程化编程。然而,对于大型项目,你可能需要在PHP 中使用纯的OOP 去声明类,而且在你的项目里只用对象和类。这个概念我先不多说了,因为有很多朋友远离面向对 象编程的主要原因就是一接触面向对象概念的时候就理解不上去,所以就不想去学下去了。等读 者看完整篇内容后再去把概念搞明白吧。 2.什么是类,什么是对象,类和对象之间的关系 类的概念:类是具有相同属性和服务的一组对象的集合。它为属于该类的所有对象提供了统一 的抽象描述,其内部包括属性和服务两个主要部分。在面向对象的编程语言中,类是一个独立的程 序单位,它应该有一个类名并包括属性说明和服务说明两个主要部分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值