ozq / moodle-client
Moodle 客户端
dev-master
2021-07-16 05:58 UTC
Requires
- beberlei/assert: 2.7.x
- guzzlehttp/guzzle: 5.x
Requires (Dev)
- phpunit/phpunit: 5.x
This package is not auto-updated.
Last update: 2024-09-29 03:47:03 UTC
README
安装
推荐通过 Composer 安装库
$ composer require ozq/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 集成示例
- 为 Moodle 服务创建配置文件(config/moodle.php),内容如下
<?php return [ 'connection' => [ 'url' => 'http://url-to-moodle-service.com', 'token' => 'Y0uR!tOken', ], ];
- 创建服务提供者
$ php artisan make:provider MoodleServiceProvider
MoodleServiceProvider 注册方法的示例
public function register() { $this->app->singleton(ClientAdapterInterface::class, function () { $connection = new Connection(config('moodle.connection.url'), config('moodle.connection.token')); return new RestClient($connection); }); }
-
注册 MoodleServiceProvider
编辑您的 config/app.php,将\App\Providers\MoodleServiceProvider::class添加到 'providers' 数组中。 -
清除配置缓存
$ php artisan clear-compiled
$ php artisan config:clear
- 现在您可以在项目中使用 Moodle 服务
<?php namespace App\Http\Controllers; use Ozq\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]); } }