声明语法
class 类名 { }
这个类,没有属性,也没有方法
<?php
// 人类
class People {
public $name = "nobody";
public $height = "25cm";
public $weight = "2.5kg";
public function cry()
{
echo "呱呱坠地";
}
}
/****
有了类,就可以产生对象了,
如何用类来产生对象?
new 类名();这个语句返回对象
返回的对象,赋值给一个变量
*****/
$baby = new People();
print_r($baby);
/*
这个baby是什么,baby对象,
就是一个箱子,里面装了N多属性和属性值
$baby = {name:nobody,height:30cm,weight:2.5kg}
可以看出$baby是一个复合数据
如果我们想访问$baby的名字,即$baby里面name的值,
我们可以怎么访问呢?
答:$baby->属性名,来访问。
*/
echo "<br/>";
echo $baby->name,'<br/>';
echo $baby->height,'<br/>';
echo $baby->weight,'<br/>';
$b = array('name' => 'nobodyB','height' => '182cm' );
echo $b['name'],'<br/>',$b['height'];
echo "<br/>";
//对象调用其方法
$baby->cry();
?>
声明类的注意点:
1.关于属性值,可以声明属性并赋值,
也可以声明属性先不赋值,如果不赋值,则属性的初始值为null
2.关于PHP中的来,请注意,属性必须是一个“直接的值”
是8种类型任意的“值”
不能是:表达式1+2的值
不能是:函数的返回值
这点和java不一样
<?php
class Human {
//public $age = time();//错误2
//public $age = 1+2;//错误2
public $age = 0;
}
$a = new Human();
echo "{$a->age} <br/>";
class People {
public $age;
}
$b = new People();
var_dump($b->age);
?>
Java示例
public class Test
{
public static void main (String[] args)
{
Human lisi = new Human();
System.out.println(lisi.age);
}
}
class Human
{
public int age = 2+3;
}
方法的注意点
php函数中不能重复定义,这点和js不一样
<?php
function t(){
echo "t";
}
//这个t是我自定义的函数
t();
//我在定义一个t函数
function t(){
echo "tt";
}
function time(){
echo "time";
}
time();//是一个内置函数,也不可重定义
?>
但是,类中的方法,可以理解包在类范围内的函数
和全局函数不是一回事,可以和全局函数重名,不会冲突,和平相处。
<?php
class Clock {
public function time()
{
echo "现在的时间戳是aaa" ;
}
public function time2()
{
echo "系统的time()函数:现在的时间戳是".time()."<br/>";
echo "自身的t函数:",$this->t();
}
public function t()
{
return '内部的t';
}
}
$c = new Clock();
echo $c->time(),"</br>";
echo $c->time2();
?>