【问题标题】:Fatal error: Call to a member function add() on null致命错误:在 null 上调用成员函数 add()
【发布时间】:2018-06-22 13:42:39
【问题描述】:

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

class App extends Container {};

上面的代码工作正常。但在我的应用程序类中使用构造函数时会触发问题。 类 App 扩展容器

{  
   public __construct(){};
}

它显示像 - 致命错误:在 null 上调用成员函数 add()

我想知道它在 oop prgramming 中是什么原因

【问题讨论】:

    标签: php oop ioc-container


    【解决方案1】:

    您在“public”之后缺少“function”。

    【讨论】:

      【解决方案2】:

      它不起作用有几个原因:

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

      如果这只是一个错字,那么您将得到的实际错误是:

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

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

      因此,将它们 2 点放在一起是一个工作示例:

      <?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
      

      【讨论】:

        猜你喜欢
        • 2020-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-06
        相关资源
        最近更新 更多