【问题标题】:How do I include the OOP "defiant randomdotorg" library in codeigniter?如何在 codeigniter 中包含 OOP“挑衅 randomdotorg”库?
【发布时间】:2018-03-24 04:09:30
【问题描述】:

The class is here (with instructions).

我已将其添加到application/libraries/randomorg

当我将$this->load->library('RandomOrg\Random'); 添加到控制器的构造函数中时,出现以下错误。

消息:找不到类“RandomOrg\Client”

在此之前我曾尝试添加各种文件(例如 Client.php),但这没有帮助。

发生了什么,我该如何解决?

【问题讨论】:

  • 命名空间库不能在 CI 中以这种方式加载。您需要 require 和 autoloader 并使用它来加载它。
  • 我对 OOP 了解不多。如何在 Codeigniter 中加载命名空间库?
  • 我已经用这段代码加载了库。 gist.github.com/JeyKeu/7533af3b9b5fd078910d 现在我该如何使用这个类?我不能使用$rand_org = RandomOrg\Random($this->config->item('randomorg_apikey'));,因为它无法识别RandomOrg/Random

标签: codeigniter oop


【解决方案1】:

我知道我已经回答了这个问题,但我只是找不到地方,不知道要搜索什么。所以这里是:Codeigniter 只能加载 single php 文件库(不包括完全不同的驱动程序)。要加载这种库(命名空间),您必须使用类似:https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-4-autoloader-examples.md(类示例)。

我们将其命名为Autoloader_psr4 并将其保存在库中(修改类声明以逐字匹配此名称(例如Autoloader_psr4)。删除类中的命名空间声明,使其看起来像:https://pastebin.com/NU8Rbp7Y

我们也将src/randomorg/ 中的所有文件移动到third_party 中名为RandomOrg 的文件夹中,例如application/third_party/RandomOrg。您的文件夹应如下所示:https://github.com/defiant/randomorg/tree/master/src/randomorg

用法:

$this->load->library('autoloader_psr4');
$this->autoloader_psr4->register();
$this->autoloader_psr4->addNamespace('RandomOrg', APPPATH . 'third_party/RandomOrg');
$random = new \RandomOrg\Client(); // or whatever...

【讨论】:

  • 我无法让它工作。在application/libraries/Autoloader_psr4.php 内,当我注释掉namespace Autoloader_psr4; 时,网页会加载,但是当我把它留在里面时,我会收到这个错误Non-existent class: Autoloader_psr4
  • 是的,我忘了提到要删除命名空间声明。这是我使用的版本:pastebin.com/NU8Rbp7Y ...如果您仍然遇到问题,请告诉我
  • 现在当我在我的 php 控制器中运行 $bw = $random_org->generateIntegers($this->config->item('randomorg_apikey'), 2, 0, 50); 时,我收到此错误 Message: require(C:\Users\User\Documents\UniServerZ\www\fresherplay\application\libraries/RandomOrg/RuntimeException.php): failed to open stream: No such file or directory
  • 您的 RandomOrg src 文件目前在哪里?
  • 应用程序/第三方
猜你喜欢
  • 2011-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-14
  • 1970-01-01
  • 1970-01-01
  • 2016-06-12
相关资源
最近更新 更多