[php] namespace
 
blackmamba3. jan 2012 14:44:05Pridružen od:
4. mar 2008
307 objav
+163-101
#1Struktura datotek na disku:
- /lib/
- /lib/Testclass.php
- /index.php

Vsebina lib/Testclass.php:
<?php
namespace lib;
class Testclass{
public function say(){
say_func();
\test1::say();
}
}
?>
Vsebina index.php:
<?php
spl_autoload_register();
class test1{
static public function say(){
echo 'hello from static';
}
}
function say_func(){
echo 'hello from function';
}
$o = new lib\Testclass();
$o->say();
?>

Napisal sem en simple primer, ki deluje.

Moje vprašanje pa je ali obstaja način, da bi v Testclass.php poklical test1::say(); namesto \test1::say();
Tako kot deluje npr. klic globalne funkcije say_func() definirane v index.php

Moj neuspešen poskus je bil dodati v Testclass.php:namespace lib;
use \;
use \*;

Torej, želim klicati razrede definirane izven namespacov v razredu znotraj namespaca brez začetnega '\', tako kot to deluje za navadne funkcije.
všeč(0)ni všeč(0)spam(0)
 
bostjan3. jan 2012 15:12:33Pridružen od:
31. jul 2008
264 objav
+255-101
#2uspešen poskus bi bil:use test1;
všeč(+1)ni všeč(0)spam(0)
 
blackmamba3. jan 2012 15:19:34Pridružen od:
4. mar 2008
307 objav
+163-101
#3U, carsko!! Škoda, da ti lahko samo 1 plus pritisnem. ;)
Hvala

edit:
Sedaj imam pri vsakem controllerju
use GET,POST,....;
A bi se dalo to v kak autoloader vključit oz. nekako avtomatsko uporabit, da nebi bilo potrebno vsakič "use" vrstice napisat?
nazadnje urejal blackmamba 3. jan 2012 15:27:00
všeč(0)ni všeč(0)spam(0)
 
bostjan3. jan 2012 16:25:32Pridružen od:
31. jul 2008
264 objav
+255-101
#4Čak zakaj pa maš ti "use GET, POST, ..."? To se mi zdi nekam čudno ;)

Drugače pa se use upošteva glede na datoteko. Se pravi ne moreš dat use v nek header.php in tega povsod vključit. Potrebno je v vsaki datoteki uporabiti svoj use.
všeč(0)ni všeč(0)spam(0)
 
blackmamba3. jan 2012 16:35:31Pridružen od:
4. mar 2008
307 objav
+163-101
#5GET in POST sta classa, s katerima handlam $_GET in $_POST requeste.
všeč(0)ni všeč(0)spam(0)
 
krho3. jan 2012 17:39:34Pridružen od:
7. jul 2011
58 objav
+26-41
#6da ne boš tople vode izumljal... symfony2 HttpKernel oz HttpFoundation mogoče? Pa še njihov loader kot autoloader?
všeč(+1)ni všeč(0)spam(0)
www.pagein.si | www.nadzornaplošča.si - Kvalitetno, zanesljivo in cenovno ugodno gostovanje elektronskih poštnih predalov.
 
blackmamba4. jan 2012 18:58:35Pridružen od:
4. mar 2008
307 objav
+163-101
#7@krho: yesss dober nasvet, hvala.
všeč(0)ni všeč(0)spam(0)
 
SlimDeluxe4. jan 2012 19:34:06Pridružen od:
29. apr 2010
630 objav
+489-772
#8"use" rabiš samo, če želiš v nadaljevanju (v isti datoteki) uporabljati samo dejansko ime ali nek alias, brez da bi eksplicitno navedel namespace, kjer class prebiva.

Ko class postaviš enkrat v en namespace, ga boš moral vedno referencirati, razen takrat, ko si (oz. je scope) v istem.
nazadnje urejal SlimDeluxe 4. jan 2012 19:34:41
všeč(0)ni všeč(0)spam(0)
 
stran 1 od 1 |<<1>>|