在PHP中获取子类的名称

在PHP中获取子类的名称,php,oop,Php,Oop,假设我正在构建一个基类,它将由children类扩展。因此,基类称为base,子类可以是Child1,Child2,等等 在基类的构造函数中,如何获取Child1/Child2的值 这都是使用PHP编辑的:不知道获取类,忽略这个;) 您可以尝试\uuuu类\uuuuu,但它可能无法正常工作 解决方法是将类名指定为基类的属性 编辑:这不起作用(我使用了以下代码) 构造(){ 回声类; } } 我建议将$b的名称作为参数传递给a,例如: <?php class a { protecte

假设我正在构建一个基类,它将由children类扩展。因此,基类称为
base
,子类可以是
Child1
Child2
,等等

在基类的构造函数中,如何获取Child1/Child2的值


这都是使用PHP编辑的:不知道获取类,忽略这个;)

您可以尝试
\uuuu类\uuuuu
,但它可能无法正常工作

解决方法是将类名指定为基类的属性

编辑:这不起作用(我使用了以下代码) 构造(){ 回声类; } }

我建议将$b的名称作为参数传递给a,例如:

<?php
class a {
    protected $name;
    public function __construct() {
        echo $this->name;
    }
}

class b extends a {
    protected $name = __CLASS__;
}

$b = new b;

编辑:不知道
获取类
,忽略此项;)

您可以尝试
\uuuu类\uuuuu
,但它可能无法正常工作

解决方法是将类名指定为基类的属性

编辑:这不起作用(我使用了以下代码) 构造(){ 回声类; } }

我建议将$b的名称作为参数传递给a,例如:

<?php
class a {
    protected $name;
    public function __construct() {
        echo $this->name;
    }
}

class b extends a {
    protected $name = __CLASS__;
}

$b = new b;

只需调用($this)-但是请注意,基类方法在根据使用它的派生类来改变其行为方面没有实际意义。这就是派生类的全部要点:)

只需调用($this)-但是请注意,基类方法在根据使用它的派生类改变其行为方面没有实际意义。这就是派生类的全部要点:)

基类实际上永远不应该依赖于关于子类的信息---

回答你的问题:

class base {
    public function __construct() {
        print "Class:" . get_class($this) . "\n";
    }
}

class child extends base{
    public function __construct() {
        parent::__construct();
    }
}
$c = new child();

仅供将来参考——这可以在静态上下文中使用get_called_class()实现,但这仅在PHP>=5.3中可用,基类实际上不应该依赖于有关子类的信息---

回答你的问题:

class base {
    public function __construct() {
        print "Class:" . get_class($this) . "\n";
    }
}

class child extends base{
    public function __construct() {
        parent::__construct();
    }
}
$c = new child();

仅供将来参考——这可以在静态上下文中使用get_called_class()实现,但这仅适用于PHP>=5.3

我知道这有点旧,但我想我会提到它在PHP 5.2.17中对我有效“基类真的不应该依赖于关于子类的信息”——关于抽象类呢。在某些情况下,它可能会对我有用,因为你必须四处传送东西。我知道这有点旧,但我想我会提到它在PHP5.2.17中对我有效“基类真的不应该依赖于关于子类的信息”——关于抽象类呢。在某些情况下,它可能会对您有所帮助,因为您必须四处传送内容。如果您尝试实现一个非常简单的MVC框架,则使用子类的名称查找视图非常有用。如果您尝试实现一个非常简单的MVC框架,则使用子类的名称查找视图非常有用。