我在项目中使用了League Container包作为DI。
class App extends Container {};
上面的代码工作正常。但是在我的app类中使用构造函数时问题会触发。 class App扩展Container
{
public __construct(){};
}
它显示像 - 致命错误:在null
上调用成员函数add()我想知道它在oop prgramming中的原因
答案 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;。
之后