С вашими примерами все в порядке, но вы тут немного путаетесь:
public function one() {
echo "this is A-one";
$this->two();
$parent->two();
$parent->B->two();
}
что вы хотите, это я думаю:
class A
{
function one()
{
echo "A is running one\n";
$this->two();
}
function two()
{
echo "A is running two\n";
}
}
class B extends A
{
function two()
{
echo "B is running two\n";
}
}
Затем вы хотите сделать объект типа B и вызвать функцию «one»
$myB = new B();
$b->one();
Это выдаст
A is running one
B is running two
Это пример полиморфного поведения классов. Суперкласс будет знать, чтобы вызвать версию функции текущего экземпляра «two». Это стандартная функция PHP и большинства объектно-ориентированных языков.
Обратите внимание, что суперкласс никогда не знает о подклассах, единственная причина, по которой вы можете вызвать метод "two" и запустить версию B, заключается в том, что функция "two" была определена в родительском (A) классе.