声明语法
class 类名 {
}
class People {
public $name = 'nobody';
public $height = 30;
public function cry() {
echo '呱呱坠地';
}
}
有了类,就可以产生对象了.
new 类名(); 这个语句返回对象
返回的对象 赋给一个变量
$a = new People();
print_r($a);
这个a是什么 ,a对象;就是一个箱子,里面装了N多属性和属性值
a=name:nobody,height:30可以看出
a是一个复合数据,
我们要想访问
a的名字,即
a里面 name的值,
我们可以怎么访问呢?
答:肯定是得通过
a来访问了.
$a->属性名,就可访问该属性的值
echo $a->name,'<br />',$a->height,'<br />';
$b = array('name'=>'nobodyB','height'=>'40B');
echo $b['name'],'<br />',$b['height'];
echo '<br />';
// ==== 对象调用其方法====//
$a->cry();
声明类的时候的注意点
1、关于属性值,可以声明属性并赋值,也可以声明属性先不赋值
如果不赋值,则属性的初始值是NULL
2、关于PHP中的类,请注意,属性必须是一个”直接的值”
是8种类型任意的”值”.
不能是: 表达式 1+2 的值
不能是: 函数的返回值 time();
这点和java不一样.
class Human {
// public $age = time(); // 错误
// public $age = 1+2; // 错误
}
方法的注意点
php中的函数不能重复定义,这点和js不一样
// 这个t是我的自定义函数
function t() {
echo 't';
}
// 我再定义一个t函数
function t() {
echo 'tt';
}
// 运行就会发生下面的错误
// Fatal error: Cannot redeclare t() (previously declared in D:\www\1105\05.php:*) in **.php on line **
系统函数也不能定义方法
例如:time()是系统函数,我们在全局中就不能再定义time()方法
function time(){
echo "当前的时间";
}
// Fatal error: Cannot redeclare time() in **.php on line *
但是,类中的方法,可以理解”包在类范围内的函数”
和全局的函数不是一回事,因此,可以重名
class clock {
public function time() {
echo '现在的时间戳是aaaa';
}
public function t() {
return '内部的t';
}
public function time2() {
echo '现在的真正时间戳是',time(),'<br />'; // 注意此处调用的是系统的time()函数
echo $this->t(); // 注意,此处调用的是自身的t函数;
}
}
$c = new clock();
$c->time();
echo '<br />';
$c->time2();