[php] namespace
 
blackmamba 3. jan 2012 13:44:05 Pridružen od:
4. mar 2008
559 objav
392 25 11
#1

Struktura 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)
 
bostjan 3. jan 2012 14:12:33 Pridružen od:
31. jul 2008
643 objav
689 30 9
#2

uspešen poskus bi bil:


use test1;
všeč(1) ni všeč(0) spam(0)
 
blackmamba 3. jan 2012 14:19:34 Pridružen od:
4. mar 2008
559 objav
392 25 11
#3

U, 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?


všeč(0) ni všeč(0) spam(0)
 
bostjan 3. jan 2012 15:25:32 Pridružen od:
31. jul 2008
643 objav
689 30 9
#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)
 
blackmamba 3. jan 2012 15:35:31 Pridružen od:
4. mar 2008
559 objav
392 25 11
#5

GET in POST sta classa, s katerima handlam $GET in $POST requeste.


všeč(0) ni všeč(0) spam(0)
 
krho 3. jan 2012 16:39:34 Pridružen od:
7. jul 2011
58 objav
26 4 1
#6

da 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.
 
blackmamba 4. jan 2012 17:58:35 Pridružen od:
4. mar 2008
559 objav
392 25 11
#7

@krho: yesss dober nasvet, hvala.


všeč(0) ni všeč(0) spam(0)
 
SlimDeluxe 4. jan 2012 18:34:06 Pridružen od:
29. apr 2010
1223 objav
1022 144 9
#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.


všeč(0) ni všeč(0) spam(0)
Freelance Web Developer
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se