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 相关文章推荐
Mysql中limit的用法方法详解与注意事项
Apr 19 PHP
php 获取可变函数参数的函数
Aug 26 PHP
php下网站防IP攻击代码,超级实用
Oct 24 PHP
php计算十二星座的函数代码
Aug 21 PHP
smarty基础之拼接字符串的详解
Jun 18 PHP
PHP实现的连贯操作、链式操作实例
Jul 08 PHP
codeigniter显示所有脚本执行时间的方法
Mar 21 PHP
php通过curl模拟登陆DZ论坛
May 11 PHP
Zend Framework教程之Autoloading用法详解
Mar 08 PHP
php页面跳转session cookie丢失导致不能登录等问题的解决方法
Dec 12 PHP
PHP实现发送微博消息功能完整示例
Dec 04 PHP
php解析非标准json、非规范json的方式实例
May 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
Laravel 5框架学习之子视图和表单复用
2015/04/09 PHP
php+jQuery+Ajax实现点赞效果的方法(附源码下载)
2020/07/21 PHP
php curl上传、下载、https登陆实现代码
2017/07/23 PHP
JavaScript 继承详解(二)
2009/07/13 Javascript
jquery ajax提交表单数据的两种实现方法
2010/04/29 Javascript
jQuery创建插件的代码分析
2011/04/14 Javascript
关于JavaScript的with 语句的使用方法
2011/05/09 Javascript
UI Events 用户界面事件
2012/06/27 Javascript
js 窗口抖动示例
2013/09/04 Javascript
jquery.cookie() 方法的使用(读取、写入、删除)
2013/12/05 Javascript
javascript学习笔记(三)BOM和DOM详解
2014/09/30 Javascript
jQuery+css实现的切换图片功能代码
2016/01/27 Javascript
JavaScript实现iframe自动高度调整和不同主域名跨域
2016/02/27 Javascript
javascript实现一个网页加载进度loading
2017/01/04 Javascript
利用C/C++编写node.js原生模块的方法教程
2017/07/07 Javascript
如何优雅的在一台vps(云主机)上面部署vue+mongodb+express项目
2019/01/20 Javascript
JSON.stringify()方法讲解
2019/01/31 Javascript
js抽奖转盘实现方法分析
2020/05/16 Javascript
了不起的11个JavaScript代码重构最佳实践小结
2021/01/11 Javascript
Handtrack.js库实现实时监测手部运动(推荐)
2021/02/08 Javascript
Python文件和目录操作详解
2015/02/08 Python
通过Python使用saltstack生成服务器资产清单
2016/03/01 Python
详解pandas安装若干异常及解决方案总结
2019/01/10 Python
FFrpc python客户端lib使用解析
2019/08/24 Python
使用Django搭建web服务器的例子(最最正确的方式)
2019/08/29 Python
Python HTMLTestRunner可视化报告实现过程解析
2020/04/10 Python
python入门教程之基本算术运算符
2020/11/13 Python
PyQt5中QSpinBox计数器的实现
2021/01/18 Python
css3 column实现卡片瀑布流布局的示例代码
2018/06/22 HTML / CSS
让IE支持HTML5的方法
2012/12/11 HTML / CSS
资深地理教师自我评价
2013/09/21 职场文书
计算机专业个人简短的自我评价
2013/10/23 职场文书
班组长的岗位职责
2013/12/09 职场文书
机关道德讲堂实施方案
2014/03/15 职场文书
地球一小时活动总结
2015/02/27 职场文书
Python批量将csv文件转化成xml文件的实例
2021/05/10 Python