php面向对象公共类,PHP面向对象(一):类与类的实例化
1)、类、对象、实例的关系
类是对象的抽象,对象是类的具体化,实例是对象的另一种名称。
2)、类的定义
①、成员属性(变量)的定义与使用
成员属性必须 var public protected private
语法:
形式1:var $v1 ; //定义不赋值
形式2:var $v2 = 2; //定义的同时可以赋值,该值只能是“直接值”,常量(值),不能是变量值,也不能是“计算表达式”
形式3:public $v1;
形式4:public $2 = 2; //其实var是“public”一个别名,正式用public更好。
作用:对事物特征的描述。
错误形式:
$v1 = 1;
var $v2 = 1+3; //右边不能是计算表达式
public $v3 = $v2; //右边不能是变量
使用形式:
$对象->属性名;//注意:属性名前面没有$符号。
②、成员方法(函数)的定义与使用
语法:关键字(缺省时默认public) + function +名称(参数)
定义成员方法的时候可以加参数也可以不加参数
③、this,self,parent三个关键字
this就是指向当前对象实例的指针,不指向任何其他对象或类。
self通常只能在某个类的某个方法内部代表该类的名称。
parent如果想在子类中调用父类的同名方法,那么请你使用关键字parent::+方法名()
④、php链式调用原理
在一个类中有多个方法,当你实例化这个类,并调用方法时只能一个一个调用
如果要实现链式调用,这要在方法的结束添加return $this即可。
3)、static关键字
static 关键字来定义静态方法和属性。static 也可用于定义静态变量以及后期静态绑定
①、静态类:
PHP中和Java中一样:如果一个类要被声明为static的,只有一种情况,就是静态内部类。
类中成员有:静态的和非静态的,而静态类只有一种,那就是静态内部类。
②、静态成员
静态属性:只隶属于类本身——也可以看做是所有对象的“共有数据”。
使用:类::$静态属性名
静态方法:同样隶属于类,而不是隶属于具体对象。
使用:类名::静态方法名();
【注】1、静态方法中只能调用静态属性和静态方法,不能调用非静态属性和方法,self::方法名()、self::属性名
2、动态方法中静态方法和动态方法都可以调用,如果在同一个类中:
调用静态方法使用:self::方法名()、self::属性名,
调用动态方法用this−>方法名()、this−>方法名()、this->属性名
3、只有实例化的时候才会自动调用构造函数,所以只有动态类才可以触发构造函数,静态类不会触发构造函数
4、由于静态方法不需要通过对象即可调用,所以伪变量 $this 在静态方法中不可用。
5、静态属性只能被初始化为文字或常量,不能使用表达式。所以可以把静态属性初始化为整数或数组,但不能初始化为另一个变量或函数返回值,也不能指向一个对象。
6、自 PHP 5.3.0 起,可以用一个变量来动态调用类。但该变量的值不能为关键字 self,parent 或 static。
③、后期静态绑定:
Self:通常只能在某个类的某个方法内部代表该类的名称,所以指向当前A类的who方法,static有后期绑定的概念,所以指向B类,因为是B在调用test方法,所以指向B类,而B类中有who方法。
4)、类常量(const关键字)
1:类里面定义的常量,用const定义,常量是属于类的,不是对象的。
2:定义类中的常量的时候必须给初始值
3:在使用类中的常量的时候,要使用类名::+常量名或者self::+常量名来调用
4:在类的外部调用类的常量,只能使用类名::+常量名来调用
5:类中定义的常量只归类所有,不归对象所有,不能通过对象来调用
类内部调用类常量:
类外部调用类常量:
5)、范围解析操作符(::)
作用:可以用于访问静态成员,类常量,还可以用于覆盖类中的属性和方法。
实例1:类的外部使用 :: 操作符
实例2:self,parent 和 static 这三个特殊的关键字是用于在类内部对其属性或方法进行访问的
实例3:调用父类的方法
6)、实例化中的问题
实例化对象的格式为:
$变量名 = new 类名(); //括号里可传参数
给对象中的成员属性赋值的格式为:
$引用名 ->成员属性 = 值;
调用对象中的成员方法的格式为:
$引用名 -> 成员方法;
成员方法使用成员属性的格式为
$this -> 成员属性;
实例化对象时参数问题:
1:当我们实例化一个php类的时候,要怎么传递参数呢?这取决于该类的构造方法。
2:可以通过var_dump()打印对象,不过只能打印对象的属性,它的方法不能打印出来。
3:要想获取对象的方法列表,可以用get_class_methods函数。
【注】
php面向对象公共类,PHP面向对象(一):类与类的实例化相关推荐
- 类与面向对象的精华:继承【C++继承】
引入继承 为什么需要继承? 简单举例 继承 定义 定性 is-a 而不是 has-a is-a has-a 语法 继承方式 继承方式影响了什么? 公有继承 public 私有继承 private 保护 ...
- API 类和面向对象简介
2019独角兽企业重金招聘Python工程师标准>>> API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数, 目的是提 ...
- 【Python基础】07、Python类与面向对象
一.面向对象编程(OOP) 程序=算法+数据结构=指令+数据 1.代码可以选择以指令为核心或以数据为核心进行编写 两种范型: 以指令为核心:围绕"正在发生什么"进行编写 面向过程编 ...
- 列表怎么有限的初始化为零_《零基础学习Android开发》第五课 类与面向对象编程1-1...
视频:<零基础学习Android开发>第五课 类与面向对象编程1-1 类的定义.成员变量.构造方法.成员方法 一.从数据与逻辑相互关系审视代码 通过前面的课程,我们不断接触Java语言的知 ...
- 【Java 面向对象】基础、Java程序的内存划分、嵌套类(内部类、静态嵌套类)、局部类、接口的升级问题(默认方法、静态方法)、instanceof
面向对象 对象的内存 复杂对象的内存 对象数组的内存 思考:方法存储在哪里? Java程序的内存划分 this.super 注解(Annotation) 访问控制(Access Control) to ...
- python学习笔记(七)类和面向对象
目录 (一)了解面向对象 面向过程 面向对象的三大特性: (二)python中的类 1)定义类 新式类与经典类 2)初始化与实例化 3)类的属性 类属性与实例属性 私有属性 特殊属性 同名的类属性与实 ...
- JAVA类与面向对象
JAVA | 类与面向对象 day8 对于任何的知识点我们都可以从这三个点去剖析: 3W => what? why? how? 面向过程与面向对象 Java面向对象学习的三条主线 Java类及类 ...
- python如何定义类_Python 面向对象
Python 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. 如果你以前没有接触过 ...
- Javascript基础与面向对象基础~第四讲 Javascript中的类对象
今天来说JS中如何实现类(class),事实上本应该昨天晚上写的,可我失言了,在些说一声"抱歉"!JS中的类是JS面向对象的基础,也是我最拿手的东西,你写的代码能否提高一个层次,一 ...
最新文章
- 随笔之如何实现一个线程池
- 1.08亿条在线赌场信息泄露,来源指向 ElasticSearch
- bitnami-redmineserver迁移
- c++ 弹出菜单在固定的位置_固定资产管理软件操作手册(资产维修)
- Mac下安装mysql5.7 完整步骤(图文详解)
- 对比tensorflow查看打印输出张量Tensor的两种方法(急切执行tf.enable_eager_execution()和tf.Session.run())
- POJ 3694 Network
- SCRUM 12.23
- wr703n 4m固件 带打印机服务器_旗捷支招 | 如何关闭打印机固件自动更新?分分钟搞定!...
- 软件易用性文章分享第二篇-手机易用性: 一个经典的实验
- 视频播放组件实战【LivePlayer H5播放器】
- w10 http基本原理 Nginx部署
- 有定位的含有 input的弹框,在有些手机光标乱跳
- “Defaulting to user installation because normal site-packages is not writeable“
- Pathon基础篇数据类型之——数值、字符串与列表内容
- mysql server mirro_Docker下安装MySQL Server镜像
- phal接口查询显示中多余方法处理
- Win10电脑用360杀毒一全盘杀毒就蓝屏
- IM开发宝典:史上最全,微信各种功能参数和逻辑规则资料汇总
- joinus计算机怎么弄游戏,美国us计算机专业学校排名:joinus学生计算机如何消除sci...
热门文章
- SAP Cloud for Customer UI Designer里如何消费Object Value Selector(OVS)
- SAP Spartacus Component-wrapper.directive.ts launch Component的三个参数
- SAP Fiori internationalization(国际化)实现的一些例子
- where is url parameter evaluated in UI5 core q.sap.getUriParameters
- SAP BCP 超时机制的实现
- 关于SAP Spartacus添加缺失的cost center route配置的必要性
- SAP WebIDE destination的 discovery工作机制 -下拉菜单项是如何被填充的
- linux未知的类型名 FILE,smb使用 ------转载自http://blog.csdn.net/tlaff/article/details/5463068...
- ts获取服务器数据_基于Nginx的媒体服务器技术-线上公开课
- java计算圆锥体积_六年级:美妙数学之“球的体积计算”(0430六)