本文目录一览:
php中面向对象编程是什么意思,到底用在什么地方,用一个项目中的实际例子来举例说明
可以这样理解,
1、类是模具,对象是模具生成的产品,就是印刷术一样,有了一个字一个字的模子,要印出一个字来就方便了,想印就印,你可以印,我也可以印。
2、在PHP中怎么做一个模具出来呢,就用 class申明,它就表示你要造一个模具了,但这个模具是做什么用的,就要在里面添加函数来表达了,函数名就是这个类的方法名,函数完成的功能就是类的方法。当然函数要实现功能代码中肯定要用到变量,这个就是所谓的类的成员以或者说成是类的属性。-php面向对象实例化类
3、有了类的属性有了类的方法,这就完成了一个类的定义,也就是模具做好了,接下来要理解的就是,怎样去用这个类了。就好像是要看一本书你不可能到印刷厂去把字的模具拿来拼成一页一页书来看吧,肯定是在纸上印刷出来。这个印刷的过程就是对象生成的过程也叫类的实例化。PHP中用new关键字来生成对象。比如前面定义的类名为 牛,这个牛有一个方法(函数)是:耕地。当然耕地这个函数,要怎样去实现那是另外要的事情了。现在要说的是怎么用牛的耕地方法,首先实例化,在PHP中这样表示:牛1= new 牛。这样 牛这个类 就有了一个具体可以使唤的牛1了 要想用牛1的耕地方法,意思就是“调用类(对象)的方法”,PHP中这样表示,牛1-耕地;如果你想要100头牛,就new100个出来就行,而不用每当要用牛的时候都去写牛的代码和牛耕地的代码了。-php面向对象实例化类
4、上面说的是一个理解过程,要实现就要用到具体的PHP的语法了,比如怎样申明变量 ,怎样赋值,怎样用运算符来运算,怎样写循环结构,怎样写选择结构,等等 。
面向对象中静态方法和属性的理解
在PHP面向对象中一般我们都是实例化一个类得到一个对象来访问这个对象的属性和方法,把对象当做是活动的组件,对象的方法可以用来被调用,对象的属性可以被访问,其实面向对象的很大一个特点是操作通过类实例化的对象来完成,毕竟,类仅仅是对象的一个模板而已,但是对于静态方法或者是静态属性而言,我们可以直接通过类来访问他们,只要我们用static关键字声明他们就好了.-php面向对象实例化类
**static是php5后引入的,在这之前的版本是不能使用的,
总结如下:
1.静态方法是以类作为作用域的函数,所以静态方法不能访问非静态的属性,因为他们属于对象而不是类,但是可以访问静态属性
2.在类外部可以通过类名::属性名/方法名来实现的,区别于一般的-普通访问方式,
3.在类的内部,可以通过self::属性名/方法名来实现,
所以根据定义,我们也不能在对象中调用静态方法,因此静态方法和属性又被称为类变量和属性,因此不能再静态方法中使用伪变量$this;
php实例化
有几个书写错误,现在已经订正!
$arr = $this-GetRecord($SQL);//这不是调用父类中的方法吗?
我跟你说过,什么叫继承,就是说子类拥有父类的所有成员(在可继承的情况下),你可以通过作用域连接符使用父类成员,也可以通过$this关键字(静态的,私有的不行!!!!!)!!!!!!!
怎样来认识面向对象编程:
给你举个例子:
class student{
public $name;
public statics $age;
public function set_name($name){
$this-name=$name;//这是正确的
self::$name=$name;//正确
$name=$name;//这句错误
}
public function set_age($age){
$this-age=$age;//错误
self::$age=$age;//正确
}
}
//为什么会这样呢,也就是说,如果你要在类里面另外的成员,那么你就要通过
//$this关键字,或者作用域解析符,但是如果是静态成员,不能使用$this访问,来引用它,不能像普通的代码一样直接使用.
$this-name你可以这样理解,学生的名字,也就是说$this代表的就是类名
class boy_student extents students{
//这个类扩展自students,也就是说有students类的所有成员,
//当然你也可以添加students没有的成员
$aadress;
:
:
:
//如果你要应用父类的方法:可以这样:
parent::set_name(....)
//当然这里涉及到的东西足足可以写成一本书,不是说有的父类成员都能子类访问,有些甚至连继承都不行,这里涉及到可见性的问题!
}
*********************************
$this-xxx 实例化来调用的吗?
*******************************
这不是实例化,什么叫实例化,就是说,刚才我们定义的是一个抽象的东西,就像学生,他是一个类别;
$zhangshan = new students();
这才是实利化,明白吗!