<?php
class A {
var $name= 'A';
function main($objC){
var_dump($this);B::request('init', $objC);
}
}
class B {
var $name= 'B';
function request($func, $objC){
if (method_exists($objC, $func)){
var_dump($this);$objC->$func($this);
}
}
}
class C {
var $name= 'C';
function init($pobj){
var_dump($this);
}
}
$objA = new A;
$objB = new B;
$objC = new C;
$objA->main($objC);
Выход:
object(A)[1]
public 'name' => string 'A' (length=1)
object(A)[1]
public 'name' => string 'A' (length=1)
object(C)[3]
public 'name' => string 'C' (length=1)
Я думал $this
в Class B
всегда означает объект этого Class B
. Но, похоже, нет, может кто-нибудь объяснить: почему var_dump($this);
в class B
, выходы ниже результата не object(B)
?
object(A)[1]
public 'name' => string 'A' (length=1)
'B :: request' - это' статический' вызов, а не вызов какого-либо экземпляра 'B', поэтому var_dump ($ this) из' B' не имеет никакого отношения к 'B' $ $ –
@ MarkBaker oops удалил мой комментарий о 'static', подумал, почему был задан' $ this'. – meze