致命错误:在null上调用成员函数add()

时间:2018-01-13 06:04:19

标签: php oop ioc-container

我在项目中使用了League Container包作为DI。

class App extends Container {};

上面的代码工作正常。但是在我的app类中使用构造函数时问题会触发。 class App扩展Container

{  
   public __construct(){};
}

它显示像 - 致命错误:在null

上调用成员函数add()

我想知道它在oop prgramming中的原因

2 个答案:

答案 0 :(得分:1)

有几个原因不起作用:

  • public __construct(){};不是定义类构造的正确方法。

如果这只是一个错字,你会得到的实际错误是:

  

致命错误:在非对象上调用成员函数getDefinition()   在......

这是因为如果扩展具有构造的类,则必须调用父构造,否则它将丢弃它。 (which it does)。

因此,将它们放在一起是一个有效的例子:

<?php
// require 'vendor/autoload.php';

use League\Container\Container;

class App extends Container {
    public function __construct() {
       parent::__construct();
    }
}

class Foo {

}

$container = new App;

// add foo to the container
$container->add('foo', 'Foo');

// retrieve foo from the container
$service = $container->get('foo');

var_dump($service instanceof Foo); // true

答案 1 :(得分:0)

你缺少&#34;功能&#34;在&#34; public&#34;。

之后