轻松玩转PHP面向对象编程之基础

版权声明:俗世凡人行(释) QQ:748507607 https://blog.csdn.net/weixin_41887155/article/details/86226543

目录

一: 什么是面向对象编程?

二: 面向对象编程的特点

三: 面向对象编程和面向过程编程的区别?

四: 为什么学习面向对象?

五: 面向对象编程应用范围

六: 面向对象编程的三个基本概念

1. 类

2. 对象

3. 实例化

4. 类成员

七: 私有访问

八: $this和self的区别

九: 总结

十: 举个小例子论证理论


一: 什么是面向对象编程?

简称OOP(object oriented programming);

也即基于面向过程编程的基础上,增加一层操作主体,更能满足人的逻辑思维;

面向对象不是一种技术,是一种编程思想;

二: 面向对象编程的特点

  • 封装
  • 继承
  • 多态

三: 面向对象编程和面向过程编程的区别?

共同点:

  • 模块化编程,都能实现功能;
  • 都能实现代码的复用;

不同点

  • 面向过程代码没有冗余,实现起来比较简单,但是后期维护非常困难;
  • 面向对象前期开发难度大,但是后期的维护比较容易;

四: 为什么学习面向对象?

面向对象是一种计算机编程架构,比面向过程具有更强的灵活性和扩展性

面向对象编程也是一个程序员发展的“分水岭”,很多初学者和略有成就的开发者,因为无法理解“面向对象”而放弃发展。

要想在编程这条路上走的更远,就一定要掌握面向对象编程思想

主流php框架都是面向对象编程方式实现(如ThinkPHP,CI,YII,Zend framework等)

五: 面向对象编程应用范围

小功能或者小项目建议使用面向过程编程,大项目面向对象编程;

六: 面向对象编程的三个基本概念

  • 对象
  • 实例化

1. 类

关键字:  class

类是具有共同属性和能力的集合,把具有的共同特性抽离出来,形成语言,能被系统识别;

类是对象的抽象,类是一种结构(函数也是一种结构);

结构: 

<?php
//类名要见名知义
class 类名{
	//类成员
}

?>

2. 对象

object  自然界一切都是对象,也是一个个个体,必须与类相对应,是类的具体;

3. 实例化

实例化: new  是类获取对象的一个过程;

对象=new 类名();  //有构造方法时并且要传参数,此()必须有;

4. 类成员

类成员:定义类里面的属性、方法(函数)、常量;类里面只能存放以上三种结构;

1).属性

 在类里面定义类成员必须加访问修饰限定符;

访问修饰限定符:  

  • public:  公共的,可以在类外和类的内部访问;
  • protected: 受保护的,只能在类的内部访问;
  • private:  私有,只能在自己类的内部访问;
  • 在PHP5.0之前,还有以var 声明的,代表公有;

属性是属于对象的

访问属性是通过对象来访问  对象->属性

访问:  对象->属性

修改:  对象->属性=值

2).方法

方法本质上属于类,但是有一点,方法既可以用类来访问也可以用对象来访问,

方法的访问一般来说是通过对象来访问

语法: 对象->方法名();

3).类常量

面向过程中定义常量 : define(‘PI’,3.14);

面向对象中定义常量

const 常量名=值

类常量不在对象中,在类中

//定义类常量(没有访问修饰限定符)
const PI = 3.14;

访问类常量是通过类来访问  

外部访问语法:     类名 ::常量名     

内部访问语法:      self ::常量名       self代表当前类

::范围解析操作符

七: 私有访问

1. 在类的外部只能访问的公共方法,无法访问私有和受保护的;所以只能在类的内部访问,通过访问公有方法来间接访问;

 2. 必须使对象进入到类的内部,由于实例化会产生多个对象,采用全局变量局部化不方便, 在类的方法内部有一个$this,代表进入到该类的对象;

八: $this和self的区别

  • $this代表进入当前类的对象,self代表当前类
  • $this可以被直接打印,self不能被打印

九: 总结

类成员中,属性和方法的定义必须加上访问限定修饰符;

常量不需要加任何东西;

在类的外部只能访问公有的东西,私有的要在外部访问,通通放到公有的方法里面去;

1、属性是属于对象,只能使用对象来调用,公有的属性可以在类的外部和内部都可以用对象来访问,在外部直接通过对象名->属性名来使用,在内部,使用公有方法里面写$this->属性名,然后再类的外部,通过对象->公有方法来实现;

2.私有的属性和受保护的属性,只能在内部,使用公有方法里面写$this->属性名,然后再类的外部,通过对象->公有方法来实现;

3.方法是属于类,既可以使用类来访问也可以使用对象来访问,但是在严格模式下,只允许类访问静态方法,所以规定调用方法时使用对象;

4.在类的外部只能访问公有的方法,如果说想访问非公有的方法,只能把非公有方法放到公有方法里面,在外部通过对象来调用公有方法来实现;

5.常量是属于类的,常量的访问是由类来实现,在外部通过   类名::常量名

   在内部,把常量的访问方式放到公有的方法里面,通过 self::常量名,在外部通过对象来访问公有方法来实现;

十: 举个小例子论证理论

<?php
//类名要见名知义
class Person{
	//类成员  在类的内部只能是类成员,都必须加上访问修饰限定符
	//属性(可以有值也可以没有值)
	public   $eyes = 2; //公共的属性
	protected $arg = 3; //受保护的属性
	private   $ear = 2;//私有的属性
	var $sex; //公共的属性

	//定义一个公共的方法,方法如果不加访问限制修订符,默认为public
	public function getArg()
	{
		echo $this->arg;  /*$this指的是当前实例化的对象,更通俗点就
		是谁调用该方法或者属性,this就代表谁,代表进入到该类内部的对象*/
		echo "<br />";
		echo self::PI;    //类里面访问常量用self 
    }

    //定义一个常量
    const PI =3.14;
    public function getPi()
    {
    	echo self::PI; //self代表当前类,只能在类的内部使用
    	var_dump($this); //外部对象$person this===$person
    	//var_dump(self);//是一种结构,不能直接打印
    }
}

$person = new Person(); //实例化一个对象
//访问属性,属性不能加$符号
echo $person->eyes;
echo "<br />";
//放问类里面的方法
$person->getArg();
echo "<br />";
//放问类里面的常量
echo Person::PI;
?>

 

猜你喜欢

转载自blog.csdn.net/weixin_41887155/article/details/86226543