PHP从入门到精通
之PHP的面相对象编程
面向对象编程(Object Oriented Programming, OOP, 面向对象程序设计)是一种计算机编程架构,OOP的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。面向对象一直是软件开发领域内比较热门的话 题,为编程人员敞开了一扇大门,使其编程的代码 更简洁、更易于维护,并且具有更强的可重用性。有人说PHP不是一个真正的面向对象的语言,这是事实。PHP 是一个混合型语言,你可以使用OOP,也可以使用传统的过程化编程。然而,对于大型项目,你可能需要在PHP 中使用纯的OOP去声明类,而且在你的项目里只用对象和类。
首先我们来了解一些面向对象编程的基础知识:
面向过程和面向对象 |
1、面向过程:专注于解决一个问题的过程。面向过程的最大特点,是由一个个的函数去解决处理这个问题的一系列过程;
2、面向对象:专注于由哪个对象来处理一个问题。面向对象的最大特点,是由一个个具有属性和方法的功能的类,从类中拿对象,进而处理问题;
面向对象:
1、什么是类?
具有相同属性(特征)和方法(行为)的一系列个体的集合。类是一个抽象的概念。
2、什么是对象?
从类中拿到的具有具体属性的个体,称为对象。对象是一个具体的个体。
3、类和对象的关系?
类是对象的抽象化,对象是类的具体化。
类仅仅表明这类对象有哪些属性。但是不能有具体的值,所以类是抽象的。
而对象,是将类所有属性赋值后,产生具体的个体,所以对象是具体的。
类的声明与实例化 |
1、如何声明一个类?
class 类名{
访问修饰符 $属性;
[访问修饰符] function 方法(){};
}
2、声明一个类的注意事项?
①类名只能有字母数字下划线组成,开头不能是数字,必须符合大驼峰法则;
②类名必须使用class修饰,类名后面一定不能有();
③属性必须带访问修饰符;方法可以不带访问修饰符;
3、实例化对象及对象属性方法的调用:
$对象名=new 类名();//()可带可不带;
类外部调用属性和方法:
$对象名->属性名;//使用->调用属性时,属性名不能带$符号!!
类内部调用属性和方法:
$this->属性名;
声明类的代码示例:
class Person{ var $name; function Person($name){ $this->name=$name; } }
类中常见的修饰符 |
常见的访问修饰符有:public、protected、private、var等。
用法如下:
class Person{
public $name;
public function Person($name){
$this->name=$name;
}
}
构造函数 |
1、什么是构造函数?
构造函数是类中的一个特殊函数,当我们使用new关键字实例化对象时,相当于调用了类的构造函数;
2、构造函数有什么作用?
实例化对象时,自动调用,用于给对象的属性赋初值;
3、构造函数的写法?
①构造函数名必须与类同名:
[public]function Person(){
$this->name=$name
}
②使用魔术方法
4、构造函数注意事项?
①第一种写法,构造函数名,必须与类同名!!!
②如果一个类没有手写构造函数,则系统默认会有一个空参构造,因此可以使用new Person();
如果我们写进了带参数的构造函数,则将不再有空参构造,也就是不能直接使用new Person();
Person后面的()中的参数列表,必须符合构造函数的要求!!(即为形参实参问题);
③如果两种构造函数同时存在,将使用魔术方法__construct。
5、析构函数:__destruct():
①析构函数在对象被销毁释放之前自动调用;
②析构函数不能带有任何参数;
③析构函数常用于对象使用完以后,释放资源,关闭资源等;
6、什么是魔术方法?
PHP中给我们提供了一系列__开头的函数,这些函数无需手动调用,会在合适的时机自动调用,这类函数称为魔术函数(方法);
例如:
function __construct(){}// 在类new一个对象时自动调用; function __destruct(){}// 在对象被销毁时时自动调用;
因此,为避免重复,我们要求,除了魔术方法之外,自定义函数与方法不能__开头;
最后,一般对于功能比较复杂的类,我们会单独的写到一个类文件中。
类文件的命名,统一小写,使用"类名.class.php"的方式命名。
在其他文件中使用这个类时,使用include导入这个.class.php文件。
代码如下:
<?php header ("Content-Type:text/html; charset=utf-8"); class Person{ var $name; /*function Person($name){ $this->name=$name; }*/ //魔术方法(此为官方推荐用法) function __construct($name){ $this->name=$name; } public function say(){ echo "我叫".$this->name."!</br>"; } function __destruct(){ echo "Ah! 张三 is die!"; } } include "person.class.php"; $zhangsan=new Person("zhangsan"); $zhangsan->say();
关于PHP面向对象编程的基础知识就就到这里,想学习更多的PHPOOP知识,欢迎关注我的技术博客,我们下期再见。觉得内容不错的小伙伴请点推荐,欢迎大家在评论下方评论区与博主互动,谢谢大家!
未完,待续。。。
更多精彩内容,敬请关注 Q的前端世界的技术博客,内容持续更新。