在 codenigter 上使用时未找到类客户端 emojione

问题描述 投票:0回答:1

专家您好,我遇到了一个大问题,我正在使用 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”类

我不知道我应该做什么,因为在这个库中使用命名空间很重要,我很困惑我应该在这里做什么

php codeigniter emojione
1个回答
0
投票

将此行

$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);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.