Scoping: Eingrenzung von Lerninhalten
Die Eingrenzung von Lerninhalten wird durch Lernstoff geregelt.
Es können Vokabeln und Grammatik eingegrenzt werden.
Der genaue Geltungsbereich wird durch ein JSON-Objekt ($Lernstoff->scope) festgelegt.
Beispiel für ein LernstoffScope, das als assoziatives Array gecastet wurde:
$LernstoffScope = [
"reihen" => [
['id' => 49, 'name' => 'prima kompakt']
],
"buecher" => [
['id' => 2, 'name' => 'prima kompakt Zusatzbuch']
],
"lerneinheiten" => [
['id' => 3, 'name' => 'Zusatzlektion1'],
['id' => 4, 'name' => 'Zusatzlektion2'],
['id' => 5, 'name' => 'Zusatzlektion3'],
['id' => 9, 'name' => 'Zusatzlektion4']
]];Dieser LernstoffScope beschreibt, dass der Lernstoff beschränkt werden soll auf:
- Die Reihe prima kompakt mitsamt ihren Büchern und Lerneinheiten
- Das Buch ‘Prima kompakt Zusatzbuch’ mitsamt ihren Lerneinheiten
- Vier einzelne Zusatzlektionen
Wenn diesen Ressourcen nun Vokabeln und/oder Grammatik zugeordnet ist, kann diese eingrenzen.
Die Lerninhalte aus dem Lernstoff erhalten
Mit der Klassen LernstoffExtractor kann man die Lerninhalte erhalten/auslesen.
$Lernstoff = Lernstoff::find(4);
$Lerninhalte = (new LernstoffExtractor($Lernstoff))->extract()->get();Zurückgegeben wird eine Collection mit den Eigenschaften reihen, buecher und lerneinheiten, in denen die Lerninhalte ausgegeben sind.
Den GrammatikScope eines Lernstoffes erhalten
Mit einem Getter lässt sich der GrammatikScope eines Lernstoffes aufrufen.
$Lernstoff = Lernstoff::find(4)
$GrammatikScope = $Lernstoff->getGrammatikScope();Dieser Getter greift auf die Serviceklasse GrammatikScopeComposerzurück.