Getting the name of a child class in PHP

前端 未结 3 883
借酒劲吻你
借酒劲吻你 2020-12-22 02:12

Lets say I\'m building a base class which will be extended upon by the children class. So a base class is called Base and children can be Child1, <

相关标签:
3条回答
  • 2020-12-22 03:01

    A base class should really never depend on information about child classes---

    To answer your question:

    class base {
        public function __construct() {
            print "Class:" . get_class($this) . "\n";
        }
    }
    
    class child extends base{
        public function __construct() {
            parent::__construct();
        }
    }
    $c = new child();
    

    Just for future reference -- this can be acheived in a static context using get_called_class(), but this is only available in PHP >= 5.3

    0 讨论(0)
  • 2020-12-22 03:04

    Edit: Didn't know about get_class, disregard this one ;)

    You could try __CLASS__ but it might not work properly.

    A work-around could be to specify the class name as a property of the base class.

    Edit: This does not work (I used the following code) construct() { echo __CLASS; } }

    class b extends a {}
    
    $b = new b;
    

    I would suggest passing the name of $b as a parameter to A, for example:

    <?php
    class a {
        protected $name;
        public function __construct() {
            echo $this->name;
        }
    }
    
    class b extends a {
        protected $name = __CLASS__;
    }
    
    $b = new b;
    
    0 讨论(0)
  • 2020-12-22 03:07

    simply call get_class($this) - note however that a base class method has no real business in changing its behaviour depending on which derived class is using it. That's the whole point of deriving a class :)

    0 讨论(0)
提交回复
热议问题