构造方法:
没有返回值, 在创建对象的时候自动调用构造方法
<?php
class person{
public $name;
public $age;
//这是构造方法
public function __construct(){
echo "我是构造方法";
}
}
$person1=new person();
?>
页面:我是构造方法
php4 中的构造方法,名字和类名一致;
php5中一个类中可以同时有 两种形式的构造方法
__construct()优先调用;
******两种都写是为了考虑兼容的问题,几乎不用php4的方法;
系统会给每个对象分配this代表当前对象;
对象的方法内调用成员属性 $this->name;
那个对象使用到$this 就是哪个对象地址
不能在类外部使用;
构造方法注意:
1.一旦自定义构造方法,默认的会被覆盖
2.一个类只能有一个构造方法
没有返回值;
析构方法
作用主要是用于,释放资源(如释放数据库的连接,或者销毁某个对象)
(自动调用,在内存中是以栈的形式,即先进后出,先创建的对象,后销毁)
调用条件:
当程序(进程结束)退出时候;
当一个对象成为垃圾对象的时候,该对象的析构方法就会立即被调用;
垃圾对象:php中,没有任何变量在引用它;
静态变量/全局变量
所有的对象都共享的一个变量;
全局:
用global 来声明;
<?php
global $global_game;
$global_game=0;
class child{
public $name;
function __construct($name){
$this->name=$name;
}
public function join_game(){
global $global_game;
$global_game+=1;
echo $this->name."加入游戏<br/>";
}
}
$child1=new child("李逵");
$child1->join_game();
$child2=new child("张飞");
$child2->join_game();
$child3=new child("唐僧");
$child3->join_game();
$child4=new child("极品");
$child4->join_game();
echo "有".$global_game;
?>
静态变量;
与全局变量在本质上没有区别,静态变量被封装在类中;访问要用类来访问;
在类的内部使用 self::$sum或者类名::$sum
在类的外部使用 类名::$sum
静态变量访问 并不需要类实例化;
语法:[访问修饰符]static $变量名;
<?php
class child{
public $name;
//这里定义并初始化了一个静态变量 $num
public static $num=0;
function __construct($name){
$this->name=$name;
}
public function join_game(){
//self::$num使用静态变量
self::$num+=1;
echo $this->name."加入游戏<br/>";
}
}
$child1=new child("李逵");
$child1->join_game();
$child2=new child("张飞");
$child2->join_game();
$child3=new child("唐僧");
$child3->join_game();
$child4=new child("极品");
$child4->join_game();
echo "有这些".child::$num;
?>
静态变量在内存中的存在形式:
静态方法:
也叫类方法,类方法不能访问非静态属性
在类内部:self::类方法名 或者 类名::类方法名
在类外部:类名::类方法名 或者 对象名->类方法名
需求:当我们操作静态变量的时候,我们可以考虑使用静态方法
语法:访问修饰符 static function 类名(){}
特点:1.静态方法去操作静态变量
2.静态方法不能操作非静态变量
注意:普通的成员方法,既可以操作非静态变量也可以操作静态变量;