atipics/moodle-client

Moodle客户端

dev-master 2020-04-07 05:55 UTC

This package is auto-updated.

Last update: 2024-09-07 16:18:55 UTC


README

安装

推荐通过Composer安装库

$ composer require atipics/moodle-client:dev-master

使用方法

创建与您的Moodle服务的连接实例

$connection = new Connection('http://url-to-moodle-service.com', 'Y0uR!tOken');

创建可用的Moodle客户端实例之一,例如REST客户端

$client = new RestClient($connection);

现在,您可以使用Moodle服务。有一些内置的、可直接使用的Moodle实体。所有逻辑和API都封装在Moodle服务和实体中。让我们创建课程服务的实例。

创建实例

$courseService = new Course($client);

获取所有课程

$courses = $courseService->getAll();

删除ID为1、2、3的课程

$courses = $courseService->delete([1, 2, 3]);

如果您需要发送一些特定的结构化数据,例如在创建新课程时,最好使用特殊的DTO对象

$courseDto = new Course();
$courseDto->name = 'Test Course';
$courseDto->fullName = 'Test Course fullname';
...
$courseService->create($courseDto);

如果没有内置的所需服务和实体,您可以创建它们。服务必须扩展Service抽象类,实体(作为DTO)必须扩展Entity抽象类。

此外,您还可以在没有服务层的情况下使用Moodle客户端

$courses = $client->sendRequest('core_course_get_courses');

Laravel集成示例

  1. 为Moodle服务创建配置文件(config/moodle.php),内容如下
<?php

return [
    'connection' => [
        'url'   => 'http://url-to-moodle-service.com',
        'token' => 'Y0uR!tOken',
    ],
];
  1. 创建服务提供者
$ php artisan make:provider MoodleServiceProvider

MoodleServiceProvider注册方法示例

use Atipics\MoodleClient\Clients\ClientAdapterInterface;
use Atipics\MoodleClient\Clients\Adapters\RestClient;
use Atipics\MoodleClient\Connection;

public function register()
{
    $this->app->singleton(ClientAdapterInterface::class, function () {
        $connection = new Connection(config('moodle.connection.url'), config('moodle.connection.token'));
        return new RestClient($connection);
    });
}
  1. 注册MoodleServiceProvider:编辑您的config/app.php,向'providers'数组中添加\App\Providers\MoodleServiceProvider::class

  2. 清除配置缓存

$ php artisan clear-compiled
$ php artisan config:clear
  1. 现在您可以在项目中使用Moodle服务
<?php

namespace App\Http\Controllers;

use Atipics\MoodleClient\Services\Course;

/**
 * Class CourseController
 * @package App\Http\Controllers
 */
class CourseController extends Controller
{
    /**
     * @var Course
     */
    protected $courseService;

    /**
     * CourseController constructor.
     * @param Course $courseService
     */
    public function __construct(Course $courseService)
    {
        $this->courseService = $courseService;
    }

    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $courses = $this->courseService->getAll();
        return view('courses.index', ['courses' => $courses]);
    }
}