webForumDet fria alternativet

Anropa klass via sträng

PHPur PHP

4 svar · 574 visningar · startad av learn

Medlem sedan jan. 20051 130 inlägg
Frågan#1

Jag skulle behöva använda en klass som är sparad i variabeln $klassnamn. Går det på något sätt??

Typ så här:

$klassnamn = "user";

$test = new $klassnamn("Användare");
$test -> enMetod();
.
.
.

Så enkelt är det ju tyvärr inte...

Hur kan jag göra??

Medlem sedan nov. 200373 inlägg
#2

Jo det där ska fungera.


<?php 

class Test{
	function __construct($name){
		$this->name = $name;
	}
	
	public function getName(){
		return $this->name;
	}
	
}
$clazz = "Test";
$t = new $clazz("Kalle");
echo $t->getName();

?>

Men finns bättre sätt att göra det på. Kallas reflection läs här:
http://se.php.net/manual/en/language.oop5.reflection.php#language.oop5.reflection.reflectionclass

Medlem sedan jan. 20051 130 inlägg
#3

Okay, nice! Varför är det bättre att använda reflection? Känns ju enklare att bara göra som du skrev ovanför...

Medlem sedan nov. 200373 inlägg
#4

Ska du bara skapa några klasser räcker det där. Behöver du mer flexibilitet kan du kika in reflection finns ju en hel del man kan göra där.

Medlem sedan jan. 20051 130 inlägg
#5

Om klassen jag vill "anropa" är abstract då...?

Så här brukar jag använda abstrakta klasser:

$result = min_klass::min_metod();

Följande fungerar ju inte:

$class_name = "min_klass";
$class_method = "min_metod";

$result = $class_name::$class_method();

Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM in...

Hur kan jag göra istället?

134 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)