PHPackages                             smtech/reflexive-canvas-lti - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. smtech/reflexive-canvas-lti

AbandonedArchivedLibrary[API Development](/categories/api)

smtech/reflexive-canvas-lti
===========================

LTI tool provider class that includes the "reflexive" reach back into Canvas via the API

v1.0.8(8y ago)51252[3 issues](https://github.com/smtech/reflexive-canvas-lti/issues)LGPL-3.0PHPPHP &gt;=5.6

Since Jul 21Pushed 6y ago5 watchersCompare

[ Source](https://github.com/smtech/reflexive-canvas-lti)[ Packagist](https://packagist.org/packages/smtech/reflexive-canvas-lti)[ RSS](/packages/smtech-reflexive-canvas-lti/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (8)Versions (10)Used By (0)

ReflexiveCanvasLTI
==================

[](#reflexivecanvaslti)

[![Latest Version](https://camo.githubusercontent.com/673d4e0208cbe83cdc0ac610e5811e126d99617c36f8272b61373d58fb915b14/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f736d746563682f7265666c65786976652d63616e7661732d6c74692e737667)](https://packagist.org/packages/smtech/reflexive-canvas-lti)[![Scrutinizer Code Quality](https://camo.githubusercontent.com/142e49b6371e60ed865dc89f0c9f711febf8923a006f28ab53a6ef9499af279e/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f736d746563682f7265666c65786976652d63616e7661732d6c74692f6261646765732f7175616c6974792d73636f72652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/smtech/reflexive-canvas-lti/?branch=master)

Abandoned
---------

[](#abandoned)

This project has not been actively maintained since the spring of 2017, when [Seth Battis](https://github.com/battis) changed roles and was no longer working in a Canvas (or other LTI-capable) environment. Other interested developers are welcome to take up the torch, if interested.

Meanwhile, I observe that [Steven Vickers](https://github.com/spvickers) has released an updated version of his PHP [LTI Tool Provider](https://github.com/OSCELOT/LTI-PHP) that can serve as a base for further LTI development using PHP.

About
-----

[](#about)

LTI tool provider class that includes the "reflexive" reach back into Canvas via the API.

[Full documentation in repository.](https://smtech.github.io/reflexive-canvas-lti/namespaces/smtech.ReflexiveCanvasLTI.html)

This is one of two packages that are meant to facilitate and accelerate LTI development in PHP, allowing for built-in "reflexive" access to the Canvas APIs from the LTI Tool Provider.

1. This package, `smtech/reflexive-canvas-lti` is the "plain vanilla" version. That is: it's pure object-oriented goodness with no GUI to add any idiosyncratic flavoring to the process. That makes it a touch more limited, but also (one hopes) more reusable in the grand scheme of things.
2. The other package, [`smtech/stmarks-reflexive-canvas-lti`](https://github.com/smtech/stmarks-reflexive-canvas-lti) provides a bunch of handy GUI add-ons, including Smarty templating (via [`smtech/stmarkssmarty`](https://github.com/smtech/stmarks-bootstrapsmarty), the St. Mark's-styled extension of my generic [`battis/bootstrapsmarty`](https://github.com/battis/bootstrapsmarty) package that provides easy access to Bootstrap within Smarty templates). Additionally, this package, as it provides a GUI inherently, also provides some handy interactive control panels:
    - [Toolbox::interactiveGetAccessToken()](https://smtech.github.io/stmarks-reflexive-canvas-lti/classes/smtech.StMarksReflexiveCanvasLTI.Toolbox.html#method_interactiveGetAccessToken) is pretty much what it sounds like: it handles acquiring an API access token from Canvas interactively (providing a well-configured `config.xml`, of course).
    - [Toolbox::interactiveConsumersControlPanel()](https://smtech.github.io/stmarks-reflexive-canvas-lti/classes/smtech.StMarksReflexiveCanvasLTI.Toolbox.html#method_interactiveConsumersControlPanel) provides an interactive control panel for managing LTI tool consumer keys and secrets.

How to choose?
--------------

[](#how-to-choose)

It comes down to whether you like building web pages the way I like building web pages (striving for real Model-View-Controller separation, to make my code easier to read/understand), or if you have another paradigm that you prefer. If you like my way, I would recommend extending `smtech/stmarks-reflexive-canvas-lti` to including branding appropriate for your own institution and using that. If not, or if you are trying to avoid GUI-entanglements, this "plain vanilla" package fits the bill.

Sample code
-----------

[](#sample-code)

In the `examples` directory you will find two example tool providers:

1. [`tool-provider`](https://github.com/smtech/reflexive-canvas-lti/tree/master/examples/tool-provider) shows an example of an LTI Tool Provider constructed with the "plain vanilla" package (this one).
2. [`stmarks-tool-provider`](https://github.com/smtech/reflexive-canvas-lti/tree/master/examples/stmarks-tool-provider) shows the same example, tweaked to use `smtech/stmarks-reflexive-canvas-lti` instead -- which I think is cleaner, easier and simpler. But I'm biased.

Composer Fiddly-bits
--------------------

[](#composer-fiddly-bits)

*Nota bene:* Because Stephen Vickers hasn't yet published his `LTI_Tool_Provider` via [Composer](http://getcomposer.org), I *think* the best way to incorporate his code is to replicate the following within your own `composer.json` file. (That way, when `smtech/reflexive-canvas-lti` depends on `spvsoftwareproducts/LTI_Tool_Provider`, Composer will know what we're all taking about.)

Also: to download the `spvsoftwareproducts/LTI_Tool_Provider` package from its central repository, you *have* to allow non-HTTPS downloads, which is a bit of a security hole. Not the end of the world, but not Best Practices, either.

```
"config": {
    "secure-http": false
},
"repositories": [
    {
        "type": "package",
        "package": {
            "name": "spvsoftwareproducts/LTI_Tool_Provider",
            "version": "2.5.01",
            "dist": {
                "url": "http://projects.oscelot.org/gf/download/frsrelease/956/6025/LTI_Tool_Provider-2.5.01.zip",
                "type": "zip"
            },
            "license": "LGPL-3.0",
            "authors": [
                {
                    "name": "Stephen Vickers"
                }
            ],
            "homepage": "http://spvsoftwareproducts.com/php/lti_tool_provider/",
            "autoload": {
                "classmap": [""]
            }
        }
    }
]
```

And also:

```
"require": {
    "smtech/reflexive-canvas-lti": "~1.0"
}
```

###  Health Score

28

—

LowBetter than 54% of packages

Maintenance8

Infrequent updates — may be unmaintained

Popularity16

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity64

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~40 days

Recently: every ~73 days

Total

9

Last Release

3260d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/d0554a28104c65004c6de4d335ada25cf2763c8a9691dc5611314486d461fa4c?d=identicon)[battis](/maintainers/battis)

---

Top Contributors

[![battis](https://avatars.githubusercontent.com/u/419619?v=4)](https://github.com/battis "battis (6 commits)")

### Embed Badge

![Health badge](/badges/smtech-reflexive-canvas-lti/health.svg)

```
[![Health](https://phpackages.com/badges/smtech-reflexive-canvas-lti/health.svg)](https://phpackages.com/packages/smtech-reflexive-canvas-lti)
```

###  Alternatives

[netflie/whatsapp-cloud-api

The first PHP SDK to send and receive messages using a cloud-hosted version of the WhatsApp Business Platform

640431.7k4](/packages/netflie-whatsapp-cloud-api)[php-twinfield/twinfield

Library for using the Twinfield Soap Service.

33769.2k1](/packages/php-twinfield-twinfield)[paddlehq/paddle-php-sdk

Paddle's PHP SDK for Paddle Billing.

53301.7k](/packages/paddlehq-paddle-php-sdk)[oxid-esales/graphql-base

OXID eSales GraphQL base module

24101.0k10](/packages/oxid-esales-graphql-base)[simivar/genius-php

Genius PHP is a open source library that allows you to access Genius API from your PHP application. Supports every resource.

13171.7k](/packages/simivar-genius-php)[lmc/matej-client

API Client for Matej recommendation engine

1159.5k](/packages/lmc-matej-client)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
