如果第一次打仗PHP的同学,请从PHP站点要这样配置做事器才安全看起
面向工具编程思想先容
面向过程编程:

其基本特色是:
将要完成的任务,分割为多少个步骤:
第1步:做什么。。。
第2步:做什么。。。
.......
末了,做完了,任务完成!
图示:
面向工具编程:
其基本特色是:
将要完成的任务,“分派”给不同的“工具”去做;
某工具1:会做什么。。。
某工具2:会做什么。。。
........
程序一旦启动,则各个工具“各司其职”,相互合营就完成了任务。
图示:
OOP: Object Oriented Program(面向工具编程)
面向工具中的基本观点
类和工具
工具: 万物皆工具;
类: 任何工具,都可以人为“规定”为某种类型(种别);
class Person{
var $name ;
var $age;
var $edu;
}
我:
姓名:罗XX,
年事40,
学历:大学;
王亮:
姓名:王亮
年事:20;
学历:大学;
class Teacher{
var $name ;
var $age;
var $edu;
var $major; //专业
}
举例:
显示结果为:
然后再显示为:
可见:
类是描述一类事物的一个总称,是具有相同特色特性的该类事物的一个通用名字(称呼);
工具是一个明确的详细的“物体”,是某个类中的一个“实物”(相对来说,类便是一种抽象的泛称)。工具离不开类,或者说,工具一定从属于某个类——有类才有工具,先有类再有工具。
属性和方法
原来的做法(面向过程):
现在的做法(面向工具):
可见:
属性:便是原来的“变量”,只是现在它“从属于”一个类了,即写在一个类中,就称为属性;
方法:便是原来的“函数”,只是现在它“从属于”一个类了,即写在一个类中,就称为方法;
把稳:属性和方法,已经不能“自由利用”了,而是都要通过这个类或这个类的工具去利用。
利用属性,就把它当做一个“变量”去利用就好了,只是须要该形式:工具->属性名;
利用方法,就把它当做一个“函数”去利用就好了,只是须要该形式:工具->函数名(实参列表...)
结果为:v1=25
一个类,定义了一些属性和方法,则:
这个类所创建出来的工具,也就自然有了这些属性和方法;
创建工具的几种形式
class C1{
var $p1 = 1; //定义一个属性;
}
形式1:
$o1 = new C1(); //通过一个类,去new出一个工具
形式2:
$o2 = new $o1(); //通过一个工具,去new出一个工具——实在是new出来的是旧工具所述类的一个新工具。
形式3:
$s1 = “C1”; //只是一个字符串变量而已;
$o3 = new $s1(); //这便是所谓的“可变类”——无非便是类的名字是一个变量而已。
形式4:
$o4 = new self(); //self表示“当前类本身”,它只能涌如今一个类的方法中。
工具的传值办法:
类中成员
类中成员概述
面向工具编程,是须要通过“工具”去做什么事情(以完成某种任务);
而:
工具总是来源于类;
以是:
面向工具的编程,统统都是从定义类开始;
类中成员分为3大类:
属性:
方法:
常量:
形式上,大致如下:
class 类名 {
常量定义1;
常量定义2;
.......
属性定义1;
属性定义2;
........
方法定义1;
方法定义2;
.......
}
解释:
以上各项,没有顺序问题;习气上,实在常量放前面,然后是属性,然后是方法;
详细一点,就又分为:
属性:
普通属性;//一样平常属性,实例属性
静态属性;
方法:
普通方法;//一样平常方法,实例方法
静态方法;
布局方法;
析构方法;
常量:
类常量
当在一个类中定义一个常量时,该常量就称为“类常量”——实质实在还是常量;
定义形式:
class 类名{
const 常量名 = 常量值;
//不可以利用define()来定义!
}
利用形式:
常量的利用,是通过类名,并利用范围解析符(::)来取用的;
类名::常量名;
举例:
普通属性(实例属性):
实例的单词为:instance
实例,实在也叫做“工具”;
普通(实例)属性,便是一个可以在该类实例化出的工具上利用的属性!
定义形式:
class 类名{
var $属性名 = 初始值;
var $属性名; //这个属性没有初始值;
//上述的var 还可以利用public来代替,比如:
public $属性名 = 初始值;
public $属性名; //这个属性没有初始值;
}
利用形式:
是通过该类的工具,来利用普通属性(实例属性):
$工具->属性名;
由于,属性的实质便是变量,则其就可以当做一个变量来看待和利用,比如:
$v1 = $工具->属性名;
echo $工具->属性名;
$v2 = $工具->属性名 3 + 5; //进行打算
静态属性:
静态属性,实质上也是“变量”,但其有一个特点便是:该变量只从属于“类”,即:
一个类中的一个静态属性,就只有“一份数据”;
但:
一个类中的一个实例属性,就可以有“多份数据”——每创建一个工具出来,就会有一份数据;
定义形式:
class 类名{
static $属性名 = 初始值;
static $属性名; //这个属性没有初始值;
}
利用形式:
利用类名和范围解析符(::)来对静态属性进行操作:
类名::$静态属性名; //把稳:属性名带$符号
比拟1:
常量的利用:类名::常量名;
比拟2:
实例属性的利用:工具名->实例属性名; //把稳:属性名不带$符号
结果为:
可见:
1,实例属性,是每个工具都可以不一样的数据,也是每个工具都“独自拥有”的数据;
2,静态属性,他不属于任何一个工具,而只属于该类本身,也可以理解为为所有工具所共有的数据;
普通方法(实例方法)
一个类中定义的方法,可以为这个类的所有工具调用的方法。也可以理解为,这个类的所有工具,都各自有自己的一个该方法;
定义形式:
class 类名{
function 方法名(形参1,形参2,.... ){
//方法体。。。
}
}
调用形式:
$工具名->方法名(实参1,实参2,....);
静态方法
一个类中定义的方法,只从属于这个类本身,而不是从属于这个类的工具。
定义形式:
class 类名{
static function 方法名(形参1,形参2,.... ){
//方法体。。。
}
}
调用形式:
类名::方法名(实参1,实参2,....);
举例(属性和方法的综合例子)
布局方法(_ _construct):
布局方法,是一个分外的方法:
1,名字是固定的:_ _construct;
2,该方法常日都不要我们自己调用,而是在new一个工具的时候会自动调用。
3,该方法紧张的目的是为了在new一个工具的时候,给该工具设置一些“初始值”(初始化事情);
4,布局方法的参数没有规定,常日是根据实际的须要来定义,目的是为了工具属性数据的初始化;
先看这种没有布局方法的环境:
可见,这种办法,对工具的属性的数据值初始化不太方便,我们可以利用布局方法改进为:
析构方法(_ _destruct):
解释:
1,析构方法是一个分外的方法,名字为固定的词:_ _desctruct
2,析构方法是在一个工具被“销毁”的时候会自动被调用的方法——我们无法调用它;
3,析构方法不能带参数(形参),但方法中也可以利用$this这个词,代表“当前工具”;
工具在哪些情形下会被销毁?
1,如果程序结束,所有变量都会被销毁,自然,变量所代表的工具也会被销毁;
可见,工具销毁的顺序,默认情形下,跟其创建的顺序相反;
2,当一个工具没有任何变量“指向”它的时候,纵然程序还没有结束,也会被销毁;
如下图所示:
另一个情形:
图示如下:
再来一个情形:
图示如下:
末了一个情形:
图示如下:
开始,其事理为:
赋值之后($o4 = 44),其结果及事理为:
事理$o4中存储的数据是new过来:$o4 = new C1(“D”);
更多课程请搜索微信"大众年夜众号“爱搞机个人版”,喜好学习的建议关注下,所有课程免费!
点下关注不迷路!