1. Go to this page and download the library: Download jeydotc/nev library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
jeydotc / nev example snippets
namespace MyNamespace\Views;
use Nev\View;
final class MyView extends View {
protected $name = '';
protected function render() {
<?= MyView::show(['name' => 'World'])
namespace MyNamespace\Views;
use Nev\View;
// Just create a regular PHP class and inherit from Nev\View
final class BasicView extends View {
// Optionally, use the Html trait to have a few helper methods
use \Nev\Html;
// Implement the abstract render method. (And yes, I stealed the syntax from react).
protected function render() {
namespace MyNamespace\Views;
use Nev\Html;
use Nev\View;
final class Page extends View {
use Html;
/**
* The page's title.
*
* @var string
*/
protected $title = '';
/**
* The page's body. It can be a string, callable or View instance.
*
* @var string|callable|View
*/
protected $body = '';
/**
* The list of script urls.
* @var string[]
*/
protected $scripts = [];
/**
* The list of css urls.
* @var array
*/
protected $cssFiles = [];
public function render() {
namespace MyNamespace\Views;
use Nev\View;
final class HelloWorldView extends View
{
protected $name;
protected function render() {
<?= Page::show([
'title' => 'My first page',
'body' => new HelloWorldView(['name' => 'World']),
]);
// Example as you'd see in slim framework and similar:
$app->get('/hello/{name}', function (Request $request, Response $response, array $args) {
$name = $args['name'];
$html = Page::show([ 'body' => new HelloWorldView(['name' => $name]), ]);
$response->getBody()->write($html);
return $response;
});
// Example as you'd see in slim framework and similar:
$app->get('/hello/{name}', function (Request $request, Response $response, array $args) {
$name = $args['name'];
$response->getBody()->write(new Page([
'body' => new HelloWorldView(['name' => $name]),
]));
return $response;
});
namespace Nev\Tests\SampleViews;
final class ModelDependentView extends View
{
/**
* Your IDE will surely have support for auto-completing this :D
*
* @var SomeViewModel
*/
protected $model;
protected function render() {
// This can be anything, from scalar values to arrays, objects, whatever.
$someViewModel = new SomeViewModel();
$renderedResult = ChildView::show([ 'model' => $someViewModel ]);
namespace MyNamespace\Views;
use Nev\View;
final class HelloWorldView extends View
{
/**
* Let's have a boolean property declared.
* @var bool
*/
protected $isAdmin = false;
protected $name;
protected function render() {
<!--We can send the value as a key as usual -->
<?= HelloWorldView::show(['isAdmin' => true, 'name' => 'World'])
namespace MyNamespace\Views;
use Nev\View;
use Nev\Html;
final class Div extends View
{
use Html;
protected $contents;
protected function render() {
// Get all the non-declared properties
$attrs = $this->extraProperties();
namespace Nev\Tests\SampleViews;
use Nev\Html;
use Nev\View;
final class AlertComponent extends View {
use Html;
protected function render() {
namespace Nev\Tests\SampleViews;
use Nev\Tests\SampleViews\AlertComponent;
final class HelloWorldView extends View
{
protected function render() {
namespace Nev\Tests\SampleViews;
use Nev\Html;
use Nev\View;
final class AlertComponent extends View
{
use Html;
protected $title;
protected $body;
protected function render()
{
namespace Nev\Tests\SampleViews;
use Nev\Tests\SampleViews\AlertComponent;
final class HelloWorldView extends View
{
protected function render() {
namespace Nev\Tests\SampleViews;
use Nev\Html;
use Nev\View;
final class AlertComponent extends View
{
use Html;
protected $title;
protected $body;
protected function render()
{
<?= AlertComponent::show([
// Sending a string:
'body' => 'This string will be echoed!'
])
namespace Nev\Tests\SampleViews;
use Nev\Html;
use Nev\View;
final class AlertComponent extends View {
use Html;
// Some content omitted...
protected function render() {
$classes = $this->classes("alert", "alert-info", "alert-dismissible", "fade", "show");
namespace Nev\Tests\SampleViews;
use Nev\Html;
use Nev\View;
final class AlertComponent extends View
{
use Html;
// Some content omitted...
protected $status = 'info';
protected function render() {
$classes = $this->classes("alert", "alert-{$this->status}", "alert-dismissible", "fade", "show");
namespace Nev\Tests\SampleViews;
use Nev\Html;
use Nev\View;
final class AlertComponent extends View
{
use Html;
// Some content omitted...
protected $status = 'info';
protected $dismissible = false;
protected function render() {
$classes = $this->classes(
"alert",
"alert-{$this->status}",
// Look, a conditional class! These classes will only display if
// $this->dismissible is true.
[ "alert-dismissible fade show" => $this->dismissible ]
);
namespace Nev\Tests\SampleViews;
use Nev\Html;
use Nev\View;
final class AlertComponent extends View
{
use Html;
// Some content omitted...
protected $status = 'info';
protected $dismissible = true;
/**
* @var array|string
*/
protected $className = [];
protected function render() {
$classes = $this->classes(
// Add the user provided classes.
$this->className,
"alert",
"alert-{$this->status}",
// Look, a conditional class! These classes will only display if
// $this->dismissible is true.
[ "alert-dismissible fade show" => $this->dismissible ]
);
<?= AlertComponent::show([
'dismissible' => true,
'status' => 'warning',
// You can still send a string.
'className' => 'my-custom-class',
'body' => 'This string will be echoed!'
])
<!-- Instead of using if, you can do this. -->
<?= self::drawIf($this->dismissible, function() {
namespace Nev\Tests\SampleViews;
use Nev\Html;
use Nev\View;
final class AlertComponent extends View
{
use Html;
// Some content omitted...
protected $status = 'info';
protected $dismissible = true;
/**
* @var array|string
*/
protected $className = [];
protected function render() {
// Get the extra attributes as an associative array
$attributes = $this->extraProperties();
$classes = $this->classes(
// Add the user provided classes.
$this->className,
"alert",
"alert-{$this->status}",
// Look, a conditional class! These classes will only display if
// $this->dismissible is true.
[ "alert-dismissible fade show" => $this->dismissible ]
);
AlertComponent::show([
// These will be rendered as attributes.
'id' => 'my-id',
'data-some-custom-attr' => "Some cool value",
'title' => "Some cool title for this element!",
// Since this attribute is declared in the class, extraProperties() won't return it.
'body' => 'This string will be echoed!',
]);
AlertComponent::show([
// These will be rendered as attributes.
'id' => 'my-id',
'data-some-custom-attr' => "Some cool value",
'title' => "Some cool title for this element!",
// The `style` method from `Html` trait will convert an associative array into a CSS string.
'style' => $this->style([ 'float' => 'right' ]),
// Since this attribute is declared in the class, extraProperties() won't return it.
'body' => 'This string will be echoed!',
]);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.