Download the PHP package halaei/presenter without Composer
On this page you can find all versions of the php package halaei/presenter. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package presenter
Presenter
This is an alternative implementation of laracasts/presenter with some added features. Some parts of this document is copy-past!
Easy View Presenters
So you have those scenarios where a bit of logic needs to be performed before some data (likely from your entity) is displayed from the view.
- Should that logic be hard-coded into the view? No.
- Should we instead store the logic in the model? No again!
Instead, leverage view presenters. That's what they're for! This package provides one such implementation.
PS: Using repository pattern, this package suggests that repository functions should return presenter instead of model and presenter collection instead of eloquent collection.
Installation
Usage
The first step is to store your presenters somewhere - anywhere. These will be simple objects that do nothing more than format data, as required.
Here's an example of a presenter.
Next, on your entity, pull in the Halaei\Presenter\PresentableTrait
trait, which will automatically instantiate your presenter class.
Here's an example - maybe a Laravel User
model.
That's it! You're done. Now, within your view, you can do:
Notice how the call to the present()
method (which will return your new or cached presenter object) also provides the benefit of making it perfectly clear where you must go, should you need to modify how a full name is displayed on the page.
Added Features
BasePresenter
If you want to return model from a repository function, but you don't want the client code do something like this:
then you can use PresentableTrait in your model, even without setting $presenter_class. There is a default presenter class for this purpose: BasePresenter.
$presenter_callables
If you want to give some flexibilities of eloquent model to the client of your repository, but not too much flexibility, you can define $presenter_callables while using PresentableTrait:
$presenter_friend
If you want your repository being able to access the model that is presented, and you don't want that access nowhere else (i.e. YourRepositoryClass being a C++ friend of your presenter) do the following:
PresenterCollection
4- Instead of returning an eloquent collection, which is basically an array of eloquent models, simply wrap that collection inside a Halaei\Presenter\PresenterCollection:
Final Notes
You can, but are not forced to, define these 3 special variables either static or non-static, depends of what you think is better.
Feel free to use whatever subset of features and options best fits your situation.