Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Namespaces Objasnjenje

[es] :: PHP :: Namespaces Objasnjenje

[ Pregleda: 2074 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

alfa-pro
Pancevo

Član broj: 241818
Poruke: 476
*.dynamic.sbb.rs.



+7 Profil

icon Namespaces Objasnjenje09.04.2013. u 17:53 - pre 134 meseci
Imam par nejasnih stvari oko namespaces.
Kako sam ja to ukapirao da radi. Ja sam mislio da ako definisem namespace nekoj klasi necu morati da stavljam require_once ili da koristim spl_autoload.

Ja npr sam pokusao u index.php da uradim ovo:

Code:
$controller = new  Core\Controller\ModuleController();


E sada to prijavljuje gresku da klasa ModuleController nije pronadjena. A kada uradim include() iznad i importujem datu klasu onda radi.
Mislim nije mi jasna tematika, zasto bi ja onda koristio namespace kada opet moram da koristim include/require_once?

Za moju strukru je malo teze iskoristiti spl_autoload jer je meni sve u vise foldera odvojeno.

Citat:
|
-Root
|-- Library(dir)
|-----Core(dir)
|-------- Controllers(dir)
|----------------BaseController.php
|----------------FrontController.php
|----------------ModuleController.php
|---------------- helper.php
|----------------Exception(dir)
|---------------------BaseControllerException.php
|---------------------FrontControllerException.php
|---------------------ModuleControllerException.php
|----------- Database
|---------------- Doctrine
|-----------------doctrine.php
|--index.php
|--.htaccess


I tako dalje imam foldere koji sadrze klase, controllers, uri.

Nije mi jasno zasto moram require ako sam definisao namespace?
Evo kako sam definisao :

Code:

namespace Core\Controllers;

class ModuleController {
    protected $urlvalues;
    protected $action;
    public function __construct($action, $urlvalues) {
        $this->action = $action;
        $this->urlvalues = $urlvalues;
    }
    public function ExecuteAction() {
        return $this->{$this->action}();
    }
    protected function ReturnView($viewmodel, $fullview) {
        $viewloc = 'views/' . get_class($this) . '/' . $this->action . '.php';
        if ($fullview) {
            require('views/maintemplate.php');
        } else {
            require($viewloc);
        }
    }
}


I na kraju kao test u index.php moram sledece da bi bio uspesno instanciran :
Code:

require 'library/core/controller/ModuleController.php';
$obj = new  Core\Controller\ModuleController();


Ja sam to drugacije ukapriao onda ili ne znam zato vas i pitam. Mislio sam ako definisem namespace da nemam potreba za imortovanje...

Jel moze neko da mi pojasni uopste sustinu svega ovoga i kako to radi. Citajuci php manuel nisam nasao na primer kada su klase odvojene u vise direktorijuma i kako se onda koristi namespaces ...

Hvala...


Kada vidjamo uvek ista lica, na kraju ona postaju deo našeg života. A kada postanu
deo našeg života,
onda žele i da nam ga izmene. I ako ne bude po njihovom, nije im pravo. Jer, svaki
čovek ima tačnu predstavu kako bi trebalo da živimo svoj život. A nikad nemaju pojma
kako treba da prožive sopstveni život.
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4391
*.dynamic.isp.telekom.rs.

Sajt: https://avramovic.info


+46 Profil

icon Re: Namespaces Objasnjenje10.04.2013. u 23:27 - pre 134 meseci
Koliko ja znam o namespace-ovima (a ne znam puno) oni nemaju veze sa direktorijumima već se uglavnom koriste da možeš koristiti više klasa sa istim imenom, tako što ćeš ih staviti u druge namespace-ove
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

alfa-pro
Pancevo

Član broj: 241818
Poruke: 476
*.dynamic.sbb.rs.



+7 Profil

icon Re: Namespaces Objasnjenje11.04.2013. u 12:27 - pre 134 meseci
Ali vidis ti ovo, obrni okreni ja moram da definisem ime klase, nemogu 5 klasa da instanciram jednim imenom.

Code:
$obj = [namespaces]\[init]() ;

Kada vidjamo uvek ista lica, na kraju ona postaju deo našeg života. A kada postanu
deo našeg života,
onda žele i da nam ga izmene. I ako ne bude po njihovom, nije im pravo. Jer, svaki
čovek ima tačnu predstavu kako bi trebalo da živimo svoj život. A nikad nemaju pojma
kako treba da prožive sopstveni život.
 
Odgovor na temu

StaX_
Stanislav Žirović
Zrenjanin

Član broj: 150266
Poruke: 23
*.dynamic.isp.telekom.rs.

Sajt: www.alatshop.rs


+2 Profil

icon Re: Namespaces Objasnjenje11.04.2013. u 12:51 - pre 134 meseci
Ne možeš instancirati 5 različitih klasa jednim imenom, ali ih upotrebom namespace-a razlikuješ

Čak ih možeš i pozvati imenom koje ti odgovara koriscenjem as

use phpstar\fooBar as FB;
$obj_foobar = new FB();

ali svakako klasa mora biti dostupna bilo sa require ili nekim drugim nacinom pre nego sto ces je upotrebiti, ne moze aplikacija sama da zna gde se ta klasa nalazi ako nisi pokazao gde je ona na bilo koji nacin.
Beza alata nema ni zanata
www.alatshop.rs
 
Odgovor na temu

[es] :: PHP :: Namespaces Objasnjenje

[ Pregleda: 2074 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.