-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 に答える