我在尝试实现使用类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很难看,我更喜欢更好的解决方案。
答案 0 :(得分:1)
将$b = new B();
替换为$this->b = new B();
课程中的A
。
另请参见require_once
是一个声明,而不是一个函数。所以你可以不加引号地使用它。