-1

在尝试实现使用类 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 很难看,我更喜欢更好的解决方案。

4

1 回答 1

1

替换$b = new B();为:$this->b = new B();在您的A班级中。

另请参阅这require_once是一个语句,而不是一个函数。所以你可以不带引号使用它。

于 2012-11-29T21:33:17.317 回答