专家您好,我遇到了一个大问题,我正在使用 emojione 库将短名称转换为图像,在代码 php 上使用时,表情符号工作正常,但我希望它与 codegniter 一起使用,我决定创建一个模型,以便我可以轻松访问 al为此,我在 EmojiModel.php 中创建了一个函数
defined('BASEPATH') OR exit('No direct script access allowed');
class EmojiModel extends CI_Model {
public function __construct() {
parent::__construct();
require APPPATH . 'third_party/emojione/LoadEmojione.php';
}
public function LoadImageEmoji($mojiText) {
$emoji = new \EmojiLoad();
return $emoji->LoadImageEmoji($mojiText);
}
}
在第三方库中,我添加了该库并创建了一个名为 LoadEmoji.php 的文件,并将该文件简单地包含在模型构造函数中
应用程序hird_party mojione\LoadEmojione.php
namespace Emojione;
require 'vendor/autoload.php';
class EmojiLoad {
public function LoadImageEmoji($textEmoji) {
$client = new Client(new Ruleset());
$client->imagePathPNG = 'https://cdnjs.cloudflare.com/ajax/libs/emojione/2.1.4/assets/png/';
return $client->toImage($textEmoji);
}
}
我遇到的错误是
遇到未捕获的异常 类型:错误
消息:未找到“EmojiLoad”类
我不知道我应该做什么,因为在这个库中使用命名空间很重要,我很困惑我应该在这里做什么
将此行
$emoji = new \EmojiLoad();
更改为 $emoji = new \Emojione\EmojiLoad();
。你的 EmojiLoad
类位于 Emojione
命名空间中,所以使用时需要在类名前添加命名空间。
或者,正如 shirshak007 建议的那样,如果您仅在
EmojiLoad
类中使用自定义 EmojiModel
库,您也可以直接在模型中使用 Emoijone
库。
在这种情况下,我还建议使用 CodeIgniter 的
composer_autoload
函数:
在
application/config/config.php
中,将 $config['composer_autoload']
设置为 TRUE
。
这期望
composer.json
文件位于 application
文件夹中,因此将其从 application/third_party/emojione
文件夹复制到那里,然后删除 application/third_party/emojione
文件夹。如果您随后从 composer install
文件夹中执行 application
,它将在 vendor
文件夹内创建一个新的 application
文件夹。
然后直接在模型中使用
Emojione
库:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
use Emojione\Client;
use Emojione\Ruleset;
class EmojiModel extends CI_Model {
public function __construct() {
parent::__construct();
}
public function LoadImageEmoji($mojiText) {
$client = new Client(new Ruleset());
$client->imagePathPNG = 'https://cdnjs.cloudflare.com/ajax/libs/emojione/2.1.4/assets/png/';
return $client->toImage($mojiText);
}
}