【问题标题】:codeigniter 3 inline method callcodeigniter 3 内联方法调用
【发布时间】:2018-08-23 11:33:12
【问题描述】:

在 CI 2 中,我们可以用一行代码初始化一个类并调用其方法(或属性)之一。

例如,$val = $this->load->library('some_library')->some_method($data);

但是,CI 3 似乎已删除此功能。

我正在将 CI 2 应用程序迁移到 CI 3,而原始应用程序使用了数百个这样的“内联”引用。有谁知道是否有一个干净有效的解决方法,这样我就可以继续我的更新,而无需将这些引用分成 2 行?

【问题讨论】:

  • 能否请您出示一下,这是在哪里记录的?我刚刚检查了codeigniter.com/userguide2/general/creating_libraries.html,看来你需要先加载你的库,然后调用它的函数......
  • 我不确定它是否被正式记录。我在 CI 发布的关于新版本功能的公告中看到了这一点。也许它从未被正式记录,但它是集成到 v 2 中的一个功能,而 v 3 中不再存在。
  • 查看 system/core/loader.php 并检查函数 library()、_ci_load_library() 和 Ci 相关的代码。 2.0 和 3.0 也许你会在那里找到你要找的东西......
  • 我会的。实际上,我只是花了一天时间更新应用程序,将所有内联引用转换为标准方法,但我仍然对它被删除(或从未记录过?)的原因感兴趣;有时这是一个方便的功能。

标签: php codeigniter class methods continuous-integration


【解决方案1】:

先加载库,然后用method()调用:

$this->load->library('some_library');
$this->some_library->some_method();  

对象应为小写

【讨论】:

  • 我相信你误解了这个问题。我知道执行此任务的标准方法,但在 CI 2 中,我们可以在一行代码中加载一个类和它的方法(例如,$this->load->library('some_library')->some_method( ) ) 但 CI 3 似乎不允许这样做。所以,如果是这种情况,我需要先加载类 ($this->load->library('some_library')) 然后调用它的方法 ($this->some_library->some_method())例子。我正在询问是否有一种解决方法可以加载一个类并在一行中调用它的方法,就像我们在 CI 2 中那样。
  • 我找不到任何这样的方式,您可以在单行中加载和调用该方法。但是你可以使用替代方案,你可以实现不像内联所做的那样,而是不同的东西。如果您喜欢设置自己的类名,可以将其值传递给第三个参数: $this->load->library('Yourlib', NULL, 'my_lib'); // Yourlib 类现在可以使用: $this->my_lib->method();
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多