<?php
ini_set('display_errors', true);
error_reporting(E_ALL);
abstract class papa {
public function papa() {
var_dump(__CLASS__ . '-' . __FUNCTION__);
}
}
class son extends papa {
public function son() {
var_dump(__CLASS__ . '-' . __FUNCTION__);
parent::__construct();
}
}
abstract class mama {
public function __construct() {
var_dump(__CLASS__ . '-' . __FUNCTION__);
}
public function mama() {
var_dump(__CLASS__ . '-' . __FUNCTION__);
}
}
class daughter1 extends mama {
public function daughter() {
var_dump(__CLASS__ . '-' . __FUNCTION__);
parent::__construct();
}
}
class daughter2 extends mama {
public function daughter() {
var_dump(__CLASS__ . '-' . __FUNCTION__);
parent::mama();
}
}
var_dump('DAUGHTER-__construct');
$girl1 = new daughter1();
var_dump('DAUGHTER-mama');
$girl2 = new daughter2();
var_dump('SON');
$boy = new son();
Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; papa has a deprecated constructor in /in/uIkbe on line 6
Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; son has a deprecated constructor in /in/uIkbe on line 12
string(20) "DAUGHTER-__construct"
string(16) "mama-__construct"
string(13) "DAUGHTER-mama"
string(16) "mama-__construct"
string(3) "SON"
string(7) "son-son"
string(9) "papa-papa"