php_oop
相关定义
对象(object):现实生活中的实体,在编程语言中的体现。实体都有属性和功能。一组数据,和操作管理这些数据的操作,定义在一起就形成了一个实体,称之为对象。(属性和方法的集合)
属性(property),对象中,对象所拥有的数据,称之为对象的属性。
方法(method):对象中,对象所拥有的管理数据的能力,称之为方法。
在php中,对象通过对类的实体化形成的对象。
类(class): 对象的模子。 一类的对象抽取出来。一个将对象的行为和属性的一个抽象。就是一个定义。规定了对象应该有哪些属性,应该有哪些操作(方法)。
实例化:一个动作,根据类中所定义的对象的特征,形成一个对象的过程。
注意: php 中,对象一定是通过类的实例化来的。类的地位,只是得到对象的方法。
可以使用php 预定义的类。
stdclass . 通过实例化该类,就可以得到一个对象。
实例化: 通过关键字new 完成.
基本语法
定义类
class 关键字
class 类名 { 成员}
在定义一个类的时,需要知道这个类所实例化的对象,应该具有哪些属性和方法。
增加属性: 对象所拥有的数据,就是定义在类中变量。
增加方法: 对象所拥有的操作,可执行代码就是操作.定义在类中的函数.
注意:类中的成员(属性和方法),需要增加访问修饰限定符,简单的增加--public
实例化对象
通过类得到对象 ,操作符 new 完成.
$stu = new Student();
一个类,可以实例化多个对象,多个不同的对象
对象操作属性和方法
使用操作符 ->
// 对象 -> 成员$stu->a; // 10
注意,属性名前$没有了
如果存在$, 语法就 变成 属性名(属性标识符) 由变量充当,变成了可变属性的语法
$property_name = 'stu_id';echo $stu->$property_name;
属性名,同变量名一样,严格区分大小写。
保存数据标识符,就区分大小写。
如果是结构标识符,就区分大小写。 比如:函数,类,方法名。
访问方法:
$stu->study();
方法名,不区分大小写
方法名,支持可变方法,方法名有变量来代替
类名,可以使用变量来代替。
$class_name = 'Student'; $stu = new $class_name;
属性
可以在定义时,为属性直接设置初始值,但是必须已经存在的数据(类似于函数参数的默认值)
如果没有默认值,则值为null
属性,每个对象的同名属性,都可以具有不同的值, 每个对象所拥有的属性时不同的数据空间。
因为在实例化对象时,php会为每个对象分配一个独立的空间,保存对象的属性
由于,常规的,每个对象,应该拥有不同的属性值。
建议,在得到该对象时,应该对对象所拥有的属性,进行初始化。
方法
方法,也是属于某个对象。但是通常,方法内所操作的数据,都是该对象所拥有的数据。
在使用对象调用某个方法时,会自动地将当前对象传递到该方法内(类似于参数的传递)。 方法内,会自动使用变量 $this 来接收这个对象。因此,可以在方法内,通过$this方法调用该方法的对象。
构造&析构
类,没有作用域, 作用域,只是讲,函数内和函数外。
注意,想访问到对象的成员(属性和方法),一定要先找到对象和方法。
class Student { public $stu_id; public $stu_name; public function sayName() { echo $this->stu_name; // zf var_dump($stu_name); // 报错 Undefined variable var_dump($GLOBALS['stu_name']); // 报错 Undefined variable }}$stu = new Student();$stu->stu_id = '16.7.3';$stu->stu_name = 'zf';$stu->sayName();
类中定义的属性,不是相当于类中定义的方法的全局变量。不能直接在方法中使用属性变量的形式访问:
如果直接操作(输出)这个类名,则不会当做类来看待,而是当做常量来看待。
构造
在得到对象时,几乎都需要,对对象属性进行初始化,而且都是一样的操作。在一个操作中完成初始化,然后对该方法进行多次调用。
关键字:php, 对象, 属性, 方法
版权声明
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!