声明语法

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();

?>