Skip to content

Instantly share code, notes, and snippets.

@JordanDalton
Last active June 5, 2016 23:55
Show Gist options
  • Save JordanDalton/332ae41831c17235106b to your computer and use it in GitHub Desktop.
Save JordanDalton/332ae41831c17235106b to your computer and use it in GitHub Desktop.
Here's a simple, real-world example of implementation and extension of models and presenters.
<?php namespace Acme\Core;
use Eloquent;
class Model extends Eloquent {}
<?php namespace Acme\Core;
use McCool\LaravelAutoPresenter\PresenterInterface;
class PresentableModel extends Model implements PresenterInterface {
/**
* Return the class name for our presenter. By default this will
* look for a presenter class based of the name of the model. You can override
* this in the model you create.
*
* Example: Acme\Reports\Report.php would use Acme\Reports\ReportPresenter.php
*
* @return string
*/
public function getPresenter()
{
// Return the presenter class name.
//
return static::class . 'Presenter';
}
}
<?php namespace Acme\Core;
use McCool\LaravelAutoPresenter\BasePresenter;
class Presenter extends BasePresenter {}
<?php namespace Acme\Reports;
use Acme\Core\PresentableModel;
class Report extends PresentableModel {
}
<?php namespace Acme\Reports;
use Acme\Core\Presenter;
class ReportPresenter extends Presenter {
/**
* Create new ReportPresenter instance.
* @param Report $reports
*/
public function __construct( Report $reports )
{
$this->resource = $reports;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment