An IMS QTI (Question & Test Interoperability) Software Development Kit for PHP 5.3 and higher supporting a wide range of features described by the IMS QTI specification family.
This implementation of QTI is under constant enhancement. The API of the master branch might change at any time. See release 2.0.0 for the last stable version.
- Targets QTI 2.0, 2.1 and 2.2
- Complete QTI Information Model
- Complete QTI Rule Engine Support
- Custom Operator Hooks through PSR-0
- Wilbert Kraan's / Steve Lay's Goldilocks Rendering
- CSS Parser for direct QTI Information Model mapping at rendering time
- Item Sessions (with lightning fast binary persistence)
- Test Sessions (with lightning fast binary persistence)
- Nice and Clean API for QTI Document manipulation/traversal
- PreConditions and Branching
- Response/Outcome Processing
- Unit Testing Driven from PHP 5.3 to 5.6
- Clone the repository.
- Make sure you know how Composer works and it is installed on your system.
- php composer.phar install
- You are ready!
Run Unit Tests by invoking the following shell command:
cp phpunit.xml.dist phpunit.xml
./vendor/bin/phpunit test
We are always looking for people to feed the project with:
- Bug reports
- Unit tests
- New features
The QTI Software Development Kit enables you to transform XML serialized QTI files
into their (X)HTML5 Goldilocks equivalent. The following shell command renders the path/to/qti.xml
QTI file into an HTML5
document using the (X)HTML5 Golidlocks rendering flavour with indentation formatting. The rendering output (stdout)
is redirected to the /home/jerome/qti.html
file.
./vendor/bin/qtisdk render -df --source path/to/qti.xml --flavour goldilocks > /home/jerome/qti.html
For additionnal help and information, just call the help screen to know about the features provided by the rendering binaries!
./vendor/bin/qtisdk render --help
As for other major PHP frameworks such as Doctrine, Zend Framework 2 or PHPUnit, QTI-SDK makes use of annotations. In such a context, the two following Zend Opcache configuration directives must be configured as below:
- opcache.save_comments: true
- opcache.load_comments: true