Beste PHPvrienden.

Heelijk in het zonnetje ben ik weer eens wat gaan scripten.
Beetje autoloaden, namespaces gebruiken en consorten.

Ik heb:
- routes die werken, (onder de noemer een luie scripter niet zelf gemaakt: https://steampixel.de/en/simple-and-elegant-url-routing-with-php/)
- een script dat autoload (werkt ook, althans bij een deel daarvan)

Nu wil ik het volgende bereiken, in de map framework heb ik een class page.
Wat het moet doen is uit de map "app/pages" bijvoorbeeld home.php aanroepen en vervolgens wat gaan doen
Mijn eerste opzet:

<?php
// /app/framework/page.php 
namespace framework;

class page
{
	
	public static function render($page, $method, $options='')
	{
            // deze wil ik weg hebben
	    //include  $_SERVER['DOCUMENT_ROOT'].'/app/pages/'.$page.'.php';

	    $class = new $page;
	    if(trim($options != ''))
	    {
		$class->$method($options);
	     }
	     else 
	     {
		$class->$method();
	     }		
	}
}
?>

Tis nog plat maar dit werkt. class word geladen en segment kan ik ook bereiken. Zelfs $options print ie netjes op het scherm.
Nu dacht ik een stap verder te gaan en dit ook met mijn autoloader te doen. Maar dat werkt niet. De foutmelding word dan: class home not found.
Op mijn index.php

<?php
use framework\route;
use framework\page;
//use pages\pages; // moet dit hier?

include 'app/autoload.php';

// Add base route (startpage)
Route::add('/',function(){
    //echo 'Welcome :-)';
    page::render('home', 'index');

});

Route::run('/');
?>

/app/pages/home.php

<?php
namespace pages;

class home {
	
	public function index()
	{
		echo 'Van Home Index';
	}

	public function foo($id)
	{
		echo 'from Home class segment foo! and id = '.$id;
	}
}
?>


Iemand een sugestie?
EDIT
Probleem gevonden de vraag is/word ietsje anders :)

$class = new pages\home; werkt wel.
Echter hoe kan ik dit dynamisch maken?
EDIT 2
Soms dan krijg je zomaar inspiratie:

<?php
$class = "pages\\{$page}";
$class = new $class;
?>

Werkt, iemand een suggestie of dit netter kan?

Reageren