属性 = 形态 = 变量
方法 = 行为 = 函数
类
类是 生成 对象的代码 模板,它只是一个模板,一个设计图纸
- 以
class
开头
属性
- 必须有可见性关键字(PHP 5及更高版本)
关键字 | 描述 |
---|---|
public | 公共的,所有实例都可以访问 |
protected | 受保护的,只有存在继承关系的可以访问,比如子类,父类 |
private | 私人的,只有对应的类内部能够调用 |
<?php
//在声明和赋值前必须加一个代表可见性的关键字
//这三个关键字是在PHP 5 中引入的,在PHP 4 下无法正常运行
//PHP 4 中使用 var 关键字声明,它的效果等同于public
//PHP5中保留了 var关键字,使用 var 会自动转换为 publc
class Text
{//属性
public $name = "a";
public $color;
//方法
function cat()
{
echo "OK";
}
function jump()
{
echo "jump";
}
}
?>
对象
-
new
关键字,将一个类(图纸)实例化可以得到无数个相同类型的不同对象(楼房)
$cat = new Text;
$bigcat = new Text;
- 通过
->
符号 访问对象中的属性
$cat = new Text;
$cat->name; //访问的属性名前没有 $ 符号
结果:a
//publc关键字定义的属性可以在对象外部进行赋值来替换类中的默认值
$cat->name = "cat";
结果:cat
- 方法:
<?php
// 在PHP 5 及以上版本的方法声明中,也引用了 可见性关键字,如果省略了可见性关键字,那么那么方法将被隐式声明为 public 类型
//在 PHP 4 中,所有方法都是 public 类型
class Text {
public function name() {
echo "cat";
}
function cat() {
echo "ico";
}
}
?>
- 通过
->
访问对象中的方法
$num = new Text;
$num->cat();
结果:ico
-
$this
伪变量:把类指向一个对象实例(python的self)
用图纸(类)建造了许多相同的房子(对象),但是怎么区分那间房子是谁的,那就出现了门牌号(
$this
),根据门牌号来对号入座
可以将 “当前实例” 替换 "
$this
"
$this->name
;
//理解为:
当前实例的 name 属性
<?php
class Dog {
public $name = "assas";
function text()
{
echo $this->name;
}
}
$abc = new Dog;
$abc->text();
?>
结果:assas
构造方法
创建对象时,构造方法会被自动调用
-
__construct()
:当 new 操作符创建对象时,__construct()
方法会被调用。
<?php
header("content-type:text/html;charset=utf-8");//设置编码
class Cat {
public $name;
public $color;
function __construct($name,$color)
{
$this->name = $name;
$this->color = $color;
}
function run() {
echo "我会跑<br>";
}
function jump() {
echo "我会跳<br>";
}
}
$num = new Cat("assas","red"); //在实例化时就可以赋值
echo $num->name . "<br>",$num->color;
结果:
assas
red