psagnataf / moodle-client
Moodle客户端
1.1.1
2021-07-28 20:29 UTC
Requires
- beberlei/assert: ^3.3.1
- guzzlehttp/guzzle: ^6.5
Requires (Dev)
- phpunit/phpunit: 5.x
This package is auto-updated.
Last update: 2024-09-29 05:49:52 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集成示例
- 创建配置文件(config/moodle.php),其中包含以下内容用于Moodle服务
<?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,在'providers'数组中添加\App\Providers\MoodleServiceProvider::class
。 -
清除配置缓存
$ 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]); } }