php面向对象程序设计入门教程


Posted in PHP onJune 22, 2019

本文实例讲述了php面向对象程序设计。分享给大家供大家参考,具体如下:

1.面向对象与面向过程的对比

面向过程:以事件为中心,分几个步骤去完成。不可扩展,html与php不分离

面向对象:自己作为指挥者,指挥别人去做。具有可扩展性,html和php代码分离

2.什么是对象?

对象:自然间形形色色存在的可以看得见的东西(其实这个也不会很准确),[在代码中表现为]由代码执行出来的效果

3.什么是面向对象?

OOP(面向对象编程)是Object-oriented programming的缩写,具有灵活性,可维护性,能为程序员开启一扇大门

软件工程的三个目标:1.重用性 2.灵活性 3.可扩展性

面向对象编程的特点:①封装 ②继承 ③多态

4.什么是类?

具有属性和方法对象的抽象的描述

5.类的定义

定义角度:

静态描述:  就是我们熟悉的变量

动态描述(对象的功能):把动态描述写成函数,在对象中声明的函数叫做方法

所有的类都是从属性 和方法 两个方面去声明,属性和方法都是类中的成员,属性我们又叫做对象的成员属性,方法又叫做对象的成员方法.

成员属性:在类中直接声明的变量. 可以使用PHP中的标量类型和复合类型,所以也可以是其他类实例化的对象,在类中使用资源和空类型(null)没有意义.

关于成员属性的初始值一般情况是不赋的,大多情况都是在实例化对象后再给相应的成员属性赋上初始值.

成员方法:在对象中声明的函数叫做方法,

上述的成员属性和成员方法和面向过程中的声明变量与函数一样,只不过多了一些关键字 public protected private等.

class Classname{
  //成员属性
  public $name;
  public $age;
  //成员方法
  public function __construct($name,$age){
    //方法体
    $this->name=$name;
    $this->age=$age;
  }
  public function method(){
    //方法体
    //return 返回值
}

6.类和对象的关系

类的实例化就是对象.

//实例化
$mod = new Classname();

"$变量名"是通过类创建一个对象的引用名称,后面通过这个引用来访问对象中的成员
"new"表示要创建一个新的对象
"类名称"表示新对象的类型
"参数"指定了类的构造方法用于初始化对象的值
如果类中没有定义构造方法,PHP会自动的创建一个不带参数的默认的构造方法.
一个类可以实例化对个对象,每个对象彼此独立,互不影响,属性和方法不会共享,(如同一张玻璃杯设计图,可以按照这个图制造成千上万的玻璃杯,但是一个玻璃杯被打碎的时候,其他的可没有被打碎),也就是它们同属一个玻璃杯类.

7.对象中成员的访问

对象中成员的访问就两个    成员属性  成员方法

对于成员属性也就两个操作:1:赋值操作 2.获取成员属性值的操作

$引用名 new 类名称([参数列表]); //对象实例化
$引用名->成员属性=值;       //给成员属性赋值
echo $引用名->成员属性;      //获取成员属性的值
$引用名->成员方法;          //访问成员方法

如果对象的成员不是静态的static,那么唯一的访问形式就是"对象引用名->属性"(没有$符号),和"对象引用名->方法名()".

8.特殊的对象引用"$this"

在对象的外部我门可以实例化对象,用对象的引用来访问对象的成员.但是在对象的内部要访问对象的成员时,怎么办?难道要在内部实例化,答案是否定的.这里要引入一个特殊的对象引用"$this".

this代表本对象,在对象内部的成员方法中访问成员要使用this代表本对象,在对象内部的成员方法中访问成员要使用this->属性$this->方法.只能在成员方法中使用

9.构造方法和析构方法(魔术方法)

构造方法:

①如果声明类的时候没有显示的声明它,类中都会默认存在一个没有参数列表并且内容为空的构造方法.如果显示的声明它,那么默认的构造方法将不会存在.

②当实例化一个对象时,会被自动调用一次,就是每使用new关键字实例化一个对象,就调用一次.不能主动的通过对象的引用去调用构造方法.

③通常用来对成员属性赋初始值.

④php5以前的版本必须要方法名和类名相同

⑤同一个类只能有一个构造方法

public function __construct(){
  //主体
}

析构方法:

①允许在小辉衣阁对象之前执行的一些特定操作(关闭文件,释放结果集)

②没有任何参数

当堆内存中的对象失去他的访问引用时,就会被认为是垃圾对象,并进行回收.而析构方法正是在垃圾回收程序回收对象前调用的.

public function __destruct(){
  //方法体
}

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
smtp邮件发送一例
Oct 09 PHP
ThinkPHP之import方法实例详解
Jun 20 PHP
php实现用于计算执行时间的类实例
Apr 18 PHP
如何使用jQuery+PHP+MySQL来实现一个在线测试项目
Apr 26 PHP
php结合正则批量抓取网页中邮箱地址
May 19 PHP
php实现向javascript传递数组的方法
Jul 27 PHP
PHP explode()函数的几个应用和implode()函数有什么区别
Nov 05 PHP
Thinkphp框架开发移动端接口(2)
Aug 18 PHP
PHP基本语法实例总结
Sep 09 PHP
laravel实现上传图片的两种方式小结
Oct 12 PHP
PHP中迭代器的简单实现及Yii框架中的迭代器实现方法示例
Apr 26 PHP
PHP dirname功能及原理实例解析
Oct 28 PHP
PHP字符串中抽取子串操作实例分析
Jun 22 #PHP
微信公众号之主动给用户发送消息功能
Jun 22 #PHP
Yii 使用intervention/image拓展实现图像处理功能
Jun 22 #PHP
PHP实现给定一列字符,生成指定长度的所有可能组合示例
Jun 22 #PHP
PHP中strtr与str_replace函数运行性能简单测试示例
Jun 22 #PHP
PHP判断函数是否被定义的方法
Jun 21 #PHP
php用户名的密码加密更安全的方法
Jun 21 #PHP
You might like
利用谷歌 Translate API制作自己的翻译脚本
2014/06/04 PHP
PHP读取大文件末尾N行的高效方法推荐
2016/06/03 PHP
PHP微信开发之有道翻译
2016/06/23 PHP
PHP使用OB缓存实现静态化功能示例
2019/03/23 PHP
PHP进阶学习之命名空间基本用法分析
2019/06/18 PHP
JS 文件本身编码转换 图文教程
2009/10/12 Javascript
Jquery自定义button按钮的几种方法
2014/06/11 Javascript
利用jquery禁止外层滚动条的滚动
2017/01/05 Javascript
JavaScript获取URL参数的方法之一
2017/03/24 Javascript
JavaScript中splice与slice的区别
2017/05/09 Javascript
vue+swiper实现组件化开发的实例代码
2017/10/26 Javascript
vue实现消息的无缝滚动效果的示例代码
2017/12/05 Javascript
使用Vue实现移动端左滑删除效果附源码
2019/05/16 Javascript
python实现bitmap数据结构详解
2014/02/17 Python
pandas apply 函数 实现多进程的示例讲解
2018/04/20 Python
python之文件读取一行一行的方法
2018/07/12 Python
Flask框架使用DBUtils模块连接数据库操作示例
2018/07/20 Python
Python3.7实现中控考勤机自动连接
2018/08/28 Python
python 3.6.2 安装配置方法图文教程
2018/09/18 Python
python中类的属性和方法介绍
2018/11/27 Python
python定位xpath 节点位置的方法
2019/08/27 Python
Python closure闭包解释及其注意点详解
2019/08/28 Python
Django自带日志 settings.py文件配置方法
2019/08/30 Python
复化梯形求积分实例——用Python进行数值计算
2019/11/20 Python
德国体育用品网上商店:SC24.com
2016/08/01 全球购物
世界上最大的餐具公司:Oneida
2016/12/17 全球购物
英国可持续奢侈品包包品牌:Elvis & Kresse
2018/08/05 全球购物
adidas爱尔兰官方网站:阿迪达斯运动鞋和运动服
2019/11/01 全球购物
新员工入职感言
2014/02/01 职场文书
爱国主义教育活动总结
2014/05/07 职场文书
乡镇党员干部四风对照检查材料思想汇报
2014/09/27 职场文书
高中生第一学年自我鉴定2015
2014/09/28 职场文书
人事主管岗位职责
2015/02/04 职场文书
2015年人力资源工作总结
2015/04/08 职场文书
大学生心理健康活动总结
2015/05/08 职场文书
Python实现数据的序列化操作详解
2022/07/07 Python