我试图使用碳API(https://github.com/briannesbitt/Carbon)为我的项目在Codeigniter。但是我用起来有困难。我首先用composer安装了它。但是当我在我的项目中使用以下代码时:
require 'vendor/autoload.php';
use CarbonCarbon;
printf("Now: %s", Carbon::now());
我得到以下错误:
syntax error, unexpected 'use' (T_USE) in ...
所以,我尝试手动安装它(复制和过去的碳类文件到我的项目)。然后,当我测试以下代码时,它工作正常:
$now = Carbon::now();
die($now);
但是当我尝试这样运行时:
$dtKtm = Carbon::createFromFormat('Y-m-d H:i:s', $data['banners'][0]['date_added']);
echo Carbon::now()->diffForHumans($dtKtm, false);
显示"Class 'Translator' not found"错误。
谁能帮我解决这个问题?
碳日期时间库使用CodeIgniter
CodeIgniter应用程序设置:首先让我给你介绍一下我的CodeIgniter项目在本地主机上的设置,如下所示:
/
|- gheapp
| |- application
| |- system
| L- vendor
| | |-bin
| | |-composer
| | |-nesbot/carbon
| | |-symfony
| |
| |----- composer.json
| L----- composer.lock
|
|- public_html
| |- .htaccess
| L- index.php
在index.php
中,我设置了以下到系统和应用程序的路径:
$system_path = '../gheapp/system';
$application_folder = '../gheapp/application';
注1:通过这样做,我们的应用程序源代码首先对公众隐藏。
注2:有关我的CodeIgniter设置的更多细节,请遵循我的以下StackOverflow答案
步骤1:如何获取碳包。
使用Composer,我将Cabron
包获取到我的CodeIgniter应用程序。我的composer.json
看起来如下(为了方便起见,它简化了)。
{
"require": {
"nesbot/carbon": "^1.22"
}
}
在你运行composer命令composer install
之后,它会在你的CI应用根目录下创建vendor
文件夹,并将Carbon包如上所示放在文件夹结构中。
步骤2:自动加载Composer下载的包:
在我的index.php
底部行之前
require_once BASEPATH.'core/CodeIgniter.php';
我写了以下两行:
$composer_vendor_path = '../gheapp/vendor';
require_once $composer_vendor_path.'/autoload.php';
所以现在我的CodeIgniter
应用程序知道如何以及在哪里加载编译器安装的包。
步骤3:如何在我的控制器中使用Carbon包:
在我的控制器(或模型)的任何方法函数中,我可以使用Carbon
如下:
$date = CarbonCarbon::today();
echo $date; // output: 2017-01-21 00:00:00
echo '<br/>'.$date->diffForHumans(); // output: 7 hours ago
有关使用Carbon的详细信息,请访问以下链接:Carbon from nesBot
我希望我的答案将来会对其他人有用/有帮助!: -)
我发现最简单的方法是:
-
安装碳:
-
composer require nesbot/carbon
-
-
打开application/config/config.php并更改:
-
$config['composer_autoload'] = FALSE;
或其他 -
$config['composer_autoload'] = FCPATH . '/vendor/autoload.php';
-
-
调用控制器中的任意碳函数:
-
$data['carbondate'] = CarbonCarbon::now();
-
您需要在引导程序中自动加载供应商文件夹(在index.php
文件中,require_once BASEPATH.'core/CodeIgniter.php';
底部行之前)。
require __DIR__ . '/vendor/autoload.php';
您需要在您的模型/控制器中导入库名称空间(无论您在哪里使用Carbon)。
use CarbonCarbon;