标签:静态 创建对象 调用 静态属性 决定 protect on() 不能 引用
一,传统的面向过程
将要完成的工作,分为若干个步骤,然后按步骤一步一步完成,最终完成整个工作
二,面向对象
将要完成的工作拆分为一个一个对象的任务,每一个对象独立完成自己的任务,最终完成整个工作
三,面向对象的基本概念
1,类与对象
类:用于描述某一些具有共同特征的物体的概念,是某一类物体的总称 例如:人类
一个类所具有的共同特征包括2个方面的信息:属性和方法
对象:指一个具体的物体,该物体隶属于某个类 例如:张三这个人 就属于人类
对象属于类,没有类就不能有对象
<?php //定义一个类 class person{//类中的属性(就是变量) var $name = ‘张三‘; var $sex = ‘男‘; var $age = ‘22‘; //类中的方法(就是函数) function personFun(){ echo ‘函数输出‘; } //类中有一些常量(类常量) const PI = 3.14; }
可见类就是将一些变量和一些函数及一些常量用一个名字(类名)包起来的集合体,这些属性(变量),函数和常量隶属于该类,并且只能由该类及其创建出来的对象来使用
2,面向对象的语法
a,定义类:定义属性(变量) 定义方法(函数) 定义常量(类常量)
b,创建类的对象:$person1 = new person();person是上面代码的类名,此时$person1就是一个对象
c,使用对象
使用其属性:属性就是变量,也就是使用其变量
使用其方法:使用其函数
使用其常量
<?php //定义一个类 class person{
//类中的属性(就是变量) var $name = ‘‘; var $sex = ‘‘; var $age = ‘‘; //类中的方法(就是函数) function personFun(){ echo ‘姓名:‘.$this->name.‘<br/>性别:‘.$this->sex.‘<br/>年龄:‘.$this->age; } //类中有一些常量(类常量) const PI = 3.14; } $person1 = new person(); $person1->name = ‘张三‘; $person1->sex= ‘男‘; $person1->age= ‘22‘; $person1->personFun();
输出结果:
四,创建对象的基本形式
方式一,$对象名 = new 类名(); 例如:$person1 = new person();
方式二:可变类名:
例如上面的代码:$people = ‘person‘; $person2 = new $people();
其中:方式以中的$person1和方式二中的$person2是一样的效果
方式三,$对象名 = new self; self指类本身,该方法只能在类内部方法中使用
方式四:通过对象创建对象$person1 = new person(); $person3 = new $person1;
五,对象的传值(默认是值传递)
值传递
引用传递
五,类中的成员
属性 方法 类常量
1.一般属性
属性就是放在一个类中的变量
定义形式:
形式一: var $v;//定义不赋值
形式二:var $v = 2;//定义并赋值,该值只能是一个直接量(常量),该值不能是计算表达式 或是变量
形式三:public $v;
形式四:public $v = 2;//var是public的别名,正式用public更好
2,一般方法
a,方法的定义和php中的方法定义是一样的
方法前面可以加修饰符:public protected private,省略不写时默认为public
b,方法中的$this关键字
$this是一个伪对象,代表当前所属类的当前对象
总结:类是定义好的某些对象的模型
对象是根据模型所创建出来的具体物体,一个对象有哪些属性(数据),是由该类来决定的,一个对象可以做那些事情(方法),也是由该类决定的
c,一个系统函数get_class(对象)
作用:获取某个对象的所属类型 结果是一个类名字符串
六,静态属性
定义静态属性时,前面要加关键字static
静态属性和一般属性的差别:一般属性属于该类的某个具体对象,每个对象的属性的值不一定相同
静态属性属于类本身,其实他就是该类所有对象的共有数据
1,静态属性语法 类名::$静态属性名;
七,静态属性
方法前面加static
语法:类名::静态方法名();
如果通过类名来调用静态方法,方法中不能出现$this,即$this在静态方法中不能使用
静态方法中不能调用非静态方法
self:代表当前类:只能在某个类的某个方法内部使用
八,构造方法 构造方法是“创建”对象的时候会自动调用。
构造方法是类中的一个特殊方法,其作用是在实例化一个对象的同时,给对象的属性赋值,使之一创建完成,就具有了本身的特有数据(构造方法本身就存在类中)
1,该方法的方法名是固定的:__construct();
2,该方法只能是普通方法,不可以是静态方法
3,通常该方法是public
4,该方法中通常使用$this这个关键字来对属性进行赋值
5,当new 类名() 的时候,其实是在调用该构造方法
6,如果一个类中定义了构造方法,则实例化该类是就会调用该方法,且实例化时的参数要跟构造方法的参数一致
九,析构方法 析构方法是“销毁”对象的时候会自动调用。
通常是在销毁对象时,来清理数据
析构方法通常不需要去定义
析构方法不能调用
析构方法不能有形参
析构方法中可以用于清理一些在php代码结束后不能清理的数据,如生成的文件。
标签:静态 创建对象 调用 静态属性 决定 protect on() 不能 引用
原文地址:https://www.cnblogs.com/wfc139/p/9135231.html