在尝试实现使用类 B 的类 A 时,我遇到了一种意外行为。以下是文件的内容:
> cat test.php
<?php
error_reporting(E_ALL);
require_once("A.php");
//require_once("B.php"); //now it'd work, but it's not the point
$a = new A();
$b = $a->getB();
var_dump($b);
$b->sayHi();
> cat A.php
<?php
require_once('B.php');
class A
{
private $b;
public function getB()
{
return $this->b;
}
public function __construct()
{
$b = new B();
}
}
> cat B.php
<?php
class B
{
public function sayHi()
{
echo "Hi!";
}
}
> php test.php
NULL
PHP Fatal error: Call to a member function sayHi() on a non-object in /var/www/przypadek_testowy/test.php on line 10
是否有一些我应该知道的 PHP 怪癖?在这种情况下,在 test.php 中要求 B.php 很难看,我更喜欢更好的解决方案。