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 相关文章推荐
main.php
Dec 09 PHP
PHP缓存技术的使用说明
Aug 06 PHP
php中实现简单的ACL 完结篇
Sep 07 PHP
使用pthreads实现真正的PHP多线程(需PHP5.3以上版本)
May 05 PHP
yii实现创建验证码实例解析
Jul 31 PHP
CentOS6.5 编译安装lnmp环境
Dec 21 PHP
php中curl使用指南
Feb 05 PHP
Laravel中使用阿里云OSS Composer包分享
Feb 10 PHP
CodeIgniter集成smarty的方法详解
May 26 PHP
PHP基于堆栈实现的高级计算器功能示例
Sep 15 PHP
基于PHP的登录和注册的功能的实现
Aug 06 PHP
WordPress伪静态规则设置代码实例
Dec 10 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
PHP 计算代码执行耗时的代码修正网上普遍错误
2011/05/14 PHP
PHP实现提取一个图像文件并在浏览器上显示的代码
2012/10/06 PHP
PHP PDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别
2014/11/20 PHP
PHP中防止SQL注入方法详解
2014/12/25 PHP
Ajax+PHP实现的模拟进度条功能示例
2019/02/11 PHP
PHP实现文件上传与下载
2020/08/28 PHP
Jsonp 跨域的原理以及Jquery的解决方案
2011/06/27 Javascript
利用webqq协议使用python登录qq发消息源码参考
2013/04/08 Javascript
原生js实现的贪吃蛇网页版游戏完整实例
2015/05/18 Javascript
bootstrap laydate日期组件使用详解
2017/01/04 Javascript
浅谈react.js中实现tab吸顶效果的问题
2017/09/06 Javascript
JS动画定时器知识总结
2018/03/23 Javascript
jquery的$().each和$.each的区别
2019/01/18 jQuery
图文讲解用vue-cli脚手架创建vue项目步骤
2019/02/12 Javascript
js点击事件的执行过程实例分析【冒泡与捕获】
2020/04/11 Javascript
JS异步宏队列微队列原理详解
2020/09/09 Javascript
爬山算法简介和Python实现实例
2014/04/26 Python
Python greenlet实现原理和使用示例
2014/09/24 Python
sublime text 3配置使用python操作方法
2017/06/11 Python
ubuntu安装sublime3并配置python3环境的方法
2018/03/15 Python
对python append 与浅拷贝的实例讲解
2018/05/04 Python
Python使用pyautogui模块实现自动化鼠标和键盘操作示例
2018/09/04 Python
python应用文件读取与登录注册功能
2019/09/23 Python
Python编程快速上手——选择性拷贝操作案例分析
2020/02/28 Python
基于python检查矩阵计算结果
2020/05/21 Python
matplotlib源码解析标题实现(窗口标题,标题,子图标题不同之间的差异)
2021/02/22 Python
html5中的一些标签学习(心得)
2016/10/18 HTML / CSS
SKECHERS斯凯奇中国官网:来自美国的运动休闲品牌
2018/11/14 全球购物
全球采购的街头服饰和帽子:Urban Excess
2020/10/28 全球购物
电脑专业个人求职信范文
2014/02/04 职场文书
建房协议书
2014/04/11 职场文书
优质服务口号
2014/06/11 职场文书
乡镇党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
2015年挂职干部工作总结
2015/05/14 职场文书
浅谈Golang 嵌套 interface 的赋值问题
2021/04/29 Golang
利用Python判断你的密码难度等级
2021/06/02 Python