Portál AbcLinuxu, 27. července 2025 07:17


Dotaz: PHP - Jak vytvořit nový objekt včetně namespace ?

9.3.2017 19:12 Marky Mark
PHP - Jak vytvořit nový objekt včetně namespace ?
Přečteno: 272×
Odpovědět | Admin
Ahoj, poradí proím někdo lepší zápis jak zavolat class včetně namespace ?

Potřebuji zavolat tohle

$obj = new \ Controllers \ Home ( $par1 , $par2);

Název Home vrací $route -> controllername

Podařilo se mi vyprodukovat pouze taková nepřehledná sračka :(
$namespace = '\\Controllers\\';
ControllerClass = $namespace . $route -> controllername;
$obj = new $ControllerClass ( $par1 , $par2);
Díky moc.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

9.3.2017 21:46 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: PHP - Jak vytvořit nový objekt včetně namespace ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
$obj = new \Controllers\Home($par1, $par2);
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
bazil avatar 10.3.2017 01:16 bazil | skóre: 33 | blog: sluje | Miroslav
Rozbalit Rozbalit vše Re: PHP - Jak vytvořit nový objekt včetně namespace ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ještě to můžeš udělat pomocí ReflectionClass ale je to prašť jak uhoď.

namespace Controllers {
    class Home {
        public function hello () {
            echo "Hello World!";
        }
    }
}

namespace Core {
    class Runner {
        public function run($class) {
            $refl = new \ReflectionClass("Controllers\\".$class);
            $obj = $refl->newInstance();
            $obj->hello();
        }
    }
    
    $runner = new \Core\Runner();
    $runner->run('Home');
}
10.3.2017 08:56 Duff
Rozbalit Rozbalit vše Re: PHP - Jak vytvořit nový objekt včetně namespace ?
Odpovědět | | Sbalit | Link | Blokovat | Admin

use \Controllers\Home;

...

$obj = new Home( $par1 , $par2);

Jen use musí být hned po namespace nebo na začátku souboru.
10.3.2017 09:01 Duff
Rozbalit Rozbalit vše Re: PHP - Jak vytvořit nový objekt včetně namespace ?
Tak se dívám tak to asi není to na co se tazatel ptal. Jak ten příklad tak ta Reflection class asi výjde nastejno.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.