PHP 5.4.4-9(debian测试) - require_once不会递归地提取文件

时间:2012-11-29 21:30:39

标签: php

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

1 个答案:

答案 0 :(得分:1)

$b = new B();替换为$this->b = new B();课程中的A

另请参见require_once是一个声明,而不是一个函数。所以你可以不加引号地使用它。