Deprecated

Switch to lenkrad

On Dec 9th 2018 version 3 of the neoanPHP framework was brought to life under the name "neoan3".

With Lenkrad, everything we learned from this project found a new, modern approach to the neverending quest for a high-performance, yet easy-to-use all-purpose framework.

Support has ended on Dec 20th 2025, these pages are no longer maintained.

Route Components

Server Side Rendering

With huge steps in the javascript world in recent years, server side rendering is still a huge topic for search engine optimization, content with little dynamical delivery as well as compatibility. In neoan3, a route component usually consists of two files: the controller and the view. Let's look at a few (here more or less nonsensical) possibilities of binding to the view.


        // function init enables the route YOURPAGE/post to be available
        ...
        class PostController extends Unicore{
            // see callback
            private $content;
            function init(): void
            {
                $this
                    // the unicore initializes through the method uni.
                    // while not necessary, you usually want to load a frame (here "demo")
                    ->uni('Demo')
                    // here we use the callback method to bind a value to the property $content
                    ->callback(function($context){
                        $context->content = 'some text'
                    })
                    // alternatively, we can directly pass to the renderer
                    ->addRenderParameter('headline', fn()=> 'Title')
                    // here we declare that the view post should be rendered in the main content container
                    // and pass content and subtitle to the view
                    // note how this is not necessary for "headline" as we directly passed that value to the renderer
                    ->hook('main', 'post', ['content'=>$this->content, 'subtitle' => 'direct input'])
                    // finally, the view gets compiled
                    ->output();
            }
        }
    

        <!-- post.view.html -->
        <h1>{{headline}}</h1>
        <h2>{{subtitle}}</h2>
        <p>{{content}}</p>
    

        <!-- RESULT in browser -->
        <h1>Title</h1>
        <h2>direct input</h2>
        <p>some text</p>