您当前的位置: 首页 > 学无止境 > 网站建设 网站首页网站建设
燕十八面向对象静态属性、静态方法与动态属性、动态方法之间的访问关系
发布时间:2015-08-30 14:21:57编辑:雪饮阅读()
本课学会了静态属性与静态方法的访问方法以及各种访问关系间的规则。
课程笔记:
<?php
header("Content-type:text/html;charset=utf-8;");
class Human{
static public $head=1;
public function changehead(){
Human::$head=9;
}
public function gethead(){
echo "<br/>";
echo Human::$head;
echo "<br/>";
}
}
//普通属性包含在对象内,用对象->属性名 来访问
//静态属性放在类内(公用),用类名::属性名 来访问
echo Human::$head;
$m=new Human();
$m->changehead();//改变整个类的头的个数
$a=new Human();
$b=new Human();
$a->gethead();
$b->gethead();
class Human2{
public $name="张三";
static public function cry(){
echo "<br/>55555<br/>";
}
public function eat(){
echo "<br/>吃饭<br/>";
}
public function intro(){
echo $this->name;
}
}
//普通方法,存放于类内的,只有1份
//静态方法,也是存放于类内的,只有1份
/*
区别在于:
普通方法需要对象去调动,需要绑定this而静态方法,
不属于哪个对象,因此不需要去绑定this
*/
echo "<br/>此时一个对象都没有<br/>";
Human2::cry();
/*
普通方法也可以这样调用(毕竟也是存在于类内):
human2::eat();
但在严格模式下:
Error_reporting(E_ALL|E_STRICT);
时便无法通过
*/
//下面这种调用方面没有报错,只是隐藏了错误,但从逻辑上来讲这不合理
human2::eat();
//再比如这种调用方法”Human2::intro();“这很明显就错误了,intro方法体里面包含this关键字,而当前是使用类来调用的,哪里还有什么对象可言,所以报错是显而易见的。
$dong=new Human2();
echo "动态对象访问静态方法<hr/>";
$dong->cry();
//总结:不管是动态与静态之间存在怎样的访问关系,只需要记住一条:静态或动态的属性或方法存在于类内还是对象内
?>
关键字词:燕十八,静态,个人博客