7.1 类的概念

类是对一个东西的描述,对象是根据这个描述实现出来的东西

类在PHP中表现的形式是 class ,对象的表现形式是 object

一个类中可以有自己的常量、变量(称之为属性)、函数(称之为方法)。

// 我是一个 '人' 的类
class People{

    // 属性列表
    public $name;
    public $age;

    // 构造方法
    public function __construct(string $n, int $a){
        $this->name = $n;
        $this->age = $a;
    }
    
    // 方法列表
    public function say(){
        echo "<p>我叫:{$this->name}</p>";
        echo "<p>今年:{$this->age} 岁</p>";
    }
    public function eat(){
        echo "<p>我需要吃饭喝水</p>";
    }
    public function sleep(){
        echo "<p>我需要睡觉</p>";
    }
}

// 我是一个 '人' 的对象,这步操作也叫实例化
$people = new People('刘国际', 26);

// 说句话看看
$people->say();

在类的普通方法(非静态)中使用 $this 变量可以获取到当前类的实例对象,但记得不要尝试去修改它。

通过 new 关键字可以将一个 class 类实例化,得到一个对象。

当把一个对象赋值给另一个变量时,默认便是引用赋值, 可以通过 clone 关键进行传值赋值,也就是克隆一个新的对象。

// 克隆一个对象
$temp = clone $people;

上例中展示了一般情况下创建实例对象的方法,但还可以通过一些别的方式来创建对象。

// 创建一个对象
$className = "People";
$temp1 = new $className("刘德华", 55);
var_dump($temp1);

// 创建一个对象
$temp2 = new $temp1("张学友", 50);
var_dump($temp2);

再看一些创建对象的方法

// 定义类
class Foo{
    public $name = "iGuoji";
    public static function byStatic(){
        return new static;
    }
}

// 实例化
$foo = new Foo();

// 通过方法实例化
$fooStatic = Foo::byStatic();

// 两者都是 Foo类 的实例
($foo instanceof Foo) and ($fooStatic instanceof Foo);
($foo instanceof $fooStatic) and ($fooStatic instanceof $foo);

// 两者相等,但不绝对相等
($foo == $fooStatic) and ($foo !== $fooStatic);




// 定义类
class Bar extends Foo{
    public function bySelf(){
        return new self;
    }
    // 创建父类的对象
    public function byParent(){
        return new parent;
    }
}

// 实例化
$bar = new Bar();

// 通过方法实例化
$barStatic = Bar::byStatic();
$barSelf = Bar::bySelf();
$barParent = Bar::byParent();

// 前三者都是 Bar类 的实例
($bar instanceof Bar) and ($barStatic instanceof Bar) and 
    ($barSelf instanceof Bar);

// 四者都是 Foo类 的实例
($bar instanceof Foo) and ($barStatic instanceof Foo) and 
    ($barSelf instanceof Foo) and ($barParent instanceof Foo);

// 除了第四个外,其他都相等
$bar != $barParent;

// 第四个和之前的 Foo类 实例相等
$barParent == $foo;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,760评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,891评论 18 139
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,767评论 0 9
  • 重点掌握 3 类对象和方法 对象就是一个物体 类的独特存在就是一个实例,对实例进行操作叫做方法。方法可以应用于类或...
    Coder大雄阅读 1,281评论 0 2
  • 秋月笼烟春不晓,拍遍栏干人己老。汉家锦瑟五十弦,弦弦掩抑离别难。窗外依稀见人影,卷帘漠漠花枝冷。 空中又见北飞雁,...
    倚剑白云天阅读 272评论 0 0