Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 6 odgovora
  • 2.417 pregleda

Najnovija ↓

Problem sa namespace-ovima 09.07.2010. u 14:13 · pre 198 meseci #1
Koristim PHP verziju 5.3.1 i dobijam sledecu gresku kada radim sa namespace-ovima.
Citat:

Warning: The use statement with non-compound name 'testClasses' has no effect in C:\wamp\www\demo02\index.php on line 2
This is namespace testing
Fatal error: Class 'testClasses\Test' not found in C:\wamp\www\demo02\index.php on line 6

Prema ovom bug report-u trebalo bi da radi, a ne verujem da ima neka sintaksna greska. Ima li neko ideju?
Test.php
Code:

namespace testClasses;

class Test {
    
    function __construct() {
        echo "Test class constructor from testClasses namespace!";
    }
    
    function getName($name)
    {
        return $name . " new user!";        
    }
}


index.php
Code:

        use testClasses;
    
    echo "<h1>This is namespace testing</h1> <br/>";
    
    $t1 = new testClasses\Test();
    $t1->getName("vlada");
Re: Problem sa namespace-ovima 09.07.2010. u 16:48 · pre 198 meseci #2
A gde ti je učitavanje fajla Test.php, u kome je klasa Test (npr. require_once('putanja/do/Test.php');), unutar index.php?
Re: Problem sa namespace-ovima 09.07.2010. u 17:25 · pre 198 meseci #3
Ali zar namespace-ovi nisu uvedeni bas iz tog razloga da se ne koristi taj require/require_once metod? Ili i pored namespace mora da se koristi i dalje require?
Re: Problem sa namespace-ovima 09.07.2010. u 18:16 · pre 198 meseci #5
Citat:
Valerij Zajcev: Ali zar namespace-ovi nisu uvedeni bas iz tog razloga da se ne koristi taj require/require_once metod? Ili i pored namespace mora da se koristi i dalje require?

Ti očigledno nisi shvatio čemu služe namespace-ovi...

Sa klauzulom use, ti samo uključuješ neki namespace (ili konkretnu klasu, pri čemu možeš da koristiš i alijas) u resolving proces, na način da će pri trigger-ovanju neke klase (npr. pri instanciranju) biti odlučivano iz kog namespace-a je ta klasa. Na tebi i dalje ostaje da prethodno ili dinamički (lazy loading) učitavaš fajlove u kome se nalaze tvoje klase.

Što se implementacije autoload-inga tiče, treba imati u vidu da se sada npr. onoj "magičnoj" __autoload() funkciji kao parametar prosleđuje string u obliku namespace\imeKlase.

btw Baci pogled na ovaj članak.
Re: Problem sa namespace-ovima 09.07.2010. u 22:36 · pre 198 meseci #6
Znam ja sta su namespace-ovi, nego mi je cudan nacin njihove upotrebe u PHP-u (da u svakoj skripti koja treba da ima import namespace-a treba pisati dodatni metod __autoload(), mislim da je ovo moglo nekako automatski da se odradi da developer nema potrebe za ovim al ajd :) ).
Code:

use \testClasses;
    
    echo "<h1>This is namespace testing</h1> <br/>";
    
    $t1 = new testClasses\Test();
    $t1->getName("vlada");
    
    function __autoload($className)
    {
        $filename = str_replace('\\', '/', $className) . '.php';
        require_once $filename;
    }

Hvala
Re: Problem sa namespace-ovima 09.07.2010. u 23:07 · pre 198 meseci #7
Pa ne moraš to da radiš u svakom fajlu, možeš da napraviš neki globalni, eto sad je popularan taj izraz "bootstrap" skript, :) pa da ga include-uješ u sve ostale, a on će, između ostalog, imati i taj __autoload() metod, tako da tvoj autoloading sistem možeš da imaš na jednom mestu u aplikaciji.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme